def test_init(self): config = load_config(typ=ScimApiConfig, app_name='scimapi', ns='api', test_config=self.test_config) ctx = Context(config=config) self.assertEqual(ctx.base_url, 'http://localhost:8000/')
def init_config(ns: str, app_name: str, test_config: Optional[Mapping[str, Any]] = None) -> VCCSConfig: config = load_config(typ=VCCSConfig, app_name=app_name, ns=ns, test_config=test_config) assert isinstance(config, VCCSConfig) # convince mypy return config
def init_api(name: str = 'scimapi', test_config: Optional[Dict] = None) -> falcon.API: config = load_config(typ=ScimApiConfig, app_name=name, ns='api', test_config=test_config) context = Context(config=config) context.logger.info(f'Starting {name} app') api = falcon.API( middleware=[HandleSCIM(context), HandleAuthentication(context)]) api.req_options.media_handlers[ 'application/scim+json'] = api.req_options.media_handlers[ 'application/json'] # Error handlers tried in reversed declaration order api.add_error_handler(Exception, exceptions.unexpected_error_handler) api.add_error_handler(falcon.HTTPMethodNotAllowed, exceptions.method_not_allowed_handler) api.add_error_handler(falcon.HTTPUnsupportedMediaType, exceptions.unsupported_media_type_handler) api.add_error_handler(exceptions.HTTPErrorDetail) # Login # TODO: Move bearer token generation to a separate API api.add_route('/login/', LoginResource(context=context)) # Users api.add_route('/Users/', UsersResource(context=context)) # for POST api.add_route('/Users/{scim_id}', UsersResource(context=context)) # for GET/PUT api.add_route('/Users/.search', UsersSearchResource(context=context)) # for POST # Groups api.add_route('/Groups/', GroupsResource(context=context)) api.add_route('/Groups/{scim_id}', GroupsResource(context=context)) api.add_route('/Groups/.search', GroupSearchResource(context=context)) # Invites api.add_route('/Invites/', InvitesResource(context=context)) api.add_route('/Invites/{scim_id}', InvitesResource(context=context)) api.add_route('/Invites/.search', InviteSearchResource(context=context)) # Events api.add_route('/Events/', EventsResource(context=context)) api.add_route('/Events/{scim_id}', EventsResource(context=context)) # Status api.add_route('/status/healthy', HealthCheckResource(context=context)) context.logger.info('app running...') return api
def setUp(self) -> None: super().setUp() self.test_config = self._get_config() config = load_config(typ=ScimApiConfig, app_name='scimapi', ns='api', test_config=self.test_config) self.context = Context(config=config) self.groupdb = self.context.get_groupdb('eduid.se') for i in range(9): self.add_group(uuid4(), f'Test Group-{i}')
def setUp(self) -> None: super().setUp() self.test_config = { 'testing': True, 'mongo_uri': self.mongo_uri, 'mongo_collection': self.mongo_collection, 'periodic_min_retry_wait_in_seconds': 1, } self.config = load_config(typ=QueueWorkerConfig, app_name='test', ns='queue', test_config=self.test_config) self.db.register_handler(TestPayload)
def setUp(self) -> None: self.test_config = self._get_config() config = load_config(typ=ScimApiConfig, app_name='scimapi', ns='api', test_config=self.test_config) self.context = Context(config=config) # TODO: more tests for scoped groups when that is implemented self.data_owner = 'eduid.se' self.userdb = self.context.get_userdb(self.data_owner) self.invitedb = self.context.get_invitedb(self.data_owner) self.signup_invitedb = SignupInviteDB(db_uri=config.mongo_uri) self.messagedb = MessageDB(db_uri=config.mongo_uri) self.eventdb = self.context.get_eventdb(self.data_owner) api = init_api(name='test_api', test_config=self.test_config) self.client = TestClient(api) self.headers = { 'Content-Type': 'application/scim+json', 'Accept': 'application/scim+json', }
def init_mail_worker(name: str = 'mail_worker', test_config: Optional[Mapping[str, Any]] = None) -> MailQueueWorker: config = load_config(typ=QueueWorkerConfig, app_name=name, ns='queue', test_config=test_config) return MailQueueWorker(config=config)