v3: add @permissions to user payload

This commit is contained in:
Konstantin Haase 2015-04-29 14:39:52 +02:00
parent 2094b50553
commit 857f13b26c
5 changed files with 63 additions and 45 deletions

View File

@ -29,6 +29,10 @@ module Travis::API::V3
organization.members.include? user
end
def user_writable?(user)
user == self.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::User < Permissions::Generic
def sync?
write?
end
end
end

View File

@ -151,15 +151,16 @@ describe Travis::API::V3::Services::Owner::Find do
before { get("/v3/owner/example-user") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"id" => user.id,
"login" => "example-user",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil,
"is_syncing" => nil,
"synced_at" => nil
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"@permissions" => {"read"=>true, "sync"=>false},
"id" => user.id,
"login" => "example-user",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil,
"is_syncing" => nil,
"synced_at" => nil
}}
end
@ -167,15 +168,16 @@ describe Travis::API::V3::Services::Owner::Find do
before { get("/v3/owner/example-USER") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"id" => user.id,
"login" => "example-user",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil,
"is_syncing" => nil,
"synced_at" => nil
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"@permissions" => {"read"=>true, "sync"=>false},
"id" => user.id,
"login" => "example-user",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil,
"is_syncing" => nil,
"synced_at" => nil
}}
end
@ -187,15 +189,16 @@ describe Travis::API::V3::Services::Owner::Find do
before { get("/v3/owner/example-user?user.id=#{other.id}") }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"id" => user.id,
"login" => "example-user",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil,
"is_syncing" => nil,
"synced_at" => nil
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"@permissions" => {"read"=>true, "sync"=>false},
"id" => user.id,
"login" => "example-user",
"name" => nil,
"github_id" => nil,
"avatar_url" => nil,
"is_syncing" => nil,
"synced_at" => nil
}}
end
end

View File

@ -10,15 +10,16 @@ describe Travis::API::V3::Services::User::Current do
before { get("/v3/user", {}, headers) }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"id" => user.id,
"login" => "svenfuchs",
"name" =>"Sven Fuchs",
"github_id" => user.github_id,
"avatar_url" => "https://0.gravatar.com/avatar/07fb84848e68b96b69022d333ca8a3e2",
"is_syncing" => user.is_syncing,
"synced_at" => user.synced_at
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"@permissions" => {"read"=>true, "sync"=>true},
"id" => user.id,
"login" => "svenfuchs",
"name" =>"Sven Fuchs",
"github_id" => user.github_id,
"avatar_url" => "https://0.gravatar.com/avatar/07fb84848e68b96b69022d333ca8a3e2",
"is_syncing" => user.is_syncing,
"synced_at" => user.synced_at
}}
end
end

View File

@ -10,15 +10,16 @@ describe Travis::API::V3::Services::User::Find do
before { get("/v3/user/#{user.id}", {}, headers) }
example { expect(last_response).to be_ok }
example { expect(JSON.load(body)).to be == {
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"id" => user.id,
"login" => "svenfuchs",
"name" =>"Sven Fuchs",
"github_id" => user.github_id,
"avatar_url" => "https://0.gravatar.com/avatar/07fb84848e68b96b69022d333ca8a3e2",
"is_syncing" => user.is_syncing,
"synced_at" => user.synced_at
"@type" => "user",
"@href" => "/v3/user/#{user.id}",
"@permissions" => {"read"=>true, "sync"=>true},
"id" => user.id,
"login" => "svenfuchs",
"name" =>"Sven Fuchs",
"github_id" => user.github_id,
"avatar_url" => "https://0.gravatar.com/avatar/07fb84848e68b96b69022d333ca8a3e2",
"is_syncing" => user.is_syncing,
"synced_at" => user.synced_at
}}
end
end