def test_create_user(self): """Test the 'create' part of _create_or_update_user.""" new_user = self.fake_filtered_data() # User not found yet self.api.get('/users/%s' % new_user['nethz'], status_code=404) with self.app.test_request_context(): ldap._create_or_update_user(new_user) # User exists now self.api.get('/users/%s' % new_user['nethz'], status_code=200)
def test_update_user(self): """Test the 'patch' part of _create_or_patch_user.""" # The user is in the database. Now change a few things and verify # patch with original data does the correct thing tests = ( # (field, db_value, ldap_value, change_expected) ('firstname', 'old', 'new', True), ('lastname', 'old', 'new', True), ('department', 'mavt', 'itet', True), ('gender', 'male', 'female', True), ('legi', '76543210', '01234567', True), # Membership is only upgraded ('membership', 'none', 'regular', True), ('membership', 'regular', 'none', False), ('membership', 'honorary', 'regular', False), ('membership', 'honorary', 'none', False), ('membership', 'extraordinary', 'regular', False), ('membership', 'extraordinary', 'none', False), # email will not be changed ('email', '*****@*****.**', '*****@*****.**', False) ) for ind, (field, db_value, ldap_value, change) in enumerate(tests): # Create a new user for every test self.new_object('users', nethz=str(ind), **{field: db_value}) ldap_data = {'nethz': str(ind), field: ldap_value} with self.app.test_request_context(): result = ldap._create_or_update_user(ldap_data) if change: self.assertEqual(result[field], ldap_value) else: self.assertEqual(result[field], db_value)
def test_update_user(self): """Test the 'patch' part of _create_or_patch_user.""" # The user is in the database. Now change a few things and verify # patch with original data does the correct thing tests = ( # (field, db_value, ldap_value, change_expected) ('firstname', 'old', 'new', True), ('lastname', 'old', 'new', True), ('department', 'mavt', 'itet', True), ('gender', 'male', 'female', True), ('legi', '76543210', '01234567', True), # Membership is only upgraded ('membership', 'none', 'regular', True), ('membership', 'regular', 'none', False), ('membership', 'honorary', 'regular', False), ('membership', 'honorary', 'none', False), ('membership', 'extraordinary', 'regular', False), ('membership', 'extraordinary', 'none', False), # email will not be changed ('email', '*****@*****.**', '*****@*****.**', False)) for ind, (field, db_value, ldap_value, change) in enumerate(tests): # Create a new user for every test self.new_object('users', nethz=str(ind), **{field: db_value}) ldap_data = {'nethz': str(ind), field: ldap_value} with self.app.test_request_context(): result = ldap._create_or_update_user(ldap_data) if change: self.assertEqual(result[field], ldap_value) else: self.assertEqual(result[field], db_value)
def test_upgrade_membership(self): # Insert non-member and upgrade by ldap later user = self.api.post( '/users', data={ 'nethz': 'pablo', 'email': '*****@*****.**', # this will be auto-generated 'firstname': 'P', 'lastname': 'Ablo', 'department': 'itet', 'membership': 'none', 'gender': 'female', 'legi': '01234567', 'send_newsletter': False, }, status_code=201).json self.assertFalse(user['send_newsletter']) with self.app.test_request_context(): result = ldap._create_or_update_user(self.fake_filtered_data()) self.assertTrue(result['send_newsletter'])