Example #1
0
 def test_set_role(self):
     self.setup_users()
     import_users_and_groups(self.domain.name,
                             [self._get_spec(role=self.role.name)], [],
                             self.uploading_user, mock.MagicMock(), True)
     self.assertEqual(
         self.user.get_role(self.domain_name).name, self.role.name)
Example #2
0
 def test_upper_case_email(self):
     self.setup_users()
     email = '*****@*****.**'
     import_users_and_groups(self.domain.name,
                             [self._get_spec(email=email)], [],
                             self.uploading_user, mock.MagicMock(), True)
     self.assertEqual(self.user.email, email.lower())
Example #3
0
 def test_numeric_user_name(self):
     """
     Test that bulk upload doesn't choke if the user's name is a number
     """
     import_users_and_groups(self.domain.name, [self._get_spec(name=1234)],
                             [], self.uploading_user, mock.MagicMock())
     self.assertEqual(self.user.full_name, "1234")
Example #4
0
    def test_update_pending_user_role(self, mock_send_activation_email):
        import_users_and_groups(self.domain.name, [
            self._get_spec(web_user='******',
                           is_account_confirmed='False',
                           send_confirmation_email='True',
                           role=self.role.name)
        ], [], self.uploading_user, mock.MagicMock())
        self.assertEqual(mock_send_activation_email.call_count, 1)
        self.assertEqual(
            self.user.get_role(self.domain_name).name, self.role.name)
        self.assertEqual(
            Invitation.by_email('*****@*****.**')[0].role.split(":")[1],
            self.role._id)

        added_user_id = self.user._id
        import_users_and_groups(self.domain.name, [
            self._get_spec(web_user='******',
                           user_id=added_user_id,
                           is_account_confirmed='False',
                           send_confirmation_email='True',
                           role=self.other_role.name)
        ], [], self.uploading_user, mock.MagicMock())
        self.assertEqual(mock_send_activation_email.call_count,
                         1)  # invite only sent once
        self.assertEqual(len(Invitation.by_email('*****@*****.**')),
                         1)  # only one invite associated with user
        self.assertEqual(
            self.user.get_role(self.domain.name).name, self.other_role.name)
        self.assertEqual(
            Invitation.by_email('*****@*****.**')[0].role,
            self.other_role.get_qualified_id())
Example #5
0
 def test_update_user_numeric_username(self):
     import_users_and_groups(self.domain.name,
                             [self._get_spec(username=123)], [],
                             self.uploading_user, mock.MagicMock())
     self.assertIsNotNone(
         CommCareUser.get_by_username('{}@{}.commcarehq.org'.format(
             '123', self.domain.name)))
Example #6
0
    def test_update_user_no_username(self):
        import_users_and_groups(self.domain.name, [self._get_spec()], [], None)
        self.assertIsNotNone(self.user)

        import_users_and_groups(
            self.domain.name,
            [self._get_spec(user_id=self.user._id, username='')], [], None)
Example #7
0
 def test_upload_with_unconfirmed_account_send_email(
         self, mock_account_confirm_email):
     import_users_and_groups(self.domain.name, [
         self._get_spec(
             username='******',
             delete_keys=['is_active'],
             is_account_confirmed='False',
             send_confirmation_email='True',
         ),
         self._get_spec(
             username='******',
             delete_keys=['is_active'],
             is_account_confirmed='False',
             send_confirmation_email='False',
         ),
         self._get_spec(
             username='******',
             delete_keys=['is_active'],
             is_account_confirmed='False',
         ),
     ], [], self.uploading_user, mock.MagicMock())
     self.assertEqual(mock_account_confirm_email.call_count, 1)
     self.assertEqual(
         'with_email',
         mock_account_confirm_email.call_args[0][0].raw_username)
 def test_blank_is_active(self):
     import_users_and_groups(
         self.domain.name,
         [self._get_spec(is_active='')],
         [],
     )
     self.assertTrue(self.user.is_active)
Example #9
0
    def test_metadata_ignore_system_fields(self):
        self.setup_locations()
        import_users_and_groups(self.domain.name, [
            self._get_spec(data={'key': 'F#'},
                           location_code=self.loc1.site_code)
        ], [], self.uploading_user, mock.MagicMock())
        self.assertEqual(
            self.user.metadata, {
                'commcare_project': 'mydomain',
                'commcare_location_id': self.loc1.location_id,
                'commcare_location_ids': self.loc1.location_id,
                'commcare_primary_case_sharing_id': self.loc1.location_id,
                'key': 'F#',
            })

        import_users_and_groups(self.domain.name, [
            self._get_spec(user_id=self.user.user_id,
                           data={'key': 'G#'},
                           location_code=self.loc1.site_code)
        ], [], self.uploading_user, mock.MagicMock())
        self.assertEqual(
            self.user.metadata, {
                'commcare_project': 'mydomain',
                'key': 'G#',
                'commcare_location_id': self.loc1.location_id,
                'commcare_location_ids': self.loc1.location_id,
                'commcare_primary_case_sharing_id': self.loc1.location_id,
            })
Example #10
0
 def test_upper_case_email(self):
     """
     Ensure that bulk upload throws a proper error when the email has caps in it
     """
     email = '*****@*****.**'
     import_users_and_groups(self.domain.name,
                             [self._get_spec(email=email)], [], None)
     self.assertEqual(self.user.email, email.lower())
Example #11
0
 def test_invite_location_add(self):
     self.setup_users()
     self.setup_locations()
     import_users_and_groups(self.domain.name, [
         self._get_invited_spec(
             location_code=[a.site_code for a in [self.loc1]])
     ], [], self.uploading_user, mock.MagicMock(), True)
     self.assertEqual(self.user_invite.supply_point, self.loc1._id)
Example #12
0
 def test_empty_user_name(self):
     """
     This test confirms that a name of None doesn't set the users name to
     "None" or anything like that.
     """
     import_users_and_groups(self.domain.name, [self._get_spec(name=None)],
                             [], self.uploading_user, mock.MagicMock())
     self.assertEqual(self.user.full_name, "")
Example #13
0
 def test_remove_uploading_user(self):
     self.setup_users()
     import_users_and_groups(self.domain.name, [
         self._get_spec(username=self.uploading_user.username,
                        remove='True')
     ], [], self.uploading_user, mock.MagicMock(), True)
     web_user = WebUser.get_by_username(self.uploading_user.username)
     self.assertTrue(web_user.is_member_of(self.domain.name))
    def test_upload_with_missing_user_id(self):
        import_users_and_groups(
            self.domain.name,
            [self._get_spec(user_id='missing')],
            [],
        )

        self.assertIsNone(self.user)
Example #15
0
 def test_upload_invite_web_user(self, mock_send_activation_email):
     import_users_and_groups(self.domain.name, [
         self._get_spec(web_user='******',
                        is_account_confirmed='False',
                        send_confirmation_email='True',
                        role=self.role.name)
     ], [], self.uploading_user, mock.MagicMock())
     self.assertEqual(mock_send_activation_email.call_count, 1)
 def test_set_role(self):
     import_users_and_groups(
         self.domain.name,
         [self._get_spec(role=self.role.name)],
         [],
     )
     self.assertEqual(
         self.user.get_role(self.domain_name).name, self.role.name)
Example #17
0
 def test_web_user_user_name_change(self):
     self.setup_users()
     import_users_and_groups(self.domain.name,
                             [self._get_spec(first_name='', last_name='')],
                             [], self.uploading_user, mock.MagicMock(),
                             True)
     # should not be changed
     self.assertNotEqual(self.user.first_name, "")
     self.assertNotEqual(self.user.last_name, "")
Example #18
0
    def test_update_user_no_username(self):
        import_users_and_groups(self.domain.name, [self._get_spec()], [],
                                self.uploading_user, mock.MagicMock())
        self.assertIsNotNone(self.user)

        import_users_and_groups(
            self.domain.name,
            [self._get_spec(user_id=self.user._id, username='')], [],
            self.uploading_user, mock.MagicMock())
Example #19
0
 def test_blank_is_active(self):
     import_users_and_groups(
         self.domain.name,
         [self._get_spec(is_active='')],
         [],
         self.uploading_user,
         mock.MagicMock()
     )
     self.assertTrue(self.user.is_active)
Example #20
0
 def test_upload_with_unconfirmed_account(self):
     import_users_and_groups(self.domain.name, [
         self._get_spec(delete_keys=['is_active'],
                        is_account_confirmed='False')
     ], [], self.uploading_user, mock.MagicMock())
     user = self.user
     self.assertIsNotNone(user)
     self.assertEqual(False, user.is_active)
     self.assertEqual(False, user.is_account_confirmed)
Example #21
0
 def test_upload_invite_web_user(self, mock_invitation_class):
     mock_invite = mock_invitation_class.return_value
     import_users_and_groups(self.domain.name, [
         self._get_spec(web_user='******',
                        is_account_confirmed='False',
                        send_confirmation_email='True',
                        role=self.role.name)
     ], [], mock.MagicMock())
     self.assertTrue(mock_invite.send_activation_email.called)
Example #22
0
 def test_remove_web_user(self):
     username = '******'
     web_user = WebUser.create(self.domain.name, username, 'password', None,
                               None)
     import_users_and_groups(
         self.domain.name,
         [self._get_spec(web_user='******', remove_web_user='******')], [],
         self.uploading_user, mock.MagicMock())
     web_user = WebUser.get_by_username(username)
     self.assertFalse(web_user.is_member_of(self.domain.name))
Example #23
0
 def test_remove_invited_user(self):
     Invitation.objects.all().delete()
     self.setup_users()
     import_users_and_groups(self.domain.name, [self._get_invited_spec()],
                             [], self.uploading_user, mock.MagicMock(),
                             True)
     self.assertIsNotNone(self.user_invite)
     import_users_and_groups(self.domain.name,
                             [self._get_invited_spec(remove='True')], [],
                             self.uploading_user, mock.MagicMock(), True)
     self.assertIsNone(self.user_invite)
Example #24
0
 def test_multi_domain(self):
     dm = DomainPermissionsMirror(source=self.domain.name,
                                  mirror=self.other_domain.name)
     dm.save()
     import_users_and_groups(
         self.domain.name,
         [self._get_spec(username=123, domain=self.other_domain.name)], [],
         self.uploading_user, mock.MagicMock())
     self.assertIsNotNone(
         CommCareUser.get_by_username('{}@{}.commcarehq.org'.format(
             '123', self.other_domain.name)))
Example #25
0
 def test_upload_edit_web_user(self):
     username = '******'
     web_user = WebUser.create(self.domain.name, username, 'password', None,
                               None)
     import_users_and_groups(
         self.domain.name,
         [self._get_spec(web_user='******', role=self.role.name)], [],
         self.uploading_user, mock.MagicMock())
     web_user = WebUser.get_by_username(username)
     self.assertEqual(
         web_user.get_role(self.domain.name).name, self.role.name)
Example #26
0
    def test_location_not_list(self):
        self.setup_locations()

        # location_code can also just be string instead of array for single location assignmentss
        import_users_and_groups(
            self.domain.name,
            [self._get_spec(location_code=self.loc1.site_code)], [], None)
        self.assertEqual(self.user.location_id, self.loc1._id)
        self.assertEqual(self.user.location_id,
                         self.user.user_data.get('commcare_location_id'))
        # multiple locations
        self.assertListEqual([self.loc1._id], self.user.assigned_location_ids)
Example #27
0
 def test_upload_add_web_user(self, mock_invitation_class):
     username = '******'
     web_user = WebUser.create(self.other_domain.name, username, 'password',
                               None, None)
     mock_invite = mock_invitation_class.return_value
     import_users_and_groups(self.domain.name, [
         self._get_spec(web_user='******',
                        is_account_confirmed='True',
                        role=self.role.name)
     ], [], self.uploading_user, mock.MagicMock())
     web_user = WebUser.get_by_username(username)
     self.assertFalse(mock_invite.send_activation_email.called)
     self.assertTrue(web_user.is_member_of(self.domain.name))
Example #28
0
 def test_web_user_location_add(self):
     self.setup_users()
     self.setup_locations()
     import_users_and_groups(self.domain.name, [
         self._get_spec(
             location_code=[a.site_code for a in [self.loc1, self.loc2]])
     ], [], self.uploading_user, mock.MagicMock(), True)
     membership = self.user.get_domain_membership(self.domain_name)
     # test that first location should be primary location
     self.assertEqual(membership.location_id, self.loc1._id)
     # test for multiple locations
     self.assertListEqual([loc._id for loc in [self.loc1, self.loc2]],
                          membership.assigned_location_ids)
Example #29
0
 def test_metadata_profile_blank(self):
     import_users_and_groups(
         self.domain.name,
         [self._get_spec(data={
             PROFILE_SLUG: self.profile.id,
             'mode': ''
         })], [], self.uploading_user, mock.MagicMock())
     self.assertEqual(
         self.user.metadata, {
             'commcare_project': 'mydomain',
             'mode': 'minor',
             PROFILE_SLUG: self.profile.id,
         })
Example #30
0
 def test_tracking_updates(self):
     self.assertEqual(LogEntry.objects.count(), 0)
     import_users_and_groups(self.domain.name,
                             [self._get_spec(role=self.role.name)], [],
                             self.uploading_user, mock.MagicMock())
     log_entry = LogEntry.objects.order_by('action_time').first()
     self.assertEqual(log_entry.change_message,
                      f"created_via: {USER_CHANGE_VIA_BULK_IMPORTER}")
     log_entry = LogEntry.objects.order_by('action_time').last()
     self.assertEqual(
         log_entry.change_message,
         f"role: {self.role.name}[{self.role.get_id}], updated_via: {USER_CHANGE_VIA_BULK_IMPORTER}"
     )