def test_get_with_timeout(self, mock_get):
     mock_get.side_effect = Timeout(self.error_msg)
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             with self.assertRaises(ApplicationError) as context:
                 AccountAPI.get(self, '1234-567-890')
                 self.assertTrue(ApplicationError in str(context.exception))
             self.assertEqual(
                 context.exception.message,
                 'Connection to account_api timed out: {}'.format(
                     self.error_msg))
             self.assertEqual(context.exception.code, 'E711')
             self.assertEqual(context.exception.http_code, 500)
    def test_get_connection_error(self, mock_get):
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_get.side_effect = ConnectionError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.get(self, '1234-567-890')

                self.assertEqual(
                    context.exception.message,
                    'Encountered an error connecting to account_api: {}'.
                    format(self.error_msg))
                self.assertEqual(context.exception.code, 'E710')
                self.assertEqual(context.exception.http_code, 500)
    def test_get_http_error(self, mock_get):
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_get.side_effect = HTTPError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.get(self, '1234-567-890')

                self.assertEqual(
                    context.exception.message,
                    'Received the following response from account_api: {}'.
                    format(self.error_msg))
                self.assertEqual(context.exception.code, 'E709')
                self.assertEqual(context.exception.http_code, 500)
 def test_update_groups_with_timeout(self, mock_patch):
     mock_patch.side_effect = Timeout(self.error_msg)
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             with self.assertRaises(ApplicationError) as context:
                 AccountAPI.update_groups(self, {'nps_sample': True},
                                          '11-22')
                 self.assertTrue(ApplicationError in str(context.exception))
             self.assertEqual(
                 context.exception.message,
                 'Connection to account_api timed out: {}'.format(
                     self.error_msg))
             self.assertEqual(context.exception.code, 'E711')
             self.assertEqual(context.exception.http_code, 500)
    def test_update_groups_http_error(self, mock_patch):
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_patch.side_effect = HTTPError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.update_groups(self, {'nps_sample': True},
                                             '11-22')

                self.assertEqual(
                    context.exception.message,
                    'Received the following response from account_api: {}'.
                    format(self.error_msg))
                self.assertEqual(context.exception.code, 'E709')
                self.assertEqual(context.exception.http_code, 500)
 def test_create_with_timeout(self, mock_create, mock_post):
     mock_post.side_effect = Timeout(self.error_msg)
     data = {'foo': 'bar'}
     mock_create.return_value = {'foo': 'bar'}
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             with self.assertRaises(ApplicationError) as context:
                 AccountAPI.create(self, data)
                 self.assertTrue(ApplicationError in str(context.exception))
             self.assertEqual(
                 context.exception.message,
                 'Connection to account_api timed out: {}'.format(
                     self.error_msg))
             self.assertEqual(context.exception.code, 'E711')
             self.assertEqual(context.exception.http_code, 500)
