1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
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)
|