Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
zendesk_sync / tests / test_emails.py
Size: Mime:
#!/usr/bin/env python2
import unittest

from zendesk_sync import ZendeskSync
from zendesk_sync.zendesk_sync import emails_to_identities
from clean_users_test import CleanUsersTest


class TestEmails(CleanUsersTest):
    """
    Check if all the different possible email changes work
    """

    def test_email_add(self):
        self.zs.create_user(
            self.user_uuid,
            self.primary_email,
            self.emails,
            self.fullname,
            self.username)
        user = self.zs.get_user(self.user_uuid)
        self.zs.update_user_emails(
            user['id'],
            self.primary_email,
            self.emails_both)
        user = self.zs.get_user(self.user_uuid)
        idents = self.zs.list_identities(self.user_uuid)
        self.assertEqual(len(idents), 2)

    def test_email_case(self):
        self.zs.create_user(
            self.user_uuid,
            self.primary_email,
            self.emails,
            self.fullname,
            self.username)
        user = self.zs.get_user(self.user_uuid)
        emails = [e.upper() for e in self.emails]
        primary_email = self.primary_email.upper()
        self.zs.update_user_emails(
            user['id'],
            primary_email,
            emails)
        user = self.zs.get_user(self.user_uuid)
        idents = self.zs.list_identities(self.user_uuid)
        self.assertEqual(len(idents), 1)

    def test_email_change(self):
        self.zs.create_user(
            self.user_uuid,
            self.primary_email,
            self.emails,
            self.fullname,
            self.username)

        # make sure that before the update the primary email is correct
        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['email'], self.primary_email.lower())
        idents = self.zs.list_identities(self.user_uuid)
        self.assertEqual(len(idents), 1)
        self.assertEqual(idents[0]['value'], self.primary_email.lower())

        self.zs.update_user_emails(
            user['id'],
            self.primary_email2,
            self.emails2)
        # make sure that after the update the primary email is changed
        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['email'], self.primary_email2.lower())
        idents = self.zs.list_identities(self.user_uuid)
        self.assertEqual(len(idents), 1)
        self.assertEqual(idents[0]['value'], self.primary_email2.lower())

    def test_email_change_primary(self):
        self.zs.create_user(
            self.user_uuid,
            self.primary_email,
            self.emails_both,
            self.fullname,
            self.username)
        user = self.zs.get_user(self.user_uuid)
        self.zs.update_user_emails(
            user['id'],
            self.primary_email2,
            self.emails_both)

        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['email'], self.primary_email2.lower())
        self.zs.list_identities(self.user_uuid)
        self.assertEqual(len(self.zs.list_identities(self.user_uuid)), 2)

    def test_email_remove(self):
        self.zs.create_user(
            self.user_uuid,
            self.primary_email,
            self.emails_both,
            self.fullname,
            self.username)

        # make sure that before the update there are two identities and the
        # primary email is correct
        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['email'], self.primary_email.lower())
        idents = self.zs.list_identities(self.user_uuid)
        self.assertEqual(len(idents), 2)

        self.zs.update_user_emails(user['id'], self.primary_email, self.emails)
        # make sure that after the update there is only one email left
        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['email'], self.primary_email.lower())
        self.zs.list_identities(self.user_uuid)
        self.assertEqual(len(self.zs.list_identities(self.user_uuid)), 1)
        self.assertEqual(idents[0]['value'], self.primary_email.lower())

    def test_email_verify(self):
        # one off creation of a special user without a verified email
        identities = emails_to_identities(self.emails)
        identities[0]['verified'] = False
        self.zs.client.user_create({
            'user': {
                'external_id': self.user_uuid,
                'name': self.username,
                'email': self.primary_email,
                'details': self.fullname,
                'identities': identities
            }
        })

        # initially the email is not verified
        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['email'], self.emails[0].lower())
        self.zs.list_identities(self.user_uuid)
        self.assertEqual(
            self.zs.list_identities(
                self.user_uuid)[0]['verified'],
            False)

        self.zs.update_user_emails(
            user['id'],
            self.primary_email,
            self.emails)
        # then the email becomes verified
        user = self.zs.get_user(self.user_uuid)
        self.assertEqual(user['email'], self.emails[0].lower())
        self.zs.list_identities(self.user_uuid)
        self.assertEqual(
            self.zs.list_identities(
                self.user_uuid)[0]['verified'],
            True)

if __name__ == '__main__':
    unittest.main()