Ejemplo n.º 7
0
def create_new_user(user_data):
    try:
        account = AccountAPI()
        verification = VerificationAPI()
        app.logger.info('Creating user in ldap for {}'.format(
            user_data['email']))
        response = account.create(user_data)
        user_data['ldap_id'] = response['user_id']

        user_data = _process_new_user_data(user_data)
        app.logger.info('Adding user {} to the ulapd database...'.format(
            user_data['email']))
        new_user_details = UserDetails(user_data)
        db.session.add(new_user_details)
        db.session.commit()
        user_data['user_details_id'] = new_user_details.user_details_id

        if user_data['contactable']:
            app.logger.info(
                'Inserting the contact preferences for {}...'.format(
                    user_data['email']))
            for preference in user_data['contact_preferences']:
                contact = {
                    'user_details_id': user_data['user_details_id'],
                    'contact_type': preference
                }
                contact_preference = Contact(contact)
                db.session.add(contact_preference)
        db.session.commit()
        app.logger.info(
            'Finished adding user {} to the ulapd database...'.format(
                user_data['email']))

        # Add the user details to verification database for DST
        app.logger.info('Adding user {} to verification db...'.format(
            user_data['email']))
        verification.create(user_data)

        # Call to account-api to activate or acknowledge user
        is_uk_org = 'organisation-uk' in user_data['user_type']

        if is_uk_org:
            app.logger.info('Acknowledging user')
            account.acknowledge(user_data['ldap_id'])
        else:
            app.logger.info('Activating user')
            account.activate(user_data['ldap_id'])

        db.session.close()
        return user_data
    except Exception as e:
        app.logger.error('Failed to create user with error - {}'.format(
            str(e)))
        db.session.rollback()
        _delete_user_data(account, user_data)
        db.session.close()
        raise ApplicationError(*errors.get('ulapd_api',
                                           'CREATE_USER_ERROR',
                                           filler=e),
                               http_code=400)
 def test_acknowledge(self, mock_post):
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             mock_post.return_value.text = 'Success'
             mock_post.return_value.status_code = 200
             response = AccountAPI.acknowledge(self, '1234-567-890')
             assert response == {'message': 'acknowledged'}
 def test_get(self, mock_get):
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             mock_get.return_value.json.return_value = 'Success'
             mock_get.return_value.status_code = 200
             response = AccountAPI.get(self, '1234-567-890')
             self.assertEqual(response, 'Success')
    def test_create_connection_error(self, mock_create, mock_post):
        data = {'foo': 'bar'}
        mock_create.return_value = {'foo': 'bar'}
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_post.side_effect = ConnectionError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.create(self, data)

                self.assertEqual(
                    context.exception.message,
                    'Encountered an error connecting to account_api: {}'.
                    format(self.error_msg))
                self.assertEqual(context.exception.code, 'E710')
                self.assertEqual(context.exception.http_code, 500)
    def test_create_http_error(self, mock_create, mock_post):
        data = {'foo': 'bar'}
        mock_create.return_value = {'foo': 'bar'}
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_post.side_effect = HTTPError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.create(self, data)

                self.assertEqual(
                    context.exception.message,
                    'Received the following response from account_api: {}'.
                    format(self.error_msg))
                self.assertEqual(context.exception.code, 'E709')
                self.assertEqual(context.exception.http_code, 500)
 def test_update_groups(self, mock_patch):
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             mock_patch.return_value.text = 'Success'
             mock_patch.return_value.status_code = 200
             response = AccountAPI.update_groups(self, {'nps_sample': True},
                                                 '11-22')
             assert response == {'message': 'groups updated'}
 def test_create(self, mock_create, mock_post):
     data = {'email': '*****@*****.**'}
     mock_create.return_value = {'email': '*****@*****.**'}
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             mock_post.return_value.json.return_value = 'Success'
             mock_post.return_value.status_code = 200
             response = AccountAPI.create(self, data)
             self.assertEqual(response, 'Success')
    def test_handle_role_connection_error(self, mock_post):
        with app.app_context() as ac:
            ac.g.trace_id = None
            ac.g.requests = requests.Session()
            with app.test_request_context():
                mock_post.side_effect = ConnectionError(self.error_msg)

                with self.assertRaises(ApplicationError) as context:
                    AccountAPI.handle_role(self, {
                        'groups': {
                            'nps_sample': True
                        },
                        'ldap_id': '11-22'
                    })

                self.assertEqual(
                    context.exception.message,
                    'Encountered an error connecting to account_api: {}'.
                    format(self.error_msg))
                self.assertEqual(context.exception.code, 'E710')
                self.assertEqual(context.exception.http_code, 500)
 def test_handle_role(self, mock_post):
     with app.app_context() as ac:
         ac.g.trace_id = None
         ac.g.requests = requests.Session()
         with app.test_request_context():
             mock_post.return_value.text = 'Success'
             mock_post.return_value.status_code = 200
             response = AccountAPI.handle_role(self, {
                 'groups': {
                     'nps_sample': True
                 },
                 'ldap_id': '11-22'
             })
             assert response == {'message': 'success'}
Ejemplo n.º 16
0
def _handle_ldap_group(licence, ldap_id, agreed):
    account = AccountAPI()
    payload = {'ldap_id': ldap_id, 'groups': {licence: agreed}}
    return account.handle_role(payload)