示例#1
0
 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/')
示例#2
0
文件: config.py 项目: SUNET/VCCS2
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
示例#3
0
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
示例#4
0
    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}')
示例#5
0
    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)
示例#6
0
    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',
        }
示例#7
0
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)