Esempio n. 1
0
 def setUp(self):
     super(CreateGroupCmdTest, self).setUp()
     self.sms_fields = ['#create', 'group_name', 'group_code', '*****@*****.**']
     self.from_number = '0123456789'
     self.cmd = CreateGroupCmd(self.sms_fields[0])
Esempio n. 2
0
class CreateGroupCmdTest(NoMMTestCase):
    def setUp(self):
        super(CreateGroupCmdTest, self).setUp()
        self.sms_fields = ['#create', 'group_name', 'group_code', '*****@*****.**']
        self.from_number = '0123456789'
        self.cmd = CreateGroupCmd(self.sms_fields[0])

    def test_valid_create_group_cmd(self):
        response = str(self.cmd.execute(self.sms_fields, self.from_number))
        self.assertTrue(response.find('Success') != -1, 'Success response not returned')

        groups = Group.objects.all()
        self.assertTrue(len(groups) == 1, 'Incorrect number of groups after single #create cmd')

        g = groups[0]
        self.assertEqual(g.name, self.sms_fields[1], 'Group has incorrect name')
        self.assertEqual(g.code, self.sms_fields[2], 'Group has incorrect code')

        # test that we've successfully created a valid email object associated
        # with the group
        email = self.sms_fields[3]
        email_objs = g.emails.all()
        self.assertTrue(len(email_objs) == 1, 'Group has incorrect number of emails')
        self.assertTrue(email_objs[0].email == email, 'Group has incorrect email')

        # test that the user associated with the email is also associated with
        # that valid email object
        user = CustomUser.objects.get(email=email)
        email_set = user.email_set.all()
        self.assertTrue(len(email_set) == 1, 'User has incorrect number of emails')
        self.assertTrue(email_set[0].id == email_objs[0].id, "User's email is incorrect")

        # this test is probably redundant, but nonetheless: test that the
        # user has the proper number of memberships
        memberships = user.get_memberships()
        self.assertTrue(len(memberships) == 1, 'User has incorrect number of memberships')
        self.assertTrue(memberships[0].name == g.name, "User's group is incorrect")

    def test_group_name_not_allowed(self):
        self.sms_fields[1] = 'word1 word2'
        response = str(self.cmd.execute(self.sms_fields, self.from_number))

        self.assertTrue((response.find('name') != -1) and (response.find('may only contain') != -1),
                'Group-name-not-allowed response not returned')

        groups = Group.objects.all()
        self.assertTrue(len(groups) == 0, "There exists a group with a name that's not allowed")

    def test_group_code_not_allowed(self):
        self.sms_fields[2] = 'word1 word2'
        response = str(self.cmd.execute(self.sms_fields, self.from_number))

        self.assertTrue((response.find('code') != -1) and (response.find('may only contain') != -1),
                'Group-code-not-allowed response not returned')

        groups = Group.objects.all()
        self.assertTrue(len(groups) == 0, "There exists a group with a code that's not allowed")

    def test_group_name_too_long(self):
        self.sms_fields[1] = ''.join(['*' for i in range(Group.MAX_LEN + 1)])
        response = str(self.cmd.execute(self.sms_fields, self.from_number))

        self.assertTrue((response.find('name') != -1) and (response.find('too long') != -1),
                'Group-name-too-long response not returned')

        groups = Group.objects.all()
        self.assertTrue(len(groups) == 0, "There exists a group with a name that's too long")

    def test_group_code_too_long(self):
        self.sms_fields[2] = ''.join(['*' for i in range(Group.MAX_LEN + 1)])
        response = str(self.cmd.execute(self.sms_fields, self.from_number))

        self.assertTrue((response.find('code') != -1) and (response.find('too long') != -1),
                'Group-code-too-long response not returned')

        groups = Group.objects.all()
        self.assertTrue(len(groups) == 0, "There exists a group with a code that's too long")

    def test_group_already_exists(self):
        self.test_valid_create_group_cmd()  # create a valid user in db
        self.sms_fields[3] = 'a' + self.sms_fields[3]   # new user needs a distinct email
        response = str(self.cmd.execute(self.sms_fields, self.from_number[::-1]))
        self.assertTrue((response.find('group') != -1) and (response.find('already exists') != -1),
                'Group-already-exists response not returned')

        groups = Group.objects.all()
        self.assertTrue(len(groups) == 1, 'There exists two groups with the same name')