def test_update_email_logs_change(self):
     self.user.email = '*****@*****.**'
     update(self.user,
            'email',
            '*****@*****.**',
            user_change_logger=self.user_change_logger)
     self.assertIn('email', self.user_change_logger.fields_changed.keys())
 def test_update_user_data_raises_exception_if_profile_conflict(self):
     profile_id = self._setup_profile()
     with self.assertRaises(UpdateConflictException):
         update(self.user, 'user_data', {
             PROFILE_SLUG: profile_id,
             'conflicting_field': 'no'
         })
 def test_update_password_logs_change(self):
     update(self.user,
            'password',
            'a7d8fhjkdf8d',
            user_change_logger=self.user_change_logger)
     self.assertIn(PASSWORD_FIELD,
                   self.user_change_logger.change_messages.keys())
 def test_update_phone_numbers_logs_changes(self):
     self.user.phone_numbers = ['50253311398']
     update(self.user,
            'phone_numbers', ['50253311399'],
            user_change_logger=self.user_change_logger)
     self.assertIn('phone_numbers',
                   self.user_change_logger.change_messages.keys())
 def test_update_language_does_not_log_no_change(self):
     self.user.language = 'un'
     update(self.user,
            'language',
            'un',
            user_change_logger=self.user_change_logger)
     self.assertNotIn('language',
                      self.user_change_logger.fields_changed.keys())
 def test_update_default_phone_number_does_not_log_no_change(self):
     self.user.set_default_phone_number('50253311399')
     update(self.user,
            'default_phone_number',
            '50253311399',
            user_change_logger=self.user_change_logger)
     self.assertNotIn('phone_numbers',
                      self.user_change_logger.change_messages.keys())
    def test_update_password_with_strong_passwords_succeeds(self):
        self.domain_obj.strong_mobile_passwords = True
        self.domain_obj.save()

        try:
            update(self.user, 'password', 'a7d8fhjkdf8d')
        except ValidationError:
            self.fail('Unexpected ValidationError raised.')
    def test_update_password_without_strong_passwords_succeeds(self):
        self.domain_obj.strong_mobile_passwords = False
        self.domain_obj.save()

        try:
            update(self.user, 'password', 'abc123')
        except ValidationError:
            self.fail('Unexpected ValidationError raised.')
 def test_update_last_name_does_not_log_no_change(self):
     self.user.last_name = 'Unchanged'
     update(self.user,
            'last_name',
            'Unchanged',
            user_change_logger=self.user_change_logger)
     self.assertNotIn('last_name',
                      self.user_change_logger.fields_changed.keys())
 def test_update_language_logs_change(self):
     self.user.language = 'in'
     update(self.user,
            'language',
            'up',
            user_change_logger=self.user_change_logger)
     self.assertIn('language',
                   self.user_change_logger.fields_changed.keys())
 def test_update_last_name_logs_change(self):
     self.user.last_name = 'Initial'
     update(self.user,
            'last_name',
            'Updated',
            user_change_logger=self.user_change_logger)
     self.assertIn('last_name',
                   self.user_change_logger.fields_changed.keys())
 def test_update_email_with_no_change_does_not_log_change(self):
     self.user.email = '*****@*****.**'
     update(self.user,
            'email',
            '*****@*****.**',
            user_change_logger=self.user_change_logger)
     self.assertNotIn('email',
                      self.user_change_logger.fields_changed.keys())
 def test_update_groups_logs_change(self):
     group = Group({"name": "test"})
     group.save()
     self.addCleanup(group.delete)
     update(self.user,
            'groups', [group._id],
            user_change_logger=self.user_change_logger)
     self.assertIn(GROUPS_FIELD,
                   self.user_change_logger.change_messages.keys())
 def test_update_first_name_logs_change(self):
     self.user.first_name = 'Initial'
     self.user.save()
     update(self.user,
            'first_name',
            'Updated',
            user_change_logger=self.user_change_logger)
     self.assertIn('first_name',
                   self.user_change_logger.fields_changed.keys())
    def test_update_user_data_logs_change(self):
        self.user.update_metadata({'custom_data': "initial custom data"})

        update(self.user,
               'user_data', {'custom_data': 'updated custom data'},
               user_change_logger=self.user_change_logger)

        self.assertIn('user_data',
                      self.user_change_logger.fields_changed.keys())
    def test_update_password_with_strong_passwords_raises_exception(self):
        self.domain_obj.strong_mobile_passwords = True
        self.domain_obj.save()

        with self.assertRaises(ValidationError):
            update(self.user, 'password', 'abc123')
 def test_update_user_data_does_not_log_no_change(self):
     self.user.update_metadata({'custom_data': "unchanged custom data"})
     update(self.user, 'user_data',
            {'custom_data': 'unchanged custom data'})
     self.assertNotIn('user_data',
                      self.user_change_logger.fields_changed.keys())
 def test_update_groups_succeeds(self):
     group = Group({"name": "test"})
     group.save()
     self.addCleanup(group.delete)
     update(self.user, 'groups', [group._id])
     self.assertEqual(self.user.get_group_ids()[0], group._id)
 def test_update_language_succeeds(self):
     self.user.language = 'in'
     update(self.user, 'language', 'up')
     self.assertEqual(self.user.language, 'up')
 def test_update_phone_numbers_updates_default(self):
     self.user.set_default_phone_number('50253311398')
     update(self.user, 'phone_numbers', ['50253311399', '50253311398'])
     self.assertEqual(self.user.default_phone_number, '50253311399')
 def test_update_default_phone_number_preserves_previous_number(self):
     self.user.set_default_phone_number('50253311398')
     update(self.user, 'default_phone_number', '50253311399')
     self.assertIn('50253311398', self.user.phone_numbers)
 def test_update_email_succeeds(self):
     self.user.email = '*****@*****.**'
     update(self.user, 'email', '*****@*****.**')
     self.assertEqual(self.user.email, '*****@*****.**')
 def test_update_last_name_succeeds(self):
     self.user.last_name = 'Initial'
     update(self.user, 'last_name', 'Updated')
     self.assertEqual(self.user.last_name, 'Updated')
 def test_update_user_data_succeeds(self):
     self.user.update_metadata({'custom_data': "initial custom data"})
     update(self.user, 'user_data', {'custom_data': 'updated custom data'})
     self.assertEqual(self.user.metadata["custom_data"],
                      "updated custom data")
 def test_update_default_phone_number_succeeds(self):
     self.user.set_default_phone_number('50253311398')
     update(self.user, 'default_phone_number', '50253311399')
     self.assertEqual(self.user.default_phone_number, '50253311399')
 def test_update_unknown_field_raises_exception(self):
     with self.assertRaises(InvalidFieldException):
         update(self.user, 'username', 'new-username')
 def test_update_default_phone_number_raises_exception_if_not_string(self):
     self.user.set_default_phone_number('50253311398')
     with self.assertRaises(InvalidFormatException):
         update(self.user, 'default_phone_number', 50253311399)
 def test_update_phone_numbers_succeeds(self):
     self.user.phone_numbers = ['50253311398']
     update(self.user, 'phone_numbers', ['50253311399', '50253311398'])
     self.assertEqual(self.user.phone_numbers,
                      ['50253311399', '50253311398'])