From bac3b38153617c42115d6ddb081bed1b115a6b34 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Tue, 28 Apr 2015 12:44:20 +0200 Subject: [PATCH] API v3: specs for /owner/:login/repos endpoint --- spec/v3/services/owner/repositories_spec.rb | 69 +++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 spec/v3/services/owner/repositories_spec.rb diff --git a/spec/v3/services/owner/repositories_spec.rb b/spec/v3/services/owner/repositories_spec.rb new file mode 100644 index 00000000..8f686ebb --- /dev/null +++ b/spec/v3/services/owner/repositories_spec.rb @@ -0,0 +1,69 @@ +require 'spec_helper' + +describe Travis::API::V3::Services::Owner::Repositories do + let(:repo) { Repository.by_slug('svenfuchs/minimal').first } + + let(:token) { Travis::Api::App::AccessToken.create(user: repo.owner, app_id: 1) } + let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} + before { Permission.create(repository: repo, user: repo.owner, pull: true) } + before { repo.update_attribute(:private, true) } + after { repo.update_attribute(:private, false) } + + describe "private repository, private API, authenticated as user with access" do + before { get("/v3/owner/svenfuchs/repos", {}, headers) } + example { expect(last_response).to be_ok } + example { expect(JSON.load(body)).to be == { + "@type" => "repositories", + "@href" => "/v3/owner/svenfuchs/repos", + "repositories" => [{ + "@type" => "repository", + "@href" => "/v3/repo/#{repo.id}", + "id" => repo.id, + "name" => "minimal", + "slug" => "svenfuchs/minimal", + "description" => nil, + "github_language" => nil, + "active" => true, + "private" => true, + "owner" => { + "@type" => "user", + "id" => repo.owner_id, + "login" => "svenfuchs" }, + "last_build" => { + "@type" => "build", + "@href" => "/v3/build/#{repo.last_build_id}", + "id" => repo.last_build_id, + "number" => "2", + "state" => "passed", + "duration" => nil, + "started_at" => "2010-11-12T12:30:00Z", + "finished_at" => "2010-11-12T12:30:20Z"}, + "default_branch" => { + "@type" => "branch", + "@href" => "/v3/repo/#{repo.id}/branch/master", + "name" => "master", + "last_build" => { + "@type" => "build", + "@href" => "/v3/build/#{repo.last_build.id}", + "id" => repo.last_build.id, + "number" => "3", + "state" => "configured", + "duration" => nil, + "started_at" => "2010-11-12T13:00:00Z", + "finished_at" => nil}}}] + }} + end + + describe "filter: private=false" do + before { get("/v3/repos", {"repository.private" => "false"}, headers) } + example { expect(last_response) .to be_ok } + example { expect(JSON.load(body)['repositories']) .to be == [] } + example { expect(JSON.load(body)['@href']) .to be == "/v3/repos?repository.private=false" } + end + + describe "filter: active=false" do + before { get("/v3/repos", {"repository.active" => "false"}, headers) } + example { expect(last_response) .to be_ok } + example { expect(JSON.load(body)['repositories']) .to be == [] } + end +end \ No newline at end of file