Update tests for tag removal
- Remove Tag/TagHistory model tests from unit tests - Update CacheSettings tests to remove allow_public_internet field - Replace tag= with version= in upload_test_file calls - Update test assertions to use versions instead of tags - Remove tests for tag: prefix downloads (now uses version:) - Update dependency tests for version-only schema
This commit is contained in:
@@ -39,7 +39,7 @@ class TestDependencySchema:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v1.0.0-{unique_test_id}"},
|
||||
data={"version": f"v1.0.0-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -59,29 +59,17 @@ class TestDependencySchema:
|
||||
integration_client.delete(f"/api/v1/projects/{dep_project_name}")
|
||||
|
||||
@pytest.mark.integration
|
||||
def test_dependency_requires_version_or_tag(self, integration_client):
|
||||
"""Test that dependency must have either version or tag, not both or neither."""
|
||||
def test_dependency_requires_version(self, integration_client):
|
||||
"""Test that dependency requires version."""
|
||||
from app.schemas import DependencyCreate
|
||||
|
||||
# Test: neither version nor tag
|
||||
with pytest.raises(ValidationError) as exc_info:
|
||||
# Test: missing version
|
||||
with pytest.raises(ValidationError):
|
||||
DependencyCreate(project="proj", package="pkg")
|
||||
assert "Either 'version' or 'tag' must be specified" in str(exc_info.value)
|
||||
|
||||
# Test: both version and tag
|
||||
with pytest.raises(ValidationError) as exc_info:
|
||||
DependencyCreate(project="proj", package="pkg", version="1.0.0", tag="stable")
|
||||
assert "Cannot specify both 'version' and 'tag'" in str(exc_info.value)
|
||||
|
||||
# Test: valid with version
|
||||
dep = DependencyCreate(project="proj", package="pkg", version="1.0.0")
|
||||
assert dep.version == "1.0.0"
|
||||
assert dep.tag is None
|
||||
|
||||
# Test: valid with tag
|
||||
dep = DependencyCreate(project="proj", package="pkg", tag="stable")
|
||||
assert dep.tag == "stable"
|
||||
assert dep.version is None
|
||||
|
||||
@pytest.mark.integration
|
||||
def test_dependency_unique_constraint(
|
||||
@@ -126,7 +114,7 @@ class TestEnsureFileParsing:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v1.0.0-{unique_test_id}"},
|
||||
data={"version": f"v1.0.0-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
@@ -162,7 +150,7 @@ class TestEnsureFileParsing:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v1.0.0-{unique_test_id}"},
|
||||
data={"version": f"v1.0.0-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 400
|
||||
assert "Invalid ensure file" in response.json().get("detail", "")
|
||||
@@ -188,7 +176,7 @@ class TestEnsureFileParsing:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v1.0.0-{unique_test_id}"},
|
||||
data={"version": f"v1.0.0-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 400
|
||||
assert "Project" in response.json().get("detail", "")
|
||||
@@ -208,7 +196,7 @@ class TestEnsureFileParsing:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v1.0.0-nodeps-{unique_test_id}"},
|
||||
data={"version": f"v1.0.0-nodeps-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -226,13 +214,14 @@ class TestEnsureFileParsing:
|
||||
assert response.status_code == 200
|
||||
|
||||
try:
|
||||
# Test with missing version field (version is now required)
|
||||
ensure_content = yaml.dump({
|
||||
"dependencies": [
|
||||
{"project": dep_project_name, "package": "pkg", "version": "1.0.0", "tag": "stable"}
|
||||
{"project": dep_project_name, "package": "pkg"} # Missing version
|
||||
]
|
||||
})
|
||||
|
||||
content = unique_content("test-both", unique_test_id, "constraint")
|
||||
content = unique_content("test-missing-version", unique_test_id, "constraint")
|
||||
files = {
|
||||
"file": ("test.tar.gz", BytesIO(content), "application/gzip"),
|
||||
"ensure": ("orchard.ensure", BytesIO(ensure_content.encode()), "application/x-yaml"),
|
||||
@@ -240,11 +229,10 @@ class TestEnsureFileParsing:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v1.0.0-{unique_test_id}"},
|
||||
data={"version": f"v1.0.0-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 400
|
||||
assert "both" in response.json().get("detail", "").lower() or \
|
||||
"version" in response.json().get("detail", "").lower()
|
||||
assert "version" in response.json().get("detail", "").lower()
|
||||
finally:
|
||||
integration_client.delete(f"/api/v1/projects/{dep_project_name}")
|
||||
|
||||
@@ -271,7 +259,7 @@ class TestDependencyQueryEndpoints:
|
||||
ensure_content = yaml.dump({
|
||||
"dependencies": [
|
||||
{"project": dep_project_name, "package": "lib-a", "version": "1.0.0"},
|
||||
{"project": dep_project_name, "package": "lib-b", "tag": "stable"},
|
||||
{"project": dep_project_name, "package": "lib-b", "version": "2.0.0"},
|
||||
]
|
||||
})
|
||||
|
||||
@@ -283,7 +271,7 @@ class TestDependencyQueryEndpoints:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v2.0.0-{unique_test_id}"},
|
||||
data={"version": f"v2.0.0-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
artifact_id = response.json()["artifact_id"]
|
||||
@@ -299,10 +287,8 @@ class TestDependencyQueryEndpoints:
|
||||
deps = {d["package"]: d for d in data["dependencies"]}
|
||||
assert "lib-a" in deps
|
||||
assert deps["lib-a"]["version"] == "1.0.0"
|
||||
assert deps["lib-a"]["tag"] is None
|
||||
assert "lib-b" in deps
|
||||
assert deps["lib-b"]["tag"] == "stable"
|
||||
assert deps["lib-b"]["version"] is None
|
||||
assert deps["lib-b"]["version"] == "2.0.0"
|
||||
|
||||
finally:
|
||||
integration_client.delete(f"/api/v1/projects/{dep_project_name}")
|
||||
@@ -336,7 +322,7 @@ class TestDependencyQueryEndpoints:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": tag_name},
|
||||
data={"version": tag_name},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -381,7 +367,7 @@ class TestDependencyQueryEndpoints:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{dep_project_name}/target-lib/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -400,7 +386,7 @@ class TestDependencyQueryEndpoints:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v4.0.0-{unique_test_id}"},
|
||||
data={"version": f"v4.0.0-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -442,7 +428,7 @@ class TestDependencyQueryEndpoints:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"v5.0.0-nodeps-{unique_test_id}"},
|
||||
data={"version": f"v5.0.0-nodeps-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
artifact_id = response.json()["artifact_id"]
|
||||
@@ -482,7 +468,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_c}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -500,7 +486,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_b}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -518,7 +504,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_a}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -566,7 +552,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_d}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -584,7 +570,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_b}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -602,7 +588,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_c}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -621,7 +607,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_a}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -663,7 +649,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"solo-{unique_test_id}"},
|
||||
data={"version": f"solo-{unique_test_id}"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -698,7 +684,7 @@ class TestDependencyResolution:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{project_name}/{package_name}/upload",
|
||||
files=files,
|
||||
data={"tag": f"missing-dep-{unique_test_id}"},
|
||||
data={"version": f"missing-dep-{unique_test_id}"},
|
||||
)
|
||||
# Should fail at upload time since package doesn't exist
|
||||
# OR succeed at upload but fail at resolution
|
||||
@@ -736,7 +722,7 @@ class TestCircularDependencyDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_a}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -754,7 +740,7 @@ class TestCircularDependencyDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_b}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -772,7 +758,7 @@ class TestCircularDependencyDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_a}/upload",
|
||||
files=files,
|
||||
data={"tag": "2.0.0"},
|
||||
data={"version": "2.0.0"},
|
||||
)
|
||||
# Should be rejected with 400 (circular dependency)
|
||||
assert response.status_code == 400
|
||||
@@ -807,7 +793,7 @@ class TestCircularDependencyDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_a}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -825,7 +811,7 @@ class TestCircularDependencyDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_b}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -843,7 +829,7 @@ class TestCircularDependencyDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_c}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -861,7 +847,7 @@ class TestCircularDependencyDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_a}/upload",
|
||||
files=files,
|
||||
data={"tag": "2.0.0"},
|
||||
data={"version": "2.0.0"},
|
||||
)
|
||||
assert response.status_code == 400
|
||||
data = response.json()
|
||||
@@ -910,7 +896,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_common}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -920,7 +906,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_common}/upload",
|
||||
files=files,
|
||||
data={"tag": "2.0.0"},
|
||||
data={"version": "2.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -938,7 +924,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_lib_a}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -956,7 +942,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_lib_b}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -975,7 +961,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_app}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -1023,7 +1009,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_common}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -1042,7 +1028,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{lib_pkg}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
@@ -1061,7 +1047,7 @@ class TestConflictDetection:
|
||||
response = integration_client.post(
|
||||
f"/api/v1/project/{test_project}/{pkg_app}/upload",
|
||||
files=files,
|
||||
data={"tag": "1.0.0"},
|
||||
data={"version": "1.0.0"},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
Reference in New Issue
Block a user