mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-06 22:18:28 +00:00
Fix for snapshot creation APIs: locking, package existence checks, consistency checks. #168
More system tests.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from api_lib import APITest
|
||||
|
||||
|
||||
class SnapshotsAPITestCreateShow(APITest):
|
||||
class SnapshotsAPITestCreateShowEmpty(APITest):
|
||||
"""
|
||||
GET /api/snapshots/:name, POST /api/snapshots, GET /api/snapshots/:name/packages
|
||||
"""
|
||||
@@ -10,6 +10,7 @@ class SnapshotsAPITestCreateShow(APITest):
|
||||
snapshot_desc = {u'Description': u'fun snapshot',
|
||||
u'Name': snapshot_name}
|
||||
|
||||
# create empty snapshot
|
||||
resp = self.post("/api/snapshots", json=snapshot_desc)
|
||||
self.check_subset(snapshot_desc, resp.json())
|
||||
self.check_equal(resp.status_code, 201)
|
||||
@@ -17,8 +18,16 @@ class SnapshotsAPITestCreateShow(APITest):
|
||||
self.check_subset(snapshot_desc, self.get("/api/snapshots/" + snapshot_name).json())
|
||||
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 200)
|
||||
|
||||
resp = self.get("/api/snapshots/" + snapshot_name + "/packages")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), [])
|
||||
|
||||
self.check_equal(self.get("/api/snapshots/" + self.random_name()).status_code, 404)
|
||||
|
||||
# create snapshot with duplicate name
|
||||
resp = self.post("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.status_code, 400)
|
||||
|
||||
|
||||
class SnapshotsAPITestCreateFromRefs(APITest):
|
||||
"""
|
||||
@@ -28,25 +37,46 @@ class SnapshotsAPITestCreateFromRefs(APITest):
|
||||
snapshot_name = self.random_name()
|
||||
snapshot_desc = {u'Description': u'fun snapshot',
|
||||
u'Name': snapshot_name,
|
||||
u'SourceIDs': ['123']}
|
||||
u'SourceSnapshots': [self.random_name()]}
|
||||
|
||||
# creating snapshot from missing source snapshot
|
||||
resp = self.post("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.status_code, 404)
|
||||
|
||||
resp = self.post("/api/snapshots", json={"Name": self.random_name()})
|
||||
# create empty snapshot
|
||||
empty_snapshot_name = self.random_name()
|
||||
resp = self.post("/api/snapshots", json={"Name": empty_snapshot_name})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
snapshot_desc['SourceIDs'] = [resp.json()["UUID"]]
|
||||
self.check_equal(resp.json()['Description'], 'Created as empty')
|
||||
|
||||
# create and upload package to repo to register package in DB
|
||||
repo_name = self.random_name()
|
||||
self.check_equal(self.post("/api/repos", json={"Name": repo_name}).status_code, 201)
|
||||
d = self.random_name()
|
||||
self.check_equal(self.upload("/api/files/" + d,
|
||||
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
|
||||
# create snapshot with empty snapshot as source and package
|
||||
snapshot = snapshot_desc.copy()
|
||||
snapshot['PackageRefs'] = ["Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378"]
|
||||
snapshot['SourceSnapshots'] = [empty_snapshot_name]
|
||||
resp = self.post("/api/snapshots", json=snapshot)
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_subset(snapshot_desc, resp.json())
|
||||
snapshot.pop('SourceSnapshots')
|
||||
snapshot.pop('PackageRefs')
|
||||
self.check_subset(snapshot, resp.json())
|
||||
|
||||
self.check_subset(snapshot_desc, self.get("/api/snapshots/" + snapshot_name).json())
|
||||
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 200)
|
||||
self.check_subset(snapshot, self.get("/api/snapshots/" + snapshot_name).json())
|
||||
resp = self.get("/api/snapshots/" + snapshot_name + "/packages")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), ["Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378"])
|
||||
|
||||
self.check_equal(self.get("/api/snapshots/" + self.random_name()).status_code, 404)
|
||||
# create snapshot with unreferenced package
|
||||
resp = self.post("/api/snapshots", json={
|
||||
"Name": self.random_name(),
|
||||
"PackageRefs": ["Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378", "Pamd64 no-such-package 1.2 91"]})
|
||||
self.check_equal(resp.status_code, 404)
|
||||
|
||||
|
||||
class SnapshotsAPITestCreateFromRepo(APITest):
|
||||
|
||||
Reference in New Issue
Block a user