def should_serve(self, request): """ When requested, the endpoint should serve the packages """ ret = package_versions(self.package, request) self.assertEqual( ret, { "pkgs": { self.package.filename: { "url": self.package.get_url(request), "requires_python": None, } } }, ) # Check the /json endpoint too ret = package_versions_json(self.package, request) self.assertEqual( ret["releases"], { "1.1": [{ "filename": self.package.filename, "url": self.package.get_url(request), }] }, )
def should_serve_hashes(self, request): """When requested, the endpoint should serve the packages with hashes""" ret = package_versions(self.package3, request) self.assertEqual( ret, { "pkgs": { self.package3.filename: { "url": self.package3.get_url(request), "requires_python": None, "hash_sha256": "sha", "hash_md5": "md5", "non_hashed_url": self.package3.get_url(request), } } }, ) # Check the /json endpoint too ret = package_versions_json(self.package3, request) self.assertEqual( ret["releases"], { "2.1": [ { "filename": self.package3.filename, "packagetype": "sdist", "url": self.package.get_url(request), "md5_digest": "md5", "digests": {"sha256": "sha", "md5": "md5"}, "requires_python": None, } ] }, )
def test_list_versions(self): """ Listing package versions should return api call """ self.request.registry.use_fallback = False pkg = Package('mypkg', '1.1', 'mypkg-1.1.tar.gz', datetime.utcnow()) self.request.db.upload(pkg.name, pkg.version, pkg.path, None) context = SimplePackageResource(self.request, 'mypkg') result = package_versions(context, self.request) self.assertEqual(result, {'pkgs': [pkg]})
def should_serve(self, request): """ When requested, the endpoint should serve the packages """ ret = package_versions(self.package, request) self.assertEqual( ret, {'pkgs': { self.package.filename: self.package.get_url(request), }})
def should_serve_and_redirect(self, request): """ Should serve mixture of package urls and redirect urls """ ret = package_versions(self.package, request) f2name = self.package2.filename self.assertEqual( ret, {"pkgs": {self.package.filename: self.package.get_url(request), f2name: self.fallback_packages[f2name]}}, )
def test_no_dists(self): """ If no distributions found at fallback, return 404 """ locator = self.request.locator = MagicMock() locator.get_project.return_value = { 'urls': {} } result = package_versions(self.context, self.request) self.assertEqual(result.status_code, 404)
def test_list_versions_fallback(self): """ Listing package versions can fall back to external url """ self.request.registry.use_fallback = True fb = self.request.registry.fallback_url = 'http://pypi.com' context = SimplePackageResource(self.request, 'mypkg') result = package_versions(context, self.request) url = fb + '/' + context.name + '/' self.assertTrue(isinstance(result, HTTPFound)) self.assertEqual(result.location, url)
def test_package_read_user(self): """ Package, read perms, user. """ # Should serve mixture of package urls and redirect urls req = self.get_request(self.package, "r", "foo") ret = package_versions(self.package, req) f2name = self.package2.filename self.assertEqual( ret, {"pkgs": {self.package.filename: self.package.get_url(req), f2name: self.fallback_packages[f2name]}} )
def test_package_write_user(self): """ Package, write perms, user. """ # Should serve package urls and fallback urls req = self.get_request(self.package, 'rc', 'foo') ret = package_versions(self.package, req) p2 = self.package2 self.assertEqual(ret, {'pkgs': { self.package.filename: self.package.get_url(req), self.package2.filename: self.fallback_packages[p2.filename], }})
def test_list_versions(self): """ Listing package versions should return api call """ self.request.registry.use_fallback = False pkg = Package('mypkg', '1.1', 'mypkg-1.1.tar.gz', datetime.utcnow()) self.request.db.upload(pkg.filename, None) context = SimplePackageResource(self.request, 'mypkg') self.request.app_url = MagicMock() result = package_versions(context, self.request) self.assertEqual(result, {'pkgs': {pkg.filename: self.request.app_url()}})
def should_serve_and_redirect(self, request): """ Should serve mixture of package urls and redirect urls """ ret = package_versions(self.package, request) f2name = self.package2.filename self.assertEqual( ret, { 'pkgs': { self.package.filename: self.package.get_url(request), f2name: self.fallback_packages[f2name], } })
def test_list_versions(self): """ Listing package versions should return api call """ self.request.registry.use_fallback = False pkg = Package('mypkg', '1.1', 'mypkg-1.1.tar.gz', datetime.utcnow()) self.request.db.upload(pkg.filename, None) context = SimplePackageResource(self.request, 'mypkg') self.request.app_url = MagicMock() result = package_versions(context, self.request) self.assertEqual(result, {'pkgs': { pkg.filename: self.request.app_url() }})
def test_package_read_user(self): """ Package, read perms, user. """ # Should serve mixture of package urls and redirect urls req = self.get_request(self.package, 'r', 'foo') ret = package_versions(self.package, req) f2name = self.package2.filename self.assertEqual( ret, { 'pkgs': { self.package.filename: self.package.get_url(req), f2name: self.fallback_packages[f2name], } })
def test_rename_dists(self, locator): """ Rename distribution urls to localhost """ dist = MagicMock(spec=Distribution) dist.source_url = 'http://fallback.com/simple/pkg-1.1.tar.gz' dist.name = 'pkg' locator().get_project.return_value = { 'pkg-1.1.tar.gz': dist, } self.request.app_url = lambda *x: '/'.join(x) result = package_versions(self.context, self.request) self.assertEqual(result, {'pkgs': { 'pkg-1.1.tar.gz': 'api/package/pkg/pkg-1.1.tar.gz', }})
def test_package_write_user(self): """ Package, write perms, user. """ # Should serve package urls and fallback urls req = self.get_request(self.package, 'rc', 'foo') ret = package_versions(self.package, req) p2 = self.package2 self.assertEqual( ret, { 'pkgs': { self.package.filename: self.package.get_url(req), self.package2.filename: self.fallback_packages[p2.filename], } })
def test_package_write_no_user(self): """ Package, write perms, no user. """ # Should serve package urls and fallback urls req = self.get_request(self.package, "rc") ret = package_versions(self.package, req) p2 = self.package2 self.assertEqual( ret, { "pkgs": { self.package.filename: self.package.get_url(req), self.package2.filename: self.fallback_packages[p2.filename], } }, )
def test_rename_dists(self, locator): """ Rename distribution urls to localhost """ dist = MagicMock(spec=Distribution) dist.source_url = 'http://fallback.com/simple/pkg-1.1.tar.gz' dist.name = 'pkg' locator().get_project.return_value = { 'pkg-1.1.tar.gz': dist, } self.request.app_url = lambda *x: '/'.join(x) result = package_versions(self.context, self.request) self.assertEqual( result, {'pkgs': { 'pkg-1.1.tar.gz': 'api/package/pkg/pkg-1.1.tar.gz', }})
def should_serve_and_redirect(self, request): """ Should serve mixture of package urls and redirect urls """ ret = package_versions(self.package, request) f2name = self.package2.filename self.assertEqual( ret, { "pkgs": { self.package.filename: { "url": self.package.get_url(request), "requires_python": None, }, f2name: self.fallback_packages[f2name], } }, )
def test_package_write_user(self): """ Package, write perms, user. """ # Should serve package urls and fallback urls req = self.get_request(self.package, "rc", "foo") ret = package_versions(self.package, req) p2 = self.package2 self.assertEqual( ret, { "pkgs": { self.package.filename: { "url": self.package.get_url(req), "requires_python": None, }, self.package2.filename: self.fallback_packages[p2.filename], } }, )
def should_serve(self, request): """ When requested, the endpoint should serve the packages """ ret = package_versions(self.package, request) self.assertEqual( ret, {"pkgs": {self.package.filename: self.package.get_url(request)}} ) # Check the /json endpoint too ret = package_versions_json(self.package, request) self.assertEqual( ret["releases"], { "1.1": [ { "filename": self.package.filename, "url": self.package.get_url(request), } ] }, )
def should_serve(self, request): """ When requested, the endpoint should serve the packages """ ret = package_versions(self.package, request) self.assertEqual( ret, {'pkgs': { self.package.filename: self.package.get_url(request), }}) # Check the /json endpoint too ret = package_versions_json(self.package, request) self.assertEqual( ret['releases'], { '1.1': [ { 'filename': self.package.filename, 'url': self.package.get_url(request), }, ], })
def should_403(self, request): """ When requested, the endpoint should return a 403 """ ret = package_versions(self.package, request) self.assertEqual(ret.status_code, 403)
def test_no_dists(self, locator): """ If no distributions found at fallback, return 404 """ locator().get_project.return_value = {} result = package_versions(self.context, self.request) self.assertEqual(result.status_code, 404)
def test_no_perms(self): """ If not in the update_cache groups, return 403 """ self.request.access.can_update_cache.return_value = False result = package_versions(self.context, self.request) self.assertEqual(result, self.request.forbid())
def test_list_versions_fallback_none(self): """ Listing package versions with no fallback returns 404 """ self.request.registry.fallback = 'none' context = SimplePackageResource(self.request, 'mypkg') result = package_versions(context, self.request) self.assertEqual(result.status_code, 404)
def should_cache(self, request): """ When requested, the endpoint should serve the fallback packages """ ret = package_versions(self.package, request) self.assertEqual(ret, {"pkgs": self.fallback_packages})
def should_redirect(self, request): """ When requested, the endpoint should redirect to the fallback """ ret = package_versions(self.package, request) self.assertEqual(ret.status_code, 302) self.assertEqual(ret.location, self.fallback_url + self.package.name + "/")
def should_403(self, request): """When requested, the endpoint should return a 403""" ret = package_versions(self.package, request) self.assertEqual(ret.status_code, 403)
def should_redirect(self, request): """When requested, the endpoint should redirect to the fallback""" ret = package_versions(self.package, request) self.assertEqual(ret.status_code, 302) self.assertEqual(ret.location, self.fallback_url + self.package.name + "/")
def should_serve(self, request): """ When requested, the endpoint should serve the packages """ ret = package_versions(self.package, request) self.assertEqual(ret, {"pkgs": {self.package.filename: self.package.get_url(request)}})
def should_cache(self, request): """When requested, the endpoint should serve the fallback packages""" ret = package_versions(self.package, request) self.assertEqual(ret, {"pkgs": self.fallback_packages})