def test_only_prereleases(self, monkeypatch, db_request): project = ProjectFactory.create() ReleaseFactory.create(project=project, version="1.0.dev0") ReleaseFactory.create(project=project, version="2.0.dev0") release = ReleaseFactory.create(project=project, version="3.0.dev0") response = pretend.stub() json_release = pretend.call_recorder(lambda ctx, request: response) monkeypatch.setattr(json, "json_release", json_release) resp = json.json_project(project, db_request) assert resp is response assert json_release.calls == [pretend.call(release, db_request)]
def test_calls_release_detail(self, monkeypatch, db_request): project = ProjectFactory.create() ReleaseFactory.create(project=project, version="1.0") ReleaseFactory.create(project=project, version="2.0") release = ReleaseFactory.create(project=project, version="3.0") response = pretend.stub() json_release = pretend.call_recorder(lambda ctx, request: response) monkeypatch.setattr(json, "json_release", json_release) resp = json.json_project(project, db_request) assert resp is response assert json_release.calls == [pretend.call(release, db_request)]
def test_normalizing_redirects(self, db_request): project = ProjectFactory.create() name = project.name.lower() if name == project.name: name = project.name.upper() db_request.matchdict = {"name": name} db_request.current_route_path = pretend.call_recorder( lambda name: "/project/the-redirect/" ) resp = json.json_project(project, db_request) assert isinstance(resp, HTTPMovedPermanently) assert resp.headers["Location"] == "/project/the-redirect/" _assert_has_cors_headers(resp.headers) assert db_request.current_route_path.calls == [pretend.call(name=project.name)]
def test_normalizing_redirects(self, db_request): project = ProjectFactory.create() name = project.name.lower() if name == project.name: name = project.name.upper() db_request.matchdict = {"name": name} db_request.current_route_path = pretend.call_recorder( lambda name: "/project/the-redirect/") resp = json.json_project(project, db_request) assert isinstance(resp, HTTPMovedPermanently) assert resp.headers["Location"] == "/project/the-redirect/" assert db_request.current_route_path.calls == [ pretend.call(name=project.name), ]
def test_latest_release_yanked(self, monkeypatch, db_request): """ If the latest version is yanked, the endpoint should fall back on the latest non-prerelease version that is not yanked, if one is available. """ project = ProjectFactory.create() ReleaseFactory.create(project=project, version="1.0") ReleaseFactory.create(project=project, version="3.0", yanked=True) ReleaseFactory.create(project=project, version="3.0.dev0") release = ReleaseFactory.create(project=project, version="2.0") response = pretend.stub() json_release = pretend.call_recorder(lambda ctx, request: response) monkeypatch.setattr(json, "json_release", json_release) resp = json.json_project(project, db_request) assert resp is response assert json_release.calls == [pretend.call(release, db_request)]
def test_all_releases_yanked(self, monkeypatch, db_request): """ If all releases are yanked, the endpoint should return the same release as if none of the releases are yanked. """ project = ProjectFactory.create() ReleaseFactory.create(project=project, version="1.0", yanked=True) ReleaseFactory.create(project=project, version="2.0", yanked=True) ReleaseFactory.create(project=project, version="4.0.dev0", yanked=True) release = ReleaseFactory.create(project=project, version="3.0", yanked=True) response = pretend.stub() json_release = pretend.call_recorder(lambda ctx, request: response) monkeypatch.setattr(json, "json_release", json_release) resp = json.json_project(project, db_request) assert resp is response assert json_release.calls == [pretend.call(release, db_request)]
def test_missing_release(self, db_request): project = ProjectFactory.create() resp = json.json_project(project, db_request) assert isinstance(resp, HTTPNotFound) _assert_has_cors_headers(resp.headers)