test(v2r1c6): cover release controller contracts
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from .manifest import (
|
||||
ManifestValidationError,
|
||||
build_approval_request,
|
||||
validate_release_request,
|
||||
validate_source_manifest,
|
||||
)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser()
|
||||
sub = parser.add_subparsers(dest="command", required=True)
|
||||
source = sub.add_parser("validate-source")
|
||||
source.add_argument("manifest", type=Path)
|
||||
source.add_argument("--base-oid", required=True)
|
||||
release = sub.add_parser("validate-release")
|
||||
release.add_argument("source_manifest", type=Path)
|
||||
release.add_argument("request", type=Path)
|
||||
release.add_argument("--main-oid")
|
||||
approval = sub.add_parser("approval-request")
|
||||
approval.add_argument("source_manifest", type=Path)
|
||||
approval.add_argument("--target-oid", required=True)
|
||||
approval.add_argument("--artifact-uri", required=True)
|
||||
approval.add_argument("--artifact-sha256", required=True)
|
||||
approval.add_argument("--artifact-size", required=True, type=int)
|
||||
approval.add_argument("--evidence-closure-oid", required=True)
|
||||
approval.add_argument("--rollback-metadata", required=True)
|
||||
approval.add_argument("--current-tag-oid", required=True)
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
if args.command == "validate-source":
|
||||
result = validate_source_manifest(args.manifest, args.base_oid)
|
||||
elif args.command == "validate-release":
|
||||
source_data = json.loads(args.source_manifest.read_text(encoding="utf-8"))
|
||||
source = validate_source_manifest(args.source_manifest, source_data["base_oid"])
|
||||
result = validate_release_request(source, args.request, args.main_oid)
|
||||
else:
|
||||
result = build_approval_request(
|
||||
source_manifest_path=args.source_manifest,
|
||||
target_oid=args.target_oid,
|
||||
artifact_uri=args.artifact_uri,
|
||||
artifact_sha256=args.artifact_sha256,
|
||||
artifact_size=args.artifact_size,
|
||||
evidence_closure_oid=args.evidence_closure_oid,
|
||||
rollback_metadata=args.rollback_metadata,
|
||||
current_tag_oid=args.current_tag_oid,
|
||||
)
|
||||
print(json.dumps(result, sort_keys=True))
|
||||
return 0
|
||||
except (ManifestValidationError, OSError, ValueError, KeyError) as exc:
|
||||
code = exc.code if isinstance(exc, ManifestValidationError) else "VALIDATION_ERROR"
|
||||
Reference in New Issue
Block a user