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/" )
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), )
def api(): assert app is not None retriever = BlobURLRetriever(storage, instance_keys, app) return ClairSecurityScannerAPI("http://fakesecurityscanner", build_requests_session(), retriever)