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:
Mondo Diaz
2026-02-03 12:45:44 -06:00
parent 106e30b533
commit 87f30ea898
17 changed files with 247 additions and 486 deletions

View File

@@ -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