128 lines
4.2 KiB
Ruby
128 lines
4.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Travis::API::V3::ServiceIndex do
|
|
let(:headers) {{ }}
|
|
let(:path) { '/' }
|
|
let(:json) { JSON.load(response.body) }
|
|
let(:response) { get(path, {}, headers) }
|
|
|
|
describe "custom json entry point" do
|
|
let(:expected_resources) {
|
|
{"requests"=>
|
|
{"@type"=>"resource",
|
|
"actions"=>
|
|
{"find"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"GET",
|
|
"uri_template"=>"#{path}repo/{repository.id}/requests"}],
|
|
"create"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"POST",
|
|
"uri_template"=>"#{path}repo/{repository.id}/requests"}]},
|
|
"attributes"=>["requests"]},
|
|
"branch"=>
|
|
{"@type"=>"resource",
|
|
"actions"=>
|
|
{"find"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"GET",
|
|
"uri_template"=>"#{path}repo/{repository.id}/branch/{branch.name}"}]},
|
|
"attributes"=>["name", "last_build", "repository"]},
|
|
"repository"=>
|
|
{"@type"=>"resource",
|
|
"actions"=>
|
|
{"find"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"GET",
|
|
"uri_template"=>"#{path}repo/{repository.id}"}],
|
|
"enable"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"POST",
|
|
"uri_template"=>"#{path}repo/{repository.id}/enable"}],
|
|
"disable"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"POST",
|
|
"uri_template"=>"#{path}repo/{repository.id}/disable"}]},
|
|
"attributes"=>
|
|
["id",
|
|
"slug",
|
|
"name",
|
|
"description",
|
|
"github_language",
|
|
"active",
|
|
"private",
|
|
"owner",
|
|
"last_build",
|
|
"default_branch"]},
|
|
"repositories"=>
|
|
{"@type"=>"resource",
|
|
"actions"=>
|
|
{"for_current_user"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"GET",
|
|
"uri_template"=>"#{path}repos"}]},
|
|
"attributes"=>["repositories"]},
|
|
"build"=>
|
|
{"@type"=>"resource",
|
|
"actions"=>
|
|
{"find"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"GET",
|
|
"uri_template"=>"#{path}build/{build.id}"}]},
|
|
"attributes"=>
|
|
["id",
|
|
"number",
|
|
"state",
|
|
"duration",
|
|
"started_at",
|
|
"finished_at",
|
|
"repository",
|
|
"branch"]},
|
|
"organization"=>
|
|
{"@type"=>"resource",
|
|
"actions"=>
|
|
{"find"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"GET",
|
|
"uri_template"=>"#{path}org/{organization.id}"}]},
|
|
"attributes"=>["id", "login", "name", "github_id"]},
|
|
"organizations"=>
|
|
{"@type"=>"resource",
|
|
"actions"=>
|
|
{"for_current_user"=>
|
|
[{"@type"=>"template",
|
|
"request_method"=>"GET",
|
|
"uri_template"=>"#{path}orgs"}]},
|
|
"attributes"=>["organizations"]}}
|
|
}
|
|
|
|
describe 'with /v3 prefix' do
|
|
let(:path) { '/v3/' }
|
|
specify(:resources) { expect(json['resources']).to be == expected_resources }
|
|
end
|
|
|
|
describe 'with Accept header' do
|
|
let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.3+json' } }
|
|
specify(:resources) { expect(json['resources']).to be == expected_resources }
|
|
end
|
|
|
|
describe 'with Travis-API-Version header' do
|
|
let(:headers) { { 'HTTP_TRAVIS_API_VERSION' => '3' } }
|
|
specify(:resources) { expect(json['resources']).to be == expected_resources }
|
|
end
|
|
end
|
|
|
|
describe "json-home document" do
|
|
describe 'with /v3 prefix' do
|
|
let(:headers) { { 'HTTP_ACCEPT' => 'application/json-home' } }
|
|
let(:path) { '/v3/' }
|
|
specify(:resources) { expect(json['resources']).to include("http://schema.travis-ci.com/rel/repository/find") }
|
|
end
|
|
|
|
describe 'with Travis-API-Version header' do
|
|
let(:headers) { { 'HTTP_ACCEPT' => 'application/json-home', 'HTTP_TRAVIS_API_VERSION' => '3' } }
|
|
specify(:resources) { expect(json['resources']).to include("http://schema.travis-ci.com/rel/repository/find") }
|
|
end
|
|
end
|
|
end
|