def setup_verified_user(self): user = AppUser('*****@*****.**', 'Some', 'Thing', 'Mr', 1, 1, 'Male', 'University', 'Computer Science', 'None', 1, datetime(1984, 12, 12), 'English', '123456') user.verify_token = 'existing token' user.verify() db.session.add(user) db.session.commit()
def setup_verified_user(self): user = AppUser(email='*****@*****.**', firstname='Some', lastname='Thing', user_title='Mr', password='******', organisation_id=1) user.verify_token = 'existing token' user.verify() db.session.add(user) db.session.commit()
def add_user(self, email='*****@*****.**', firstname='User', lastname='Lastname', user_title='Mrs', password='******', organisation_id=1, is_admin=False, post_create_fn=lambda x: None): user = AppUser(email, firstname, lastname, user_title, password, organisation_id, is_admin) user.verify() post_create_fn(user) db.session.add(user) db.session.commit() self.test_users.append(user) return user
def get(self): try: user = AppUser.query.filter_by(email='*****@*****.**').first() if(user is None): user = AppUser(email="*****@*****.**", firstname="John", lastname="Snow", user_title="Mr", password="******", organisation_id=4, is_admin=True) user.verify() db.session.add(user) db.session.commit() except Exception as e: LOGGER.error( 'Failed to create test user {} due to: {}'.format(user, e)) return FAILED_CREATE_INTEGRATION_TEST_USER return user_info(user)
class EventAPITest(ApiTestCase): test_event_data_dict = { 'name': 'Test Event', 'description': 'Test Event Description', 'start_date': datetime(2020, 6, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'end_date': datetime(2020, 6, 6).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'key': 'testevent', 'organisation_id': 1, 'email_from': '*****@*****.**', 'url': 'testindaba.com', 'application_open': datetime(2020, 1, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'application_close': datetime(2020, 2, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'review_open': datetime(2020, 2, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'review_close': datetime(2020, 3, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'selection_open': datetime(2020, 3, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'selection_close': datetime(2020, 5, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'offer_open': datetime(2020, 5, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'offer_close': datetime(2020, 5, 30).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'registration_open': datetime(2020, 5, 30).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'registration_close': datetime(2020, 6, 1).strftime('%Y-%m-%dT%H:%M:%S.%fZ'), 'event_type': 'EVENT' } def seed_static_data(self): self.add_organisation('Test Indaba', 'blah.png', 'blah_big.png', 'testindaba') test_country = Country('Test Land') db.session.add(test_country) db.session.commit() test_category = UserCategory('TestYear') db.session.add(test_category) db.session.commit() self.test_admin_user = AppUser(email='*****@*****.**', firstname='Some', lastname='One', user_title='Mr', password='******', organisation_id=1, is_admin=True) self.test_admin_user.verify() db.session.add(self.test_admin_user) db.session.commit() self.test_user = AppUser(email='*****@*****.**', firstname='Some', lastname='One', user_title='Mr', password='******', organisation_id=1) self.test_user.verify() db.session.add(self.test_user) db.session.commit() event = self.add_event('Indaba 2019', 'Deep Learning Indaba', datetime(2019, 8, 25), datetime(2019, 8, 31), 'COOLER') db.session.commit() db.session.flush() def get_auth_header_for(self, email): body = {'email': email, 'password': '******'} response = self.app.post('api/v1/authenticate', data=body) data = json.loads(response.data) header = {'Authorization': data['token']} LOGGER.debug('here') return header def test_post_event_unauthed(self): self.seed_static_data() response = self.app.post('api/v1/event', data=self.test_event_data_dict) self.assertEqual(response.status_code, 401) def test_put_event_unauthed(self): self.seed_static_data() response = self.app.put('api/v1/event', data=self.test_event_data_dict) self.assertEqual(response.status_code, 401) def test_post_event_not_admin(self): self.seed_static_data() header = self.get_auth_header_for(self.test_user.email) response = self.app.post('api/v1/event', headers=header, data=self.test_event_data_dict) self.assertEqual(response.status_code, 403) def test_post_event_is_admin(self): self.seed_static_data() header = self.get_auth_header_for(self.test_admin_user.email) response = self.app.post('api/v1/event', headers=header, data=self.test_event_data_dict) self.assertEqual(response.status_code, 201) def test_post_event_eventrole_added(self): self.seed_static_data() header = self.get_auth_header_for(self.test_admin_user.email) event_response = self.app.post('api/v1/event', headers=header, data=self.test_event_data_dict) event_data = json.loads(event_response.data) self.assertEqual(event_response.status_code, 201) body = {'email': self.test_admin_user.email, 'password': '******'} response = self.app.post('api/v1/authenticate', data=body) data = json.loads(response.data) self.assertEqual(len(data['roles']), 1) for event_role in data['roles']: if event_role['event_id'] == event_data['id']: self.assertEqual(data['roles'][0]['role'], 'admin') def test_put_event_is_admin(self): self.seed_static_data() header = self.get_auth_header_for(self.test_admin_user.email) # update(put) event self.test_event_data_dict['id'] = 1 self.test_event_data_dict['name'] = 'Test Event Updated' response = self.app.put('api/v1/event', headers=header, data=self.test_event_data_dict) data = json.loads(response.data) self.assertEqual(response.status_code, 200) self.assertEqual(data['name'], 'Test Event Updated') def test_put_event_not_admin(self): self.seed_static_data() # update(put) event by non-admin user # get auth header for non admin user header = self.get_auth_header_for(self.test_user.email) self.test_event_data_dict['id'] = 1 self.test_event_data_dict['name'] = 'Test Event Updated' response = self.app.put('api/v1/event', headers=header, data=self.test_event_data_dict) self.assertEqual(response.status_code, 403)