Example #1
0
def test_generate_url(initialized_db):
    try:
        application.register_blueprint(v2_bp, url_prefix="/v2")
    except:
        # Already registered.
        pass

    repo_ref = registry_model.lookup_repository("devtable", "simple")
    tag = registry_model.get_repo_tag(repo_ref, "latest")
    manifest = tag.manifest
    blobs = registry_model.get_manifest_local_blobs(manifest)

    retriever = BlobURLRetriever(storage, instance_keys, application)
    headers = retriever.headers_for_download(repo_ref, blobs[0])

    identity, _ = identity_from_bearer_token(headers["Authorization"][0])
    assert len(identity.provides) == 1

    provide = list(identity.provides)[0]
    assert provide.role == "read"
    assert provide.name == "simple"
    assert provide.namespace == "devtable"
    assert provide.type == "repository"

    assert retriever.url_for_download(repo_ref, blobs[0]).startswith(
        "http://localhost:5000/v2/devtable/simple/blobs/"
    )
Example #2
0
    def __init__(self, app, instance_keys, storage):
        self.app = app
        self.storage = storage

        if app.config.get("SECURITY_SCANNER_V4_ENDPOINT", None) is None:
            raise InvalidConfigurationException(
                "Missing SECURITY_SCANNER_V4_ENDPOINT configuration")

        validator = V4SecurityConfigValidator(
            app.config.get("FEATURE_SECURITY_SCANNER", False),
            app.config.get("SECURITY_SCANNER_V4_ENDPOINT", None),
        )

        if not validator.valid():
            msg = "Failed to validate security scanner V4 configuration"
            logger.warning(msg)
            raise InvalidConfigurationException(msg)

        self._secscan_api = ClairSecurityScannerAPI(
            endpoint=app.config.get("SECURITY_SCANNER_V4_ENDPOINT"),
            client=app.config.get("HTTPCLIENT"),
            blob_url_retriever=BlobURLRetriever(storage, instance_keys, app),
        )
Example #3
0
def api():
    assert app is not None
    retriever = BlobURLRetriever(storage, instance_keys, app)
    return ClairSecurityScannerAPI("http://fakesecurityscanner",
                                   build_requests_session(), retriever)