v3: add @permissions to organization payload

This commit is contained in:
Konstantin Haase 2015-04-29 14:28:33 +02:00
parent 21aa667b9c
commit 2094b50553
5 changed files with 58 additions and 38 deletions

View File

@ -25,6 +25,10 @@ module Travis::API::V3
protected
def organization_writable?(organization)
organization.members.include? user
end
def repository_writable?(repository)
permission?(:push, repository)
end

View File

@ -0,0 +1,9 @@
require 'travis/api/v3/permissions/generic'
module Travis::API::V3
class Permissions::Organization < Permissions::Generic
def sync?
write?
end
end
end

View File

@ -9,13 +9,14 @@ describe Travis::API::V3::Services::Organization::Find do
before { get("/v3/org/#{org.id}") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"@permissions" => { "read"=>true, "sync"=>false },
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
}}
end
end

View File

@ -18,16 +18,17 @@ describe Travis::API::V3::Services::Organizations::ForCurrentUser do
before { get("/v3/orgs", {}, headers) }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "organizations",
"@href" => "/v3/orgs",
"organizations" => [{
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
"@type" => "organizations",
"@href" => "/v3/orgs",
"organizations" => [{
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"@permissions" => { "read"=>true, "sync"=>true },
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
}]
}}
end

View File

@ -10,13 +10,14 @@ describe Travis::API::V3::Services::Owner::Find do
before { get("/v3/owner/example-org") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"@permissions" => { "read"=>true, "sync"=>false },
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
}}
end
@ -31,6 +32,7 @@ describe Travis::API::V3::Services::Owner::Find do
example { expect(JSON.load(body)).to be == {
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"@permissions" => { "read"=>true, "sync"=>false },
"id" => org.id,
"login" => "example-org",
"name" => nil,
@ -73,6 +75,7 @@ describe Travis::API::V3::Services::Owner::Find do
example { expect(JSON.load(body)).to be == {
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"@permissions" => { "read"=>true, "sync"=>false },
"id" => org.id,
"login" => "example-org",
"name" => nil,
@ -108,13 +111,14 @@ describe Travis::API::V3::Services::Owner::Find do
before { get("/v3/owner/example-ORG") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"@permissions" => { "read"=>true, "sync"=>false },
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
}}
end
@ -126,13 +130,14 @@ describe Travis::API::V3::Services::Owner::Find do
before { get("/v3/owner/example-org?organization.id=#{other.id}") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
"@type" => "organization",
"@href" => "/v3/org/#{org.id}",
"@permissions" => { "read"=>true, "sync"=>false },
"id" => org.id,
"login" => "example-org",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil
}}
end
end