示例#1
0
 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),
             }]
         },
     )
示例#2
0
 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,
                 }
             ]
         },
     )
示例#3
0
 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]})
示例#4
0
 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),
         }})
示例#5
0
 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]}},
     )
示例#6
0
 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]})
示例#7
0
 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)
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
 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]}}
     )
示例#11
0
 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],
     }})
示例#12
0
 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()}})
示例#13
0
 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],
             }
         })
示例#14
0
 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()
                      }})
示例#15
0
 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],
             }
         })
示例#16
0
 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',
     }})
示例#17
0
 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],
             }
         })
示例#18
0
 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],
             }
         },
     )
示例#19
0
 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',
         }})
示例#20
0
 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],
             }
         },
     )
示例#21
0
 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],
             }
         },
     )
示例#22
0
 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],
             }
         },
     )
示例#23
0
 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),
                 }
             ]
         },
     )
示例#24
0
 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),
                 },
             ],
         })
示例#25
0
 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)
示例#26
0
 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)
示例#27
0
 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())
示例#28
0
 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)
示例#29
0
 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)
示例#30
0
 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})
示例#31
0
 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 + "/")
示例#32
0
 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)
示例#33
0
 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)
示例#34
0
 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 + "/")
示例#35
0
 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)}})
示例#36
0
 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})
示例#37
0
 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())