Пример #1
0
def getServiceInfo(**kwargs) -> Dict:
    """Show information about this service.

    Returns:
        Service info object.
    """
    service_info = RegisterServiceInfo()
    return service_info.get_service_info()
Пример #2
0
def postServiceInfo(**kwargs) -> Tuple[None, str, Dict]:
    """Set information about this service.

    Returns:
        An empty 201 response with headers.
    """
    service_info = RegisterServiceInfo()
    headers = service_info.set_service_info_from_app_context(data=request.json)
    return None, '201', headers
Пример #3
0
    def test__get_headers(self):
        """Test for response headers getter."""
        app = Flask(__name__)
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=ENDPOINT_CONFIG,
        )

        with app.app_context():
            service_info = RegisterServiceInfo()
            headers = service_info._get_headers()
            assert headers == HEADERS_SERVICE_INFO
Пример #4
0
    def test_set_service_info_from_config(self):
        """Test for setting service info from config."""
        app = Flask(__name__)
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=ENDPOINT_CONFIG,
        )
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client = mongomock.MongoClient().db.collection

        with app.app_context():
            service_info = RegisterServiceInfo()
            service_info.set_service_info_from_config()
            assert service_info.get_service_info() == SERVICE_INFO_CONFIG
Пример #5
0
def main():
    # create app object
    app = foca(os.path.join(
        os.path.dirname(__file__),
        "config.yaml",
    ))

    # register service info
    with app.app.app_context():
        service_info = RegisterServiceInfo()
        service_info.set_service_info_from_config()

    # start app
    app.run(port=app.port)
Пример #6
0
    def test_set_service_info_from_config_invalid(self):
        """Test for setting service info from corrupt config."""
        app = Flask(__name__)
        mock_resp = deepcopy(ENDPOINT_CONFIG)
        del mock_resp[coll]['id']
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=mock_resp,
        )
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client = mongomock.MongoClient().db.collection

        with app.app_context():
            with pytest.raises(ValidationError):
                service_info = RegisterServiceInfo()
                service_info.set_service_info_from_config()
Пример #7
0
    def test_get_service_info(self):
        """Test for getting service info."""
        app = Flask(__name__)
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=ENDPOINT_CONFIG,
        )
        mock_resp = deepcopy(SERVICE_INFO_CONFIG)
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client = mongomock.MongoClient().db.collection
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client.insert_one(mock_resp)

        with app.app_context():
            service_info = RegisterServiceInfo()
            res = service_info.get_service_info()
            assert res == SERVICE_INFO_CONFIG
Пример #8
0
    def test__upsert_service_info_insert(self):
        """Test for creating service info document in database."""
        app = Flask(__name__)
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=ENDPOINT_CONFIG,
        )
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client = mongomock.MongoClient().db.collection

        data = deepcopy(SERVICE_INFO_CONFIG)
        del data['contactUrl']
        with app.app_context():
            service_info = RegisterServiceInfo()
            service_info._upsert_service_info(data=data)
            assert service_info.get_service_info() == data
            assert service_info.get_service_info() != SERVICE_INFO_CONFIG
Пример #9
0
    def test_set_service_info_from_config_skip(self):
        """Test for skipping setting service info because identical service
        info is already available.
        """
        app = Flask(__name__)
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=ENDPOINT_CONFIG,
        )
        mock_resp = deepcopy(SERVICE_INFO_CONFIG)
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client = mongomock.MongoClient().db.collection
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client.insert_one(mock_resp)

        with app.app_context():
            service_info = RegisterServiceInfo()
            service_info.set_service_info_from_config()
            assert service_info.get_service_info() == SERVICE_INFO_CONFIG
Пример #10
0
    def test_init(self):
        """Test for constructing class."""
        app = Flask(__name__)
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=ENDPOINT_CONFIG,
        )

        with app.app_context():
            service_info = RegisterServiceInfo()
            assert service_info.url_prefix == SERVICE_CONFIG['url_prefix']
Пример #11
0
    def test_get_service_info_na(self):
        """Test for getting service info when service info is unavailable."""
        app = Flask(__name__)
        app.config['FOCA'] = Config(
            db=MongoConfig(**MONGO_CONFIG),
            endpoints=ENDPOINT_CONFIG,
        )
        app.config['FOCA'].db.dbs[DB].collections[coll] \
            .client = mongomock.MongoClient().db.collection

        with app.app_context():
            with pytest.raises(NotFound):
                RegisterServiceInfo().get_service_info()