Merge pull request #208 from travis-ci/cd-v3-parity
Add owner/github_id/:github_id endpoint
This commit is contained in:
commit
b4fa2220a7
|
@ -1,9 +1,10 @@
|
||||||
module Travis::API::V3
|
module Travis::API::V3
|
||||||
class Queries::Organization < Query
|
class Queries::Organization < Query
|
||||||
params :id, :login
|
params :id, :login, :github_id
|
||||||
|
|
||||||
def find
|
def find
|
||||||
return Models::Organization.find_by_id(id) if id
|
return Models::Organization.find_by_id(id) if id
|
||||||
|
return Models::Organization.find_by_github_id(github_id) if github_id
|
||||||
return Models::Organization.where('lower(login) = ?'.freeze, login.downcase).first if login
|
return Models::Organization.where('lower(login) = ?'.freeze, login.downcase).first if login
|
||||||
raise WrongParams, 'missing organization.id or organization.login'.freeze
|
raise WrongParams, 'missing organization.id or organization.login'.freeze
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,6 +9,7 @@ module Travis::API::V3
|
||||||
def query(type, main_type: self.main_type, params: self.params)
|
def query(type, main_type: self.main_type, params: self.params)
|
||||||
main_type = type if main_type == :owner
|
main_type = type if main_type == :owner
|
||||||
params = params.merge("#{type}.login" => params["owner.login".freeze]) if params["owner.login".freeze]
|
params = params.merge("#{type}.login" => params["owner.login".freeze]) if params["owner.login".freeze]
|
||||||
|
params = params.merge("#{type}.github_id" => params["owner.github_id".freeze]) if params["owner.github_id".freeze]
|
||||||
Queries[type].new(params, main_type, service: @service)
|
Queries[type].new(params, main_type, service: @service)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
module Travis::API::V3
|
module Travis::API::V3
|
||||||
class Queries::User < Query
|
class Queries::User < Query
|
||||||
params :id, :login, :email
|
params :id, :login, :email, :github_id
|
||||||
|
|
||||||
def find
|
def find
|
||||||
return Models::User.find_by_id(id) if id
|
return Models::User.find_by_id(id) if id
|
||||||
|
return Models::User.find_by_github_id(github_id) if github_id
|
||||||
return Models::User.where('lower(login) = ?'.freeze, login.downcase).first if login
|
return Models::User.where('lower(login) = ?'.freeze, login.downcase).first if login
|
||||||
return find_by_email(email) if email
|
return find_by_email(email) if email
|
||||||
raise WrongParams, 'missing user.id or user.login'.freeze
|
raise WrongParams, 'missing user.id or user.login'.freeze
|
||||||
|
|
|
@ -48,7 +48,7 @@ module Travis::API::V3
|
||||||
end
|
end
|
||||||
|
|
||||||
resource :owner do
|
resource :owner do
|
||||||
route '/owner/({owner.login}|{user.login}|{organization.login})'
|
route '/owner/({owner.login}|{user.login}|{organization.login}|github_id/{owner.github_id})'
|
||||||
get :find
|
get :find
|
||||||
|
|
||||||
resource :repositories do
|
resource :repositories do
|
||||||
|
|
|
@ -2,11 +2,11 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Travis::API::V3::Services::Owner::Find do
|
describe Travis::API::V3::Services::Owner::Find do
|
||||||
describe "organization" do
|
describe "organization" do
|
||||||
let(:org) { Travis::API::V3::Models::Organization.new(login: 'example-org') }
|
let(:org) { Travis::API::V3::Models::Organization.new(login: 'example-org', github_id: 1234) }
|
||||||
before { org.save! }
|
before { org.save! }
|
||||||
after { org.delete }
|
after { org.delete }
|
||||||
|
|
||||||
describe 'existing org, public api' do
|
describe 'existing org, public api, by login' do
|
||||||
before { get("/v3/owner/example-org") }
|
before { get("/v3/owner/example-org") }
|
||||||
example { expect(last_response).to be_ok }
|
example { expect(last_response).to be_ok }
|
||||||
example { expect(JSON.load(body)).to be == {
|
example { expect(JSON.load(body)).to be == {
|
||||||
|
@ -17,7 +17,23 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => org.id,
|
"id" => org.id,
|
||||||
"login" => "example-org",
|
"login" => "example-org",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 1234,
|
||||||
|
"avatar_url" => nil
|
||||||
|
}}
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'existing org, public api, by github_id' do
|
||||||
|
before { get("/v3/owner/github_id/1234") }
|
||||||
|
example { expect(last_response).to be_ok }
|
||||||
|
example { expect(JSON.load(body)).to be == {
|
||||||
|
"@type" => "organization",
|
||||||
|
"@href" => "/v3/org/#{org.id}",
|
||||||
|
"@representation" => "standard",
|
||||||
|
"@permissions" => { "read"=>true, "sync"=>false },
|
||||||
|
"id" => org.id,
|
||||||
|
"login" => "example-org",
|
||||||
|
"name" => nil,
|
||||||
|
"github_id" => 1234,
|
||||||
"avatar_url" => nil
|
"avatar_url" => nil
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
|
@ -38,7 +54,7 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => org.id,
|
"id" => org.id,
|
||||||
"login" => "example-org",
|
"login" => "example-org",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 1234,
|
||||||
"avatar_url" => nil,
|
"avatar_url" => nil,
|
||||||
"repositories" => [{
|
"repositories" => [{
|
||||||
"@type" => "repository",
|
"@type" => "repository",
|
||||||
|
@ -82,7 +98,7 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => org.id,
|
"id" => org.id,
|
||||||
"login" => "example-org",
|
"login" => "example-org",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 1234,
|
||||||
"avatar_url" => nil,
|
"avatar_url" => nil,
|
||||||
"repositories" => [{
|
"repositories" => [{
|
||||||
"@type" => "repository",
|
"@type" => "repository",
|
||||||
|
@ -121,7 +137,7 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => org.id,
|
"id" => org.id,
|
||||||
"login" => "example-org",
|
"login" => "example-org",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 1234,
|
||||||
"avatar_url" => nil
|
"avatar_url" => nil
|
||||||
}}
|
}}
|
||||||
end
|
end
|
||||||
|
@ -141,7 +157,7 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => org.id,
|
"id" => org.id,
|
||||||
"login" => "example-org",
|
"login" => "example-org",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 1234,
|
||||||
"avatar_url" => nil,
|
"avatar_url" => nil,
|
||||||
"@warnings" => [{
|
"@warnings" => [{
|
||||||
"@type" => "warning",
|
"@type" => "warning",
|
||||||
|
@ -153,11 +169,11 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "user" do
|
describe "user" do
|
||||||
let(:user) { Travis::API::V3::Models::User.new(login: 'example-user') }
|
let(:user) { Travis::API::V3::Models::User.new(login: 'example-user', github_id: 5678) }
|
||||||
before { user.save! }
|
before { user.save! }
|
||||||
after { user.delete }
|
after { user.delete }
|
||||||
|
|
||||||
describe 'existing user, public api' do
|
describe 'existing user, public api, by login' do
|
||||||
before { get("/v3/owner/example-user") }
|
before { get("/v3/owner/example-user") }
|
||||||
example { expect(last_response).to be_ok }
|
example { expect(last_response).to be_ok }
|
||||||
example { expect(JSON.load(body)).to be == {
|
example { expect(JSON.load(body)).to be == {
|
||||||
|
@ -168,7 +184,25 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => user.id,
|
"id" => user.id,
|
||||||
"login" => "example-user",
|
"login" => "example-user",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 5678,
|
||||||
|
"avatar_url" => nil,
|
||||||
|
"is_syncing" => nil,
|
||||||
|
"synced_at" => nil
|
||||||
|
}}
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'existing user, public api, by github_id' do
|
||||||
|
before { get("/v3/owner/github_id/5678") }
|
||||||
|
example { expect(last_response).to be_ok }
|
||||||
|
example { expect(JSON.load(body)).to be == {
|
||||||
|
"@type" => "user",
|
||||||
|
"@href" => "/v3/user/#{user.id}",
|
||||||
|
"@representation"=> "standard",
|
||||||
|
"@permissions" => {"read"=>true, "sync"=>false},
|
||||||
|
"id" => user.id,
|
||||||
|
"login" => "example-user",
|
||||||
|
"name" => nil,
|
||||||
|
"github_id" => 5678,
|
||||||
"avatar_url" => nil,
|
"avatar_url" => nil,
|
||||||
"is_syncing" => nil,
|
"is_syncing" => nil,
|
||||||
"synced_at" => nil
|
"synced_at" => nil
|
||||||
|
@ -186,7 +220,7 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => user.id,
|
"id" => user.id,
|
||||||
"login" => "example-user",
|
"login" => "example-user",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 5678,
|
||||||
"avatar_url" => nil,
|
"avatar_url" => nil,
|
||||||
"is_syncing" => nil,
|
"is_syncing" => nil,
|
||||||
"synced_at" => nil
|
"synced_at" => nil
|
||||||
|
@ -208,7 +242,7 @@ describe Travis::API::V3::Services::Owner::Find do
|
||||||
"id" => user.id,
|
"id" => user.id,
|
||||||
"login" => "example-user",
|
"login" => "example-user",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"github_id" => nil,
|
"github_id" => 5678,
|
||||||
"avatar_url" => nil,
|
"avatar_url" => nil,
|
||||||
"is_syncing" => nil,
|
"is_syncing" => nil,
|
||||||
"synced_at" => nil,
|
"synced_at" => nil,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user