mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-07 05:42:42 +00:00
Add task api and resource locking ability
This commit is contained in:
committed by
Lorenzo Bolla
parent
e63d74dff2
commit
6ab5e60833
@@ -47,6 +47,17 @@ class APITest(BaseTest):
|
||||
kwargs["headers"]["Content-Type"] = "application/json"
|
||||
return requests.post("http://%s%s" % (self.base_url, uri), *args, **kwargs)
|
||||
|
||||
def post_task(self, uri, *args, **kwargs):
|
||||
resp = self.post(uri, *args, **kwargs)
|
||||
if resp.status_code != 202:
|
||||
return resp
|
||||
|
||||
_id = resp.json()['ID']
|
||||
resp = self.get("/api/tasks/" + str(_id) + "/wait")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
|
||||
return self.get("/api/tasks/" + str(_id))
|
||||
|
||||
def put(self, uri, *args, **kwargs):
|
||||
if "json" in kwargs:
|
||||
kwargs["data"] = json.dumps(kwargs.pop("json"))
|
||||
@@ -55,6 +66,17 @@ class APITest(BaseTest):
|
||||
kwargs["headers"]["Content-Type"] = "application/json"
|
||||
return requests.put("http://%s%s" % (self.base_url, uri), *args, **kwargs)
|
||||
|
||||
def put_task(self, uri, *args, **kwargs):
|
||||
resp = self.put(uri, *args, **kwargs)
|
||||
if resp.status_code != 202:
|
||||
return resp
|
||||
|
||||
_id = resp.json()['ID']
|
||||
resp = self.get("/api/tasks/" + str(_id) + "/wait")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
|
||||
return self.get("/api/tasks/" + str(_id))
|
||||
|
||||
def delete(self, uri, *args, **kwargs):
|
||||
if "json" in kwargs:
|
||||
kwargs["data"] = json.dumps(kwargs.pop("json"))
|
||||
@@ -63,6 +85,17 @@ class APITest(BaseTest):
|
||||
kwargs["headers"]["Content-Type"] = "application/json"
|
||||
return requests.delete("http://%s%s" % (self.base_url, uri), *args, **kwargs)
|
||||
|
||||
def delete_task(self, uri, *args, **kwargs):
|
||||
resp = self.delete(uri, *args, **kwargs)
|
||||
if resp.status_code != 202:
|
||||
return resp
|
||||
|
||||
_id = resp.json()['ID']
|
||||
resp = self.get("/api/tasks/" + str(_id) + "/wait")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
|
||||
return self.get("/api/tasks/" + str(_id))
|
||||
|
||||
def upload(self, uri, *filenames, **kwargs):
|
||||
upload_name = kwargs.pop("upload_name", None)
|
||||
directory = kwargs.pop("directory", "files")
|
||||
|
||||
@@ -44,4 +44,6 @@ class GraphAPITest(APITest):
|
||||
|
||||
# remove the repos again
|
||||
for repo in tempRepos:
|
||||
self.check_equal(self.delete("/api/repos/" + repo, params={"force": "1"}).status_code, 200)
|
||||
self.check_equal(self.delete_task(
|
||||
"/api/repos/" + repo, params={"force": "1"}).json()['State'], 2
|
||||
)
|
||||
|
||||
@@ -15,8 +15,8 @@ class PackagesAPITestShow(APITest):
|
||||
self.check_equal(self.upload("/api/files/" + d,
|
||||
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + "/file/" + d)
|
||||
self.check_equal(resp.status_code, 200)
|
||||
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
# get information about package
|
||||
resp = self.get("/api/packages/" + urllib.quote('Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'))
|
||||
|
||||
+183
-178
@@ -26,17 +26,18 @@ class PublishAPITestRepo(APITest):
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
|
||||
self.check_equal(
|
||||
self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
# publishing under prefix, default distribution
|
||||
prefix = self.random_name()
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.post_task(
|
||||
"/api/publish/" + prefix,
|
||||
json={
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
}
|
||||
)
|
||||
repo_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -52,8 +53,7 @@ class PublishAPITestRepo(APITest):
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
@@ -71,14 +71,17 @@ class PublishAPITestRepo(APITest):
|
||||
|
||||
# publishing under root, custom distribution, architectures
|
||||
distribution = self.random_name()
|
||||
resp = self.post("/api/publish/:.",
|
||||
json={
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"Distribution": distribution,
|
||||
"Architectures": ["i386", "amd64"],
|
||||
})
|
||||
resp = self.post_task(
|
||||
"/api/publish/:.",
|
||||
json={
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"Distribution": distribution,
|
||||
"Architectures": ["i386", "amd64"],
|
||||
}
|
||||
)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo2_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['amd64', 'i386'],
|
||||
@@ -93,8 +96,9 @@ class PublishAPITestRepo(APITest):
|
||||
'Sources': [{'Component': 'main', 'Name': repo_name}],
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json(), repo2_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_exists("public/dists/" + distribution + "/Release")
|
||||
self.check_exists("public/dists/" + distribution +
|
||||
@@ -129,27 +133,27 @@ class PublishSnapshotAPITest(APITest):
|
||||
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)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name +
|
||||
'/snapshots', json={'Name': snapshot_name}).status_code, 201)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name}).json()['State'], 2)
|
||||
|
||||
prefix = self.random_name()
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"AcquireByHash": True,
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"Distribution": "squeeze",
|
||||
"NotAutomatic": "yes",
|
||||
"ButAutomaticUpgrades": "yes",
|
||||
"Origin": "earth",
|
||||
"Label": "fun",
|
||||
})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json(), {
|
||||
resp = self.post_task(
|
||||
"/api/publish/" + prefix,
|
||||
json={
|
||||
"AcquireByHash": True,
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"Distribution": "squeeze",
|
||||
"NotAutomatic": "yes",
|
||||
"ButAutomaticUpgrades": "yes",
|
||||
"Origin": "earth",
|
||||
"Label": "fun",
|
||||
}
|
||||
)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': True,
|
||||
'Architectures': ['i386'],
|
||||
'Distribution': 'squeeze',
|
||||
@@ -163,6 +167,9 @@ class PublishSnapshotAPITest(APITest):
|
||||
'Sources': [{'Component': 'main', 'Name': snapshot_name}],
|
||||
'Storage': '',
|
||||
'Suite': ''})
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_exists("public/" + prefix + "/dists/squeeze/Release")
|
||||
self.check_exists("public/" + prefix +
|
||||
@@ -192,19 +199,20 @@ class PublishUpdateAPITestRepo(APITest):
|
||||
"pyspi_0.6.1-1.3.dsc",
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
self.check_equal(
|
||||
self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
prefix = self.random_name()
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.post_task(
|
||||
"/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
}
|
||||
)
|
||||
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
self.check_not_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
@@ -213,19 +221,21 @@ class PublishUpdateAPITestRepo(APITest):
|
||||
|
||||
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)
|
||||
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 2)
|
||||
|
||||
# Update and switch AcquireByHash on.
|
||||
resp = self.put("/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"AcquireByHash": True,
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.put_task(
|
||||
"/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"AcquireByHash": True,
|
||||
"Signing": DefaultSigningOptions,
|
||||
}
|
||||
)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': True,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -241,8 +251,9 @@ class PublishUpdateAPITestRepo(APITest):
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_exists("public/" + prefix +
|
||||
"/dists/wheezy/main/binary-i386/by-hash")
|
||||
@@ -252,8 +263,7 @@ class PublishUpdateAPITestRepo(APITest):
|
||||
self.check_not_exists(
|
||||
"public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
|
||||
self.check_equal(self.delete("/api/publish/" +
|
||||
prefix + "/wheezy").status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy").json()['State'], 2)
|
||||
self.check_not_exists("public/" + prefix + "dists/")
|
||||
|
||||
|
||||
@@ -274,19 +284,18 @@ class PublishUpdateSkipCleanupAPITestRepo(APITest):
|
||||
"pyspi_0.6.1-1.3.dsc",
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
self.check_equal(
|
||||
self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
prefix = self.random_name()
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.post_task("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
self.check_not_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
@@ -295,31 +304,31 @@ class PublishUpdateSkipCleanupAPITestRepo(APITest):
|
||||
|
||||
# Publish two repos, so that deleting one while skipping cleanup will
|
||||
# not delete the whole prefix.
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"Distribution": "otherdist",
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.post_task("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"Distribution": "otherdist",
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
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)
|
||||
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 2)
|
||||
|
||||
resp = self.put("/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"Signing": DefaultSigningOptions,
|
||||
"SkipCleanup": True,
|
||||
})
|
||||
resp = self.put_task("/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"Signing": DefaultSigningOptions,
|
||||
"SkipCleanup": True,
|
||||
})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -335,20 +344,18 @@ class PublishUpdateSkipCleanupAPITestRepo(APITest):
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_exists("public/" + prefix +
|
||||
"/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
|
||||
self.check_equal(self.delete("/api/publish/" + prefix +
|
||||
"/wheezy", params={"SkipCleanup": "1"}).status_code, 200)
|
||||
self.check_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_exists("public/" + prefix +
|
||||
"/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy", params={"SkipCleanup": "1"}).json()['State'], 2)
|
||||
self.check_exists("public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_exists("public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
|
||||
|
||||
class PublishSwitchAPITestRepo(APITest):
|
||||
@@ -368,23 +375,22 @@ class PublishSwitchAPITestRepo(APITest):
|
||||
"pyspi_0.6.1-1.3.dsc",
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
self.check_equal(
|
||||
self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
snapshot1_name = self.random_name()
|
||||
self.check_equal(self.post("/api/repos/" + repo_name +
|
||||
'/snapshots', json={'Name': snapshot1_name}).status_code, 201)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot1_name}).json()['State'], 2)
|
||||
|
||||
prefix = self.random_name()
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot1_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.post_task(
|
||||
"/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot1_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -399,7 +405,9 @@ class PublishSwitchAPITestRepo(APITest):
|
||||
'Sources': [{'Component': 'main', 'Name': snapshot1_name}],
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_not_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
@@ -408,23 +416,23 @@ class PublishSwitchAPITestRepo(APITest):
|
||||
|
||||
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)
|
||||
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 2)
|
||||
|
||||
snapshot2_name = self.random_name()
|
||||
self.check_equal(self.post("/api/repos/" + repo_name +
|
||||
'/snapshots', json={'Name': snapshot2_name}).status_code, 201)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot2_name}).json()['State'], 2)
|
||||
|
||||
resp = self.put("/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"Snapshots": [{"Component": "main", "Name": snapshot2_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"SkipContents": True,
|
||||
})
|
||||
resp = self.put_task(
|
||||
"/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"Snapshots": [{"Component": "main", "Name": snapshot2_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"SkipContents": True,
|
||||
})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -440,16 +448,16 @@ class PublishSwitchAPITestRepo(APITest):
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_not_exists(
|
||||
"public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
|
||||
self.check_equal(self.delete("/api/publish/" +
|
||||
prefix + "/wheezy").status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy").json()['State'], 2)
|
||||
self.check_not_exists("public/" + prefix + "dists/")
|
||||
|
||||
|
||||
@@ -470,23 +478,21 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
|
||||
"pyspi_0.6.1-1.3.dsc",
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
self.check_equal(
|
||||
self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
snapshot1_name = self.random_name()
|
||||
self.check_equal(self.post("/api/repos/" + repo_name +
|
||||
'/snapshots', json={'Name': snapshot1_name}).status_code, 201)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot1_name}).json()['State'], 2)
|
||||
|
||||
prefix = self.random_name()
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot1_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.post_task("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot1_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -501,7 +507,9 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
|
||||
'Sources': [{'Component': 'main', 'Name': snapshot1_name}],
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_not_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
@@ -510,16 +518,16 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
|
||||
|
||||
# Publish two snapshots, so that deleting one while skipping cleanup will
|
||||
# not delete the whole prefix.
|
||||
resp = self.post("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"Distribution": "otherdist",
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot1_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
resp = self.post_task("/api/publish/" + prefix,
|
||||
json={
|
||||
"Architectures": ["i386", "source"],
|
||||
"Distribution": "otherdist",
|
||||
"SourceKind": "snapshot",
|
||||
"Sources": [{"Name": snapshot1_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
|
||||
self.check_equal(resp.status_code, 201)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -534,28 +542,29 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
|
||||
'Sources': [{'Component': 'main', 'Name': snapshot1_name}],
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
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)
|
||||
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 2)
|
||||
|
||||
snapshot2_name = self.random_name()
|
||||
self.check_equal(self.post("/api/repos/" + repo_name +
|
||||
'/snapshots', json={'Name': snapshot2_name}).status_code, 201)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot2_name}).json()['State'], 2)
|
||||
|
||||
resp = self.put("/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"Snapshots": [{"Component": "main", "Name": snapshot2_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"SkipCleanup": True,
|
||||
"SkipContents": True,
|
||||
})
|
||||
resp = self.put_task("/api/publish/" + prefix + "/wheezy",
|
||||
json={
|
||||
"Snapshots": [{"Component": "main", "Name": snapshot2_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
"SkipCleanup": True,
|
||||
"SkipContents": True,
|
||||
})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
repo_expected = {
|
||||
'AcquireByHash': False,
|
||||
'Architectures': ['i386', 'source'],
|
||||
@@ -571,17 +580,13 @@ class PublishSwitchAPISkipCleanupTestRepo(APITest):
|
||||
'Storage': '',
|
||||
'Suite': ''}
|
||||
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), repo_expected)
|
||||
all_repos = self.get("/api/publish")
|
||||
self.check_equal(all_repos.status_code, 200)
|
||||
self.check_in(repo_expected, all_repos.json())
|
||||
|
||||
self.check_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_exists("public/" + prefix +
|
||||
"/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
self.check_exists("public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_exists("public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
|
||||
self.check_equal(self.delete("/api/publish/" + prefix +
|
||||
"/wheezy", params={"SkipCleanup": "1"}).status_code, 200)
|
||||
self.check_exists(
|
||||
"public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_exists("public/" + prefix +
|
||||
"/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
self.check_equal(self.delete_task("/api/publish/" + prefix + "/wheezy", params={"SkipCleanup": "1"}).json()['State'], 2)
|
||||
self.check_exists("public/" + prefix + "/pool/main/b/boost-defaults/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_exists("public/" + prefix + "/pool/main/p/pyspi/pyspi-0.6.1-1.3.stripped.dsc")
|
||||
|
||||
+51
-50
@@ -40,7 +40,7 @@ class ReposAPITestCreateIndexDelete(APITest):
|
||||
names = [repo["Name"] for repo in repos]
|
||||
assert repo_name in names
|
||||
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name).json()['State'], 2)
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name).status_code, 404)
|
||||
|
||||
self.check_equal(self.get("/api/repos/" + repo_name).status_code, 404)
|
||||
@@ -59,26 +59,26 @@ class ReposAPITestCreateIndexDelete(APITest):
|
||||
self.check_equal(self.upload("/api/files/" + d,
|
||||
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + "/file/" + d)
|
||||
self.check_equal(resp.status_code, 200)
|
||||
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/snapshots", json={"Name": repo_name}).status_code, 201)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/snapshots", json={"Name": repo_name}).json()['State'], 2)
|
||||
|
||||
self.check_equal(self.post("/api/publish",
|
||||
self.check_equal(self.post_task("/api/publish",
|
||||
json={
|
||||
"SourceKind": "local",
|
||||
"Sources": [{"Name": repo_name}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
}).status_code, 201)
|
||||
}).json()['State'], 2)
|
||||
|
||||
# repo is not deletable while it is published
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name).status_code, 409)
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name, params={"force": "1"}).status_code, 409)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name).json()['State'], 3)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name, params={"force": "1"}).json()['State'], 3)
|
||||
|
||||
# drop published
|
||||
self.check_equal(self.delete("/api/publish//" + distribution).status_code, 200)
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name).status_code, 409)
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name, params={"force": "1"}).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/publish//" + distribution).json()['State'], 2)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name).json()['State'], 3)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name, params={"force": "1"}).json()['State'], 2)
|
||||
self.check_equal(self.get("/api/repos/" + repo_name).status_code, 404)
|
||||
|
||||
|
||||
@@ -95,14 +95,16 @@ class ReposAPITestAdd(APITest):
|
||||
self.check_equal(self.upload("/api/files/" + d,
|
||||
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + "/file/" + d)
|
||||
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
resp = self.get("/api/tasks/" + str(resp.json()['ID']) + "/output")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), {
|
||||
u'FailedFiles': [],
|
||||
u'Report': {
|
||||
u'Added': [u'pyspi_0.6.1-1.3_source added'],
|
||||
u'Removed': [],
|
||||
u'Warnings': []}})
|
||||
|
||||
self.check_in("Added: pyspi_0.6.1-1.3_source added", resp.content)
|
||||
self.check_equal("Removed: " in resp.content, False)
|
||||
self.check_equal("Failed files: " in resp.content, False)
|
||||
self.check_equal("Warnings: " in resp.content, False)
|
||||
|
||||
self.check_equal(self.get("/api/repos/" + repo_name + "/packages").json(), ['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
|
||||
|
||||
@@ -122,7 +124,7 @@ class ReposAPITestAddNotFullRemove(APITest):
|
||||
self.check_equal(self.upload("/api/files/" + d,
|
||||
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz", "aptly.pub").status_code, 200)
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
self.check_equal(self.get("/api/repos/" + repo_name + "/packages").json(), ['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
|
||||
|
||||
self.check_exists("upload/" + d + "/aptly.pub")
|
||||
@@ -142,7 +144,7 @@ class ReposAPITestAddNoRemove(APITest):
|
||||
self.check_equal(self.upload("/api/files/" + d,
|
||||
"pyspi_0.6.1-1.3.dsc", "pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz").status_code, 200)
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/file/" + d, params={"noRemove": 1}).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d, params={"noRemove": 1}).json()['State'], 2)
|
||||
self.check_equal(self.get("/api/repos/" + repo_name + "/packages").json(), ['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
|
||||
|
||||
self.check_exists("upload/" + d + "/pyspi_0.6.1-1.3.dsc")
|
||||
@@ -161,14 +163,16 @@ class ReposAPITestAddFile(APITest):
|
||||
self.check_equal(self.upload("/api/files/" + d,
|
||||
"libboost-program-options-dev_1.49.0.1_i386.deb").status_code, 200)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + "/file/" + d + "/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
resp = self.post_task("/api/repos/" + repo_name + "/file/" + d + "/libboost-program-options-dev_1.49.0.1_i386.deb")
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
resp = self.get("/api/tasks/" + str(resp.json()['ID']) + "/output")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), {
|
||||
u'FailedFiles': [],
|
||||
u'Report': {
|
||||
u'Added': [u'libboost-program-options-dev_1.49.0.1_i386 added'],
|
||||
u'Removed': [],
|
||||
u'Warnings': []}})
|
||||
|
||||
self.check_in("Added: libboost-program-options-dev_1.49.0.1_i386 added", resp.content)
|
||||
self.check_equal("Removed: " in resp.content, False)
|
||||
self.check_equal("Failed files: " in resp.content, False)
|
||||
self.check_equal("Warnings: " in resp.content, False)
|
||||
|
||||
self.check_equal(self.get("/api/repos/" + repo_name + "/packages").json(),
|
||||
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378'])
|
||||
@@ -191,15 +195,12 @@ class ReposAPITestInclude(APITest):
|
||||
"hardlink_0.2.1_amd64.deb", directory='changes')
|
||||
self.check_equal(resp.status_code, 200)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + "/include/" + d, params={"ignoreSignature": 1})
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_equal(resp.json(), {
|
||||
u'FailedFiles': [],
|
||||
u'Report': {
|
||||
u'Added': [u'hardlink_0.2.1_source added', 'hardlink_0.2.1_amd64 added'],
|
||||
u'Removed': [],
|
||||
u'Warnings': []}})
|
||||
resp = self.post_task("/api/repos/" + repo_name + "/include/" + d, params={"ignoreSignature": 1})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
resp = self.get("/api/tasks/" + str(resp.json()['ID']) + "/output")
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_in("Added: hardlink_0.2.1_source added, hardlink_0.2.1_amd64 added", resp.content)
|
||||
self.check_equal(
|
||||
sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
|
||||
[u'Pamd64 hardlink 0.2.1 daf8fcecbf8210ad', u'Psource hardlink 0.2.1 8f72df429d7166e5']
|
||||
@@ -223,7 +224,7 @@ class ReposAPITestShowQuery(APITest):
|
||||
"libboost-program-options-dev_1.49.0.1_i386.deb", "pyspi_0.6.1-1.3.dsc",
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages", params={"q": "pyspi"}).json()),
|
||||
['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e', 'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
|
||||
@@ -256,13 +257,13 @@ class ReposAPITestAddMultiple(APITest):
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/file/" + d + "/pyspi_0.6.1-1.3.dsc",
|
||||
params={"noRemove": 1}).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d + "/pyspi_0.6.1-1.3.dsc",
|
||||
params={"noRemove": 1}).json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
|
||||
['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/file/" + d + "/pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d + "/pyspi-0.6.1-1.3.stripped.dsc").json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
|
||||
['Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e', 'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
|
||||
@@ -284,34 +285,34 @@ class ReposAPITestPackagesAddDelete(APITest):
|
||||
"pyspi_0.6.1-1.3.diff.gz", "pyspi_0.6.1.orig.tar.gz",
|
||||
"pyspi-0.6.1-1.3.stripped.dsc").status_code, 200)
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/file/" + d).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
|
||||
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
|
||||
'Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e',
|
||||
'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
|
||||
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
|
||||
'Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e',
|
||||
'Psource pyspi 0.6.1-1.4 f8f1daa806004e89'])
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/packages/",
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89',
|
||||
'Psource no-such-package 0.6.1-1.4 f8f1daa806004e89']}).status_code, 404)
|
||||
'Psource no-such-package 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 3)
|
||||
|
||||
self.check_equal(self.delete("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
|
||||
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
|
||||
'Psource pyspi 0.6.1-1.3 3a8b37cbd9a3559e'])
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).status_code, 200)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}).json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name + "/packages").json()),
|
||||
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
|
||||
@@ -322,9 +323,9 @@ class ReposAPITestPackagesAddDelete(APITest):
|
||||
|
||||
self.check_equal(self.post("/api/repos", json={"Name": repo_name2, "Comment": "fun repo"}).status_code, 201)
|
||||
|
||||
self.check_equal(self.post("/api/repos/" + repo_name2 + "/packages/",
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name2 + "/packages/",
|
||||
json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89',
|
||||
'Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378']}).status_code, 200)
|
||||
'Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378']}).json()['State'], 2)
|
||||
|
||||
self.check_equal(sorted(self.get("/api/repos/" + repo_name2 + "/packages").json()),
|
||||
['Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378',
|
||||
|
||||
+63
-54
@@ -12,9 +12,8 @@ class SnapshotsAPITestCreateShowEmpty(APITest):
|
||||
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)
|
||||
resp = self.post_task("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
self.check_subset(snapshot_desc, self.get("/api/snapshots/" + snapshot_name).json())
|
||||
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 200)
|
||||
@@ -26,8 +25,8 @@ class SnapshotsAPITestCreateShowEmpty(APITest):
|
||||
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)
|
||||
resp = self.post_task("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.json()['State'], 3)
|
||||
|
||||
|
||||
class SnapshotsAPITestCreateFromRefs(APITest):
|
||||
@@ -47,9 +46,11 @@ class SnapshotsAPITestCreateFromRefs(APITest):
|
||||
|
||||
# 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)
|
||||
self.check_equal(resp.json()['Description'], 'Created as empty')
|
||||
resp = self.post_task("/api/snapshots", json={"Name": empty_snapshot_name})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
self.check_equal(
|
||||
self.get("/api/snapshots/" + empty_snapshot_name).json()['Description'], "Created as empty"
|
||||
)
|
||||
|
||||
# create and upload package to repo to register package in DB
|
||||
repo_name = self.random_name()
|
||||
@@ -57,16 +58,18 @@ class SnapshotsAPITestCreateFromRefs(APITest):
|
||||
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)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
# 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)
|
||||
resp = self.post_task("/api/snapshots", json=snapshot)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
snapshot.pop('SourceSnapshots')
|
||||
snapshot.pop('PackageRefs')
|
||||
resp = self.get("/api/snapshots/" + snapshot_name)
|
||||
self.check_equal(resp.status_code, 200)
|
||||
self.check_subset(snapshot, resp.json())
|
||||
|
||||
self.check_subset(snapshot, self.get("/api/snapshots/" + snapshot_name).json())
|
||||
@@ -75,10 +78,10 @@ class SnapshotsAPITestCreateFromRefs(APITest):
|
||||
self.check_equal(resp.json(), ["Pi386 libboost-program-options-dev 1.49.0.1 918d2f433384e378"])
|
||||
|
||||
# create snapshot with unreferenced package
|
||||
resp = self.post("/api/snapshots", json={
|
||||
resp = self.post_task("/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)
|
||||
self.check_equal(resp.json()['State'], 3)
|
||||
|
||||
# list snapshots
|
||||
resp = self.get("/api/snapshots", params={"sort": "time"})
|
||||
@@ -96,8 +99,8 @@ class SnapshotsAPITestCreateFromRepo(APITest):
|
||||
snapshot_name = self.random_name()
|
||||
self.check_equal(self.post("/api/repos", json={"Name": repo_name}).status_code, 201)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
self.check_equal([],
|
||||
self.get("/api/snapshots/" + snapshot_name + "/packages", params={"format": "details"}).json())
|
||||
|
||||
@@ -106,10 +109,10 @@ class SnapshotsAPITestCreateFromRepo(APITest):
|
||||
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)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 200)
|
||||
|
||||
self.check_subset({u'Architecture': 'i386',
|
||||
@@ -126,8 +129,8 @@ class SnapshotsAPITestCreateFromRepo(APITest):
|
||||
params={"format": "details", "q": "Version (> 0.6.1-1.4)"}).json()[0])
|
||||
|
||||
# duplicate snapshot name
|
||||
resp = self.post("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.status_code, 400)
|
||||
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.json()['State'], 3)
|
||||
|
||||
|
||||
class SnapshotsAPITestCreateUpdate(APITest):
|
||||
@@ -139,13 +142,13 @@ class SnapshotsAPITestCreateUpdate(APITest):
|
||||
snapshot_desc = {u'Description': u'fun snapshot',
|
||||
u'Name': snapshot_name}
|
||||
|
||||
resp = self.post("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
new_snapshot_name = self.random_name()
|
||||
resp = self.put("/api/snapshots/" + snapshot_name, json={'Name': new_snapshot_name,
|
||||
'Description': 'New description'})
|
||||
self.check_equal(resp.status_code, 200)
|
||||
resp = self.put_task("/api/snapshots/" + snapshot_name, json={'Name': new_snapshot_name,
|
||||
'Description': 'New description'})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
resp = self.get("/api/snapshots/" + new_snapshot_name)
|
||||
self.check_equal(resp.status_code, 200)
|
||||
@@ -153,9 +156,9 @@ class SnapshotsAPITestCreateUpdate(APITest):
|
||||
"Description": "New description"}, resp.json())
|
||||
|
||||
# duplicate name
|
||||
resp = self.put("/api/snapshots/" + new_snapshot_name, json={'Name': new_snapshot_name,
|
||||
'Description': 'New description'})
|
||||
self.check_equal(resp.status_code, 409)
|
||||
resp = self.put_task("/api/snapshots/" + new_snapshot_name, json={'Name': new_snapshot_name,
|
||||
'Description': 'New description'})
|
||||
self.check_equal(resp.json()['State'], 3)
|
||||
|
||||
# missing snapshot
|
||||
resp = self.put("/api/snapshots/" + snapshot_name, json={})
|
||||
@@ -172,36 +175,42 @@ class SnapshotsAPITestCreateDelete(APITest):
|
||||
u'Name': snapshot_name}
|
||||
|
||||
# deleting unreferenced snapshot
|
||||
resp = self.post("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task("/api/snapshots", json=snapshot_desc)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
self.check_equal(self.delete("/api/snapshots/" + snapshot_name).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/snapshots/" + snapshot_name).json()['State'], 2)
|
||||
|
||||
self.check_equal(self.get("/api/snapshots/" + snapshot_name).status_code, 404)
|
||||
|
||||
# deleting referenced snapshot
|
||||
snap1, snap2 = self.random_name(), self.random_name()
|
||||
self.check_equal(self.post("/api/snapshots", json={"Name": snap1}).status_code, 201)
|
||||
self.check_equal(self.post("/api/snapshots", json={"Name": snap2, "SourceSnapshots": [snap1]}).status_code, 201)
|
||||
self.check_equal(self.post_task("/api/snapshots", json={"Name": snap1}).json()['State'], 2)
|
||||
self.check_equal(
|
||||
self.post_task(
|
||||
"/api/snapshots", json={"Name": snap2, "SourceSnapshots": [snap1]}
|
||||
).json()['State'], 2
|
||||
)
|
||||
|
||||
self.check_equal(self.delete("/api/snapshots/" + snap1).status_code, 409)
|
||||
self.check_equal(self.delete_task("/api/snapshots/" + snap1).json()['State'], 3)
|
||||
self.check_equal(self.get("/api/snapshots/" + snap1).status_code, 200)
|
||||
self.check_equal(self.delete("/api/snapshots/" + snap1, params={"force": "1"}).status_code, 200)
|
||||
self.check_equal(self.delete_task("/api/snapshots/" + snap1, params={"force": "1"}).json()['State'], 2)
|
||||
self.check_equal(self.get("/api/snapshots/" + snap1).status_code, 404)
|
||||
|
||||
# deleting published snapshot
|
||||
resp = self.post("/api/publish",
|
||||
json={
|
||||
"SourceKind": "snapshot",
|
||||
"Distribution": "trusty",
|
||||
"Architectures": ["i386"],
|
||||
"Sources": [{"Name": snap2}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task(
|
||||
"/api/publish",
|
||||
json={
|
||||
"SourceKind": "snapshot",
|
||||
"Distribution": "trusty",
|
||||
"Architectures": ["i386"],
|
||||
"Sources": [{"Name": snap2}],
|
||||
"Signing": DefaultSigningOptions,
|
||||
}
|
||||
)
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
self.check_equal(self.delete("/api/snapshots/" + snap2).status_code, 409)
|
||||
self.check_equal(self.delete("/api/snapshots/" + snap2, params={"force": "1"}).status_code, 409)
|
||||
self.check_equal(self.delete_task("/api/snapshots/" + snap2).json()['State'], 3)
|
||||
self.check_equal(self.delete_task("/api/snapshots/" + snap2, params={"force": "1"}).json()['State'], 3)
|
||||
|
||||
|
||||
class SnapshotsAPITestSearch(APITest):
|
||||
@@ -218,10 +227,10 @@ class SnapshotsAPITestSearch(APITest):
|
||||
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)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshot_name})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
resp = self.get("/api/snapshots/" + snapshot_name + "/packages",
|
||||
params={"q": "libboost-program-options-dev", "format": "details"})
|
||||
@@ -252,13 +261,13 @@ class SnapshotsAPITestDiff(APITest):
|
||||
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)
|
||||
self.check_equal(self.post_task("/api/repos/" + repo_name + "/file/" + d).json()['State'], 2)
|
||||
|
||||
resp = self.post("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshots[0]})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task("/api/repos/" + repo_name + '/snapshots', json={'Name': snapshots[0]})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
resp = self.post("/api/snapshots", json={'Name': snapshots[1]})
|
||||
self.check_equal(resp.status_code, 201)
|
||||
resp = self.post_task("/api/snapshots", json={'Name': snapshots[1]})
|
||||
self.check_equal(resp.json()['State'], 2)
|
||||
|
||||
resp = self.get("/api/snapshots/" + snapshots[0] + "/diff/" + snapshots[1])
|
||||
self.check_equal(resp.status_code, 200)
|
||||
|
||||
Reference in New Issue
Block a user