Пример #1
0
 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()
Пример #2
0
 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()
Пример #3
0
    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
Пример #4
0
    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)
Пример #5
0
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)