mirror of https://github.com/aptly-dev/aptly
100 lines
3.8 KiB
Python
100 lines
3.8 KiB
Python
from api_lib import APITest
|
|
|
|
|
|
class FilesAPITestUpload(APITest):
|
|
"""
|
|
POST /files/:dir
|
|
"""
|
|
|
|
def check(self):
|
|
d = self.random_name()
|
|
resp = self.upload("/api/files/" + d, "pyspi_0.6.1-1.3.dsc")
|
|
self.check_equal(resp.status_code, 200)
|
|
self.check_equal(resp.json(), [d + '/pyspi_0.6.1-1.3.dsc'])
|
|
self.check_exists("upload/" + d + '/pyspi_0.6.1-1.3.dsc')
|
|
|
|
|
|
class FilesAPITestUploadMulti(APITest):
|
|
"""
|
|
POST /files/:dir, GET /files/:dir multi files
|
|
"""
|
|
|
|
def check(self):
|
|
d = self.random_name()
|
|
|
|
self.check_equal(self.get("/api/files/" + d).status_code, 404)
|
|
|
|
resp = 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")
|
|
self.check_equal(resp.status_code, 200)
|
|
self.check_equal(sorted(resp.json()),
|
|
[d + '/pyspi_0.6.1-1.3.diff.gz', d + '/pyspi_0.6.1-1.3.dsc', d + '/pyspi_0.6.1.orig.tar.gz'])
|
|
self.check_exists("upload/" + d + '/pyspi_0.6.1-1.3.dsc')
|
|
self.check_exists("upload/" + d + '/pyspi_0.6.1-1.3.diff.gz')
|
|
self.check_exists("upload/" + d + '/pyspi_0.6.1.orig.tar.gz')
|
|
|
|
resp = self.get("/api/files/" + d)
|
|
self.check_equal(resp.status_code, 200)
|
|
self.check_equal(sorted(resp.json()),
|
|
['pyspi_0.6.1-1.3.diff.gz', 'pyspi_0.6.1-1.3.dsc', 'pyspi_0.6.1.orig.tar.gz'])
|
|
|
|
|
|
class FilesAPITestList(APITest):
|
|
"""
|
|
GET /files/
|
|
"""
|
|
|
|
def check(self):
|
|
d1, d2, d3 = self.random_name(), self.random_name(), self.random_name()
|
|
|
|
resp = self.get("/api/files")
|
|
self.check_equal(resp.status_code, 200)
|
|
self.check_equal(resp.json(), [])
|
|
|
|
self.check_equal(self.upload("/api/files/" + d1, "pyspi_0.6.1-1.3.dsc").status_code, 200)
|
|
self.check_equal(self.upload("/api/files/" + d2, "pyspi_0.6.1-1.3.dsc").status_code, 200)
|
|
self.check_equal(self.upload("/api/files/" + d3, "pyspi_0.6.1-1.3.dsc").status_code, 200)
|
|
|
|
resp = self.get("/api/files")
|
|
self.check_equal(resp.status_code, 200)
|
|
self.check_equal(sorted(resp.json()), sorted([d1, d2, d3]))
|
|
|
|
|
|
class FilesAPITestDelete(APITest):
|
|
"""
|
|
DELETE /files/:dir, DELETE /files/:dir/:name
|
|
"""
|
|
|
|
def check(self):
|
|
d1, d2 = self.random_name(), self.random_name()
|
|
|
|
self.check_equal(self.get("/api/files").json(), [])
|
|
self.check_equal(self.delete("/api/files/" + d1).status_code, 200)
|
|
self.check_equal(self.delete("/api/files/" + d1 + "/" + "pyspi_0.6.1-1.3.dsc").status_code, 200)
|
|
|
|
self.check_equal(self.upload("/api/files/" + d1, "pyspi_0.6.1-1.3.dsc").status_code, 200)
|
|
self.check_equal(self.upload("/api/files/" + d2, "pyspi_0.6.1-1.3.dsc").status_code, 200)
|
|
|
|
self.check_equal(self.delete("/api/files/" + d1).status_code, 200)
|
|
self.check_equal(self.get("/api/files").json(), [d2])
|
|
|
|
self.check_equal(self.delete("/api/files/" + d2 + "/" + "no-such-file").status_code, 200)
|
|
self.check_equal(self.get("/api/files/" + d2).json(), ["pyspi_0.6.1-1.3.dsc"])
|
|
|
|
self.check_equal(self.delete("/api/files/" + d2 + "/" + "pyspi_0.6.1-1.3.dsc").status_code, 200)
|
|
self.check_equal(self.get("/api/files").json(), [d2])
|
|
self.check_equal(self.get("/api/files/" + d2).json(), [])
|
|
|
|
|
|
class FilesAPITestSecurity(APITest):
|
|
"""
|
|
delete & upload security
|
|
"""
|
|
|
|
def check(self):
|
|
self.check_equal(self.delete("/api/files/.").status_code, 404)
|
|
self.check_equal(self.delete("/api/files").status_code, 404)
|
|
self.check_equal(self.delete("/api/files/").status_code, 404)
|
|
self.check_equal(self.delete("/api/files/../.").status_code, 404)
|
|
self.check_equal(self.delete("/api/files/./..").status_code, 404)
|
|
self.check_equal(self.delete("/api/files/dir/..").status_code, 404)
|