feature flag test

This commit is contained in:
Christopher Weyand 2016-03-14 11:03:41 +01:00
parent ca5820e2e3
commit 6c839aebec
12 changed files with 186 additions and 20 deletions

View File

@ -5,6 +5,7 @@ module Travis::API::V3
def run! def run!
raise LoginRequired unless access_control.logged_in? or access_control.full_access? raise LoginRequired unless access_control.logged_in? or access_control.full_access?
raise InsufficientAccess unless Travis::Features.feature_active?(:cron)
raise NotFound unless repository = find(:repository) raise NotFound unless repository = find(:repository)
raise NotFound unless branch = find(:branch, repository) raise NotFound unless branch = find(:branch, repository)
raise Error.new('Invalid value for interval. Interval must be "daily", "weekly" or "monthly"!', status: 422) unless ["daily", "weekly", "monthly"].include?(params["interval"]) raise Error.new('Invalid value for interval. Interval must be "daily", "weekly" or "monthly"!', status: 422) unless ["daily", "weekly", "monthly"].include?(params["interval"])

View File

@ -4,6 +4,7 @@ module Travis::API::V3
def run! def run!
raise LoginRequired unless access_control.logged_in? or access_control.full_access? raise LoginRequired unless access_control.logged_in? or access_control.full_access?
raise InsufficientAccess unless Travis::Features.feature_active?(:cron)
cron = find cron = find
access_control.permissions(cron).delete! access_control.permissions(cron).delete!
cron.destroy cron.destroy

View File

@ -3,6 +3,7 @@ module Travis::API::V3
#params :id #params :id
def run! def run!
raise InsufficientAccess unless Travis::Features.feature_active?(:cron)
find find
end end
end end

View File

@ -2,6 +2,7 @@ module Travis::API::V3
class Services::Cron::ForBranch < Service class Services::Cron::ForBranch < Service
def run! def run!
raise InsufficientAccess unless Travis::Features.feature_active?(:cron)
query.find_for_branch(find(:branch, find(:repository))) query.find_for_branch(find(:branch, find(:repository)))
end end
end end

View File

@ -3,6 +3,7 @@ module Travis::API::V3
paginate paginate
def run! def run!
raise InsufficientAccess unless Travis::Features.feature_active?(:cron)
query.find(find(:repository)) query.find(find(:repository))
end end
end end

View File

@ -2,6 +2,7 @@ module Travis::API::V3
class Services::Crons::Start < Service class Services::Crons::Start < Service
def run! def run!
raise InsufficientAccess unless Travis::Features.feature_active?(:cron)
query.start_all() query.start_all()
end end

View File

@ -11,6 +11,20 @@ describe Travis::API::V3::Services::Cron::Create do
let(:wrong_options) {{ "interval" => "notExisting", "disable_by_build" => false }} let(:wrong_options) {{ "interval" => "notExisting", "disable_by_build" => false }}
let(:parsed_body) { JSON.load(body) } let(:parsed_body) { JSON.load(body) }
before do
Travis::Features.enable_for_all(:cron)
end
describe "no Feature enabled" do
before { Travis::Features.disable_for_all(:cron) }
before { post("/v3/repo/#{repo.id}/branch/#{branch.name}/cron", options, headers)}
example { expect(parsed_body).to be == {
"@type"=> "error",
"error_type"=> "insufficient_access",
"error_message"=> "forbidden"
}}
end
describe "creating a cron job" do describe "creating a cron job" do
before { last_cron } before { last_cron }
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true) } before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true) }

View File

@ -8,6 +8,20 @@ describe Travis::API::V3::Services::Cron::Delete do
let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }} let(:headers) {{ 'HTTP_AUTHORIZATION' => "token #{token}" }}
let(:parsed_body) { JSON.load(body) } let(:parsed_body) { JSON.load(body) }
before do
Travis::Features.enable_for_all(:cron)
end
describe "no Feature enabled" do
before { Travis::Features.disable_for_all(:cron) }
before { delete("/v3/cron/#{cron.id}", {}, headers)}
example { expect(parsed_body).to be == {
"@type"=> "error",
"error_type"=> "insufficient_access",
"error_message"=> "forbidden"
}}
end
describe "deleting a cron job by id" do describe "deleting a cron job by id" do
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true) } before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true) }
before { delete("/v3/cron/#{cron.id}", {}, headers) } before { delete("/v3/cron/#{cron.id}", {}, headers) }

View File

@ -6,6 +6,20 @@ describe Travis::API::V3::Services::Cron::Find do
let(:cron) { Travis::API::V3::Models::Cron.create(branch: branch, interval:'daily') } let(:cron) { Travis::API::V3::Models::Cron.create(branch: branch, interval:'daily') }
let(:parsed_body) { JSON.load(body) } let(:parsed_body) { JSON.load(body) }
before do
Travis::Features.enable_for_all(:cron)
end
describe "no Feature enabled" do
before { Travis::Features.disable_for_all(:cron) }
before { get("/v3/cron/#{cron.id}") }
example { expect(parsed_body).to be == {
"@type"=> "error",
"error_type"=> "insufficient_access",
"error_message"=> "forbidden"
}}
end
describe "fetching a cron job by id" do describe "fetching a cron job by id" do
before { get("/v3/cron/#{cron.id}") } before { get("/v3/cron/#{cron.id}") }
example { expect(last_response).to be_ok } example { expect(last_response).to be_ok }

View File

@ -6,6 +6,20 @@ describe Travis::API::V3::Services::Cron::ForBranch do
let(:cron) { Travis::API::V3::Models::Cron.create(branch: branch, interval:'daily') } let(:cron) { Travis::API::V3::Models::Cron.create(branch: branch, interval:'daily') }
let(:parsed_body) { JSON.load(body) } let(:parsed_body) { JSON.load(body) }
before do
Travis::Features.enable_for_all(:cron)
end
describe "no Feature enabled" do
before { Travis::Features.disable_for_all(:cron) }
before { get("/v3/repo/#{repo.id}/branch/#{branch.name}/cron") }
example { expect(parsed_body).to be == {
"@type"=> "error",
"error_type"=> "insufficient_access",
"error_message"=> "forbidden"
}}
end
describe "fetching all crons by repo id" do describe "fetching all crons by repo id" do
before { cron } before { cron }
before { get("/v3/repo/#{repo.id}/branch/#{branch.name}/cron") } before { get("/v3/repo/#{repo.id}/branch/#{branch.name}/cron") }

View File

@ -6,6 +6,20 @@ describe Travis::API::V3::Services::Crons::ForRepository do
let(:cron) { Travis::API::V3::Models::Cron.create(branch: branch, interval:'daily') } let(:cron) { Travis::API::V3::Models::Cron.create(branch: branch, interval:'daily') }
let(:parsed_body) { JSON.load(body) } let(:parsed_body) { JSON.load(body) }
before do
Travis::Features.enable_for_all(:cron)
end
describe "no Feature enabled" do
before { Travis::Features.disable_for_all(:cron) }
before { get("/v3/repo/#{repo.id}/crons") }
example { expect(parsed_body).to be == {
"@type"=> "error",
"error_type"=> "insufficient_access",
"error_message"=> "forbidden"
}}
end
describe "fetching all crons by repo id" do describe "fetching all crons by repo id" do
before { cron } before { cron }
before { get("/v3/repo/#{repo.id}/crons") } before { get("/v3/repo/#{repo.id}/crons") }

View File

@ -12,74 +12,90 @@ Gem::Specification.new do |s|
"Konstantin Haase", "Konstantin Haase",
"Piotr Sarnacki", "Piotr Sarnacki",
"Sven Fuchs", "Sven Fuchs",
"carlad",
"Hiro Asari", "Hiro Asari",
"Mathias Meyer", "Mathias Meyer",
"Josh Kalderimis", "Josh Kalderimis",
"Henrik Hodne", "Henrik Hodne",
"carlad", "Steffen Kötte",
"Lennard Wolf",
"Tyranja", "Tyranja",
"Andre Arko",
"Dan Buch", "Dan Buch",
"Andre Arko",
"C. Scott Ananian", "C. Scott Ananian",
"Erik Michaels-Ober", "Erik Michaels-Ober",
"Brian Ford", "Brian Ford",
"Jonas Chromik",
"Steffen",
"Steve Richert", "Steve Richert",
"Bryan Goldstein",
"Dan Rice",
"James Dennes",
"María de Antón",
"Nick Schonning",
"Patrick Williams",
"Puneeth Chaganti", "Puneeth Chaganti",
"Thais Camilo and Konstantin Haase", "Thais Camilo and Konstantin Haase",
"Tim Carey-Smith", "Tim Carey-Smith",
"Bryan Goldstein",
"Zachary Scott", "Zachary Scott",
"James Dennes", "rainsun"
"rainsun",
"Nick Schonning",
"Patrick Williams",
"Dan Rice"
] ]
s.email = [ s.email = [
"konstantin.mailinglists@googlemail.com", "konstantin.mailinglists@googlemail.com",
"drogus@gmail.com", "drogus@gmail.com",
"me@svenfuchs.com", "me@svenfuchs.com",
"carla@travis-ci.com",
"asari.ruby@gmail.com", "asari.ruby@gmail.com",
"meyer@paperplanes.de", "meyer@paperplanes.de",
"josh.kalderimis@gmail.com", "josh.kalderimis@gmail.com",
"steffen.koette@gmail.com",
"me@henrikhodne.com", "me@henrikhodne.com",
"henrik@hodne.io", "henrik@hodne.io",
"carlad@users.noreply.github.com",
"konstantin.haase@gmail.com", "konstantin.haase@gmail.com",
"lennardwolf@live.de",
"carla@travis-ci.org", "carla@travis-ci.org",
"tyranja@cassiopeia.uberspace.de", "tyranja@cassiopeia.uberspace.de",
"andre@arko.net", "andre@arko.net",
"svenfuchs@artweb-design.de",
"dan@travis-ci.org", "dan@travis-ci.org",
"sferik@gmail.com", "svenfuchs@artweb-design.de",
"cscott@cscott.net", "cscott@cscott.net",
"henrik@travis-ci.com", "sferik@gmail.com",
"steve.richert@gmail.com",
"bford@engineyard.com", "bford@engineyard.com",
"henrik@travis-ci.com",
"Jonas.Chromik@student.hpi.uni-potsdam.de",
"steffen.koette@gmail.com",
"steve.richert@gmail.com",
"brysgo@gmail.com",
"dan@meatballhat.com",
"dan@zoombody.com",
"jdennes@gmail.com",
"MariadeAnton@users.noreply.github.com",
"nschonni@gmail.com",
"patrick@bittorrent.com", "patrick@bittorrent.com",
"punchagan@muse-amuse.in", "punchagan@muse-amuse.in",
"carlad@users.noreply.github.com",
"dan@zoombody.com",
"rainsuner@gmail.com",
"dev+narwen+rkh@rkh.im", "dev+narwen+rkh@rkh.im",
"tim@spork.in", "tim@spork.in",
"brysgo@gmail.com",
"e@zzak.io", "e@zzak.io",
"jdennes@gmail.com", "rainsuner@gmail.com"
"nschonni@gmail.com",
"dan@meatballhat.com"
] ]
s.files = [ s.files = [
"CONTRIBUTING.md", "CONTRIBUTING.md",
"LICENSE",
"Procfile", "Procfile",
"README.md", "README.md",
"Rakefile", "Rakefile",
"bin/start-nginx", "bin/start-nginx",
"config.ru", "config.ru",
"config/database.yml", "config/database.yml",
"config/mime.types",
"config/nginx.conf.erb",
"config/puma-config.rb", "config/puma-config.rb",
"config/ruby_config.sh",
"config/unicorn.rb", "config/unicorn.rb",
"lib/active_record_postgres_variables.rb",
"lib/conditional_skylight.rb", "lib/conditional_skylight.rb",
"lib/tasks/build_update_branch.rake", "lib/tasks/build_update_branch.rake",
"lib/tasks/build_update_pull_request_data.rake", "lib/tasks/build_update_pull_request_data.rake",
@ -141,6 +157,7 @@ Gem::Specification.new do |s|
"lib/travis/api/app/responders/xml.rb", "lib/travis/api/app/responders/xml.rb",
"lib/travis/api/app/services/schedule_request.rb", "lib/travis/api/app/services/schedule_request.rb",
"lib/travis/api/app/stack_instrumentation.rb", "lib/travis/api/app/stack_instrumentation.rb",
"lib/travis/api/attack.rb",
"lib/travis/api/instruments.rb", "lib/travis/api/instruments.rb",
"lib/travis/api/serializer.rb", "lib/travis/api/serializer.rb",
"lib/travis/api/v2.rb", "lib/travis/api/v2.rb",
@ -191,6 +208,7 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/models/broadcast.rb", "lib/travis/api/v3/models/broadcast.rb",
"lib/travis/api/v3/models/build.rb", "lib/travis/api/v3/models/build.rb",
"lib/travis/api/v3/models/commit.rb", "lib/travis/api/v3/models/commit.rb",
"lib/travis/api/v3/models/cron.rb",
"lib/travis/api/v3/models/email.rb", "lib/travis/api/v3/models/email.rb",
"lib/travis/api/v3/models/job.rb", "lib/travis/api/v3/models/job.rb",
"lib/travis/api/v3/models/log.rb", "lib/travis/api/v3/models/log.rb",
@ -201,14 +219,33 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/models/repository.rb", "lib/travis/api/v3/models/repository.rb",
"lib/travis/api/v3/models/request.rb", "lib/travis/api/v3/models/request.rb",
"lib/travis/api/v3/models/ssl_key.rb", "lib/travis/api/v3/models/ssl_key.rb",
"lib/travis/api/v3/models/star.rb",
"lib/travis/api/v3/models/subscription.rb", "lib/travis/api/v3/models/subscription.rb",
"lib/travis/api/v3/models/token.rb", "lib/travis/api/v3/models/token.rb",
"lib/travis/api/v3/models/user.rb", "lib/travis/api/v3/models/user.rb",
"lib/travis/api/v3/opt_in.rb", "lib/travis/api/v3/opt_in.rb",
"lib/travis/api/v3/paginator.rb",
"lib/travis/api/v3/paginator/url_generator.rb",
"lib/travis/api/v3/permissions.rb",
"lib/travis/api/v3/permissions/account.rb",
"lib/travis/api/v3/permissions/build.rb",
"lib/travis/api/v3/permissions/cron.rb",
"lib/travis/api/v3/permissions/generic.rb",
"lib/travis/api/v3/permissions/job.rb",
"lib/travis/api/v3/permissions/organization.rb",
"lib/travis/api/v3/permissions/repository.rb",
"lib/travis/api/v3/permissions/user.rb",
"lib/travis/api/v3/queries.rb", "lib/travis/api/v3/queries.rb",
"lib/travis/api/v3/queries/accounts.rb", "lib/travis/api/v3/queries/accounts.rb",
"lib/travis/api/v3/queries/branch.rb", "lib/travis/api/v3/queries/branch.rb",
"lib/travis/api/v3/queries/branches.rb",
"lib/travis/api/v3/queries/broadcasts.rb",
"lib/travis/api/v3/queries/build.rb", "lib/travis/api/v3/queries/build.rb",
"lib/travis/api/v3/queries/builds.rb",
"lib/travis/api/v3/queries/cron.rb",
"lib/travis/api/v3/queries/crons.rb",
"lib/travis/api/v3/queries/job.rb",
"lib/travis/api/v3/queries/jobs.rb",
"lib/travis/api/v3/queries/organization.rb", "lib/travis/api/v3/queries/organization.rb",
"lib/travis/api/v3/queries/organizations.rb", "lib/travis/api/v3/queries/organizations.rb",
"lib/travis/api/v3/queries/owner.rb", "lib/travis/api/v3/queries/owner.rb",
@ -224,15 +261,25 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/renderer/accounts.rb", "lib/travis/api/v3/renderer/accounts.rb",
"lib/travis/api/v3/renderer/avatar_url.rb", "lib/travis/api/v3/renderer/avatar_url.rb",
"lib/travis/api/v3/renderer/branch.rb", "lib/travis/api/v3/renderer/branch.rb",
"lib/travis/api/v3/renderer/branches.rb",
"lib/travis/api/v3/renderer/broadcast.rb",
"lib/travis/api/v3/renderer/broadcasts.rb",
"lib/travis/api/v3/renderer/build.rb", "lib/travis/api/v3/renderer/build.rb",
"lib/travis/api/v3/renderer/builds.rb",
"lib/travis/api/v3/renderer/collection_renderer.rb", "lib/travis/api/v3/renderer/collection_renderer.rb",
"lib/travis/api/v3/renderer/commit.rb",
"lib/travis/api/v3/renderer/cron.rb",
"lib/travis/api/v3/renderer/crons.rb",
"lib/travis/api/v3/renderer/error.rb", "lib/travis/api/v3/renderer/error.rb",
"lib/travis/api/v3/renderer/job.rb",
"lib/travis/api/v3/renderer/jobs.rb",
"lib/travis/api/v3/renderer/model_renderer.rb", "lib/travis/api/v3/renderer/model_renderer.rb",
"lib/travis/api/v3/renderer/organization.rb", "lib/travis/api/v3/renderer/organization.rb",
"lib/travis/api/v3/renderer/organizations.rb", "lib/travis/api/v3/renderer/organizations.rb",
"lib/travis/api/v3/renderer/owner.rb", "lib/travis/api/v3/renderer/owner.rb",
"lib/travis/api/v3/renderer/repositories.rb", "lib/travis/api/v3/renderer/repositories.rb",
"lib/travis/api/v3/renderer/repository.rb", "lib/travis/api/v3/renderer/repository.rb",
"lib/travis/api/v3/renderer/request.rb",
"lib/travis/api/v3/renderer/requests.rb", "lib/travis/api/v3/renderer/requests.rb",
"lib/travis/api/v3/renderer/user.rb", "lib/travis/api/v3/renderer/user.rb",
"lib/travis/api/v3/result.rb", "lib/travis/api/v3/result.rb",
@ -245,19 +292,38 @@ Gem::Specification.new do |s|
"lib/travis/api/v3/services.rb", "lib/travis/api/v3/services.rb",
"lib/travis/api/v3/services/accounts/for_current_user.rb", "lib/travis/api/v3/services/accounts/for_current_user.rb",
"lib/travis/api/v3/services/branch/find.rb", "lib/travis/api/v3/services/branch/find.rb",
"lib/travis/api/v3/services/branches/find.rb",
"lib/travis/api/v3/services/broadcasts/for_current_user.rb",
"lib/travis/api/v3/services/build/cancel.rb",
"lib/travis/api/v3/services/build/find.rb", "lib/travis/api/v3/services/build/find.rb",
"lib/travis/api/v3/services/build/restart.rb",
"lib/travis/api/v3/services/builds/find.rb",
"lib/travis/api/v3/services/cron/create.rb",
"lib/travis/api/v3/services/cron/delete.rb",
"lib/travis/api/v3/services/cron/find.rb",
"lib/travis/api/v3/services/cron/for_branch.rb",
"lib/travis/api/v3/services/crons/for_repository.rb",
"lib/travis/api/v3/services/crons/start.rb",
"lib/travis/api/v3/services/job/cancel.rb",
"lib/travis/api/v3/services/job/find.rb",
"lib/travis/api/v3/services/job/restart.rb",
"lib/travis/api/v3/services/jobs/find.rb",
"lib/travis/api/v3/services/organization/find.rb", "lib/travis/api/v3/services/organization/find.rb",
"lib/travis/api/v3/services/organization/sync.rb", "lib/travis/api/v3/services/organization/sync.rb",
"lib/travis/api/v3/services/organizations/for_current_user.rb", "lib/travis/api/v3/services/organizations/for_current_user.rb",
"lib/travis/api/v3/services/owner/find.rb", "lib/travis/api/v3/services/owner/find.rb",
"lib/travis/api/v3/services/repositories/for_current_user.rb", "lib/travis/api/v3/services/repositories/for_current_user.rb",
"lib/travis/api/v3/services/repositories/for_owner.rb",
"lib/travis/api/v3/services/repository/disable.rb", "lib/travis/api/v3/services/repository/disable.rb",
"lib/travis/api/v3/services/repository/enable.rb", "lib/travis/api/v3/services/repository/enable.rb",
"lib/travis/api/v3/services/repository/find.rb", "lib/travis/api/v3/services/repository/find.rb",
"lib/travis/api/v3/services/repository/star.rb",
"lib/travis/api/v3/services/repository/unstar.rb",
"lib/travis/api/v3/services/requests/create.rb", "lib/travis/api/v3/services/requests/create.rb",
"lib/travis/api/v3/services/requests/find.rb", "lib/travis/api/v3/services/requests/find.rb",
"lib/travis/api/v3/services/user/current.rb", "lib/travis/api/v3/services/user/current.rb",
"lib/travis/api/v3/services/user/find.rb", "lib/travis/api/v3/services/user/find.rb",
"lib/travis/api/v3/services/user/sync.rb",
"lib/travis/api/workers/build_cancellation.rb", "lib/travis/api/workers/build_cancellation.rb",
"lib/travis/api/workers/build_restart.rb", "lib/travis/api/workers/build_restart.rb",
"lib/travis/api/workers/job_cancellation.rb", "lib/travis/api/workers/job_cancellation.rb",
@ -280,6 +346,8 @@ Gem::Specification.new do |s|
"script/console", "script/console",
"script/repos_stats.rb", "script/repos_stats.rb",
"script/server", "script/server",
"script/web_concurrency",
"spec/active_record_postgres_variables_spec.rb",
"spec/integration/error_handling_spec.rb", "spec/integration/error_handling_spec.rb",
"spec/integration/formats_handling_spec.rb", "spec/integration/formats_handling_spec.rb",
"spec/integration/responders_spec.rb", "spec/integration/responders_spec.rb",
@ -344,7 +412,7 @@ Gem::Specification.new do |s|
"spec/unit/endpoint/lint_spec.rb", "spec/unit/endpoint/lint_spec.rb",
"spec/unit/endpoint/logs_spec.rb", "spec/unit/endpoint/logs_spec.rb",
"spec/unit/endpoint/repos_spec.rb", "spec/unit/endpoint/repos_spec.rb",
"spec/unit/endpoint/requests_spec.rb", "spec/unit/endpoint/requests/throttle_spec.rb",
"spec/unit/endpoint/users_spec.rb", "spec/unit/endpoint/users_spec.rb",
"spec/unit/endpoint_spec.rb", "spec/unit/endpoint_spec.rb",
"spec/unit/extensions/expose_pattern_spec.rb", "spec/unit/extensions/expose_pattern_spec.rb",
@ -359,19 +427,41 @@ Gem::Specification.new do |s|
"spec/unit/responders/json_spec.rb", "spec/unit/responders/json_spec.rb",
"spec/unit/responders/service_spec.rb", "spec/unit/responders/service_spec.rb",
"spec/v3/extensions/belongs_to_spec.rb", "spec/v3/extensions/belongs_to_spec.rb",
"spec/v3/models/cron_spec.rb",
"spec/v3/renderer/avatar_url_spec.rb", "spec/v3/renderer/avatar_url_spec.rb",
"spec/v3/result_spec.rb", "spec/v3/result_spec.rb",
"spec/v3/service_index_spec.rb", "spec/v3/service_index_spec.rb",
"spec/v3/services/accounts/for_current_user_spec.rb", "spec/v3/services/accounts/for_current_user_spec.rb",
"spec/v3/services/branch/find_spec.rb", "spec/v3/services/branch/find_spec.rb",
"spec/v3/services/branches/find_spec.rb",
"spec/v3/services/broadcasts/for_current_user_spec.rb",
"spec/v3/services/build/cancel_spec.rb",
"spec/v3/services/build/find_spec.rb",
"spec/v3/services/build/restart_spec.rb",
"spec/v3/services/builds/find_spec.rb",
"spec/v3/services/cron/create_spec.rb",
"spec/v3/services/cron/delete_spec.rb",
"spec/v3/services/cron/find_spec.rb",
"spec/v3/services/cron/for_branch_spec.rb",
"spec/v3/services/crons/for_repository_spec.rb",
"spec/v3/services/job/cancel_spec.rb",
"spec/v3/services/job/find_spec.rb",
"spec/v3/services/job/restart_spec.rb",
"spec/v3/services/jobs/find_spec.rb",
"spec/v3/services/organization/find_spec.rb", "spec/v3/services/organization/find_spec.rb",
"spec/v3/services/organizations/for_current_user_spec.rb", "spec/v3/services/organizations/for_current_user_spec.rb",
"spec/v3/services/owner/find_spec.rb", "spec/v3/services/owner/find_spec.rb",
"spec/v3/services/repositories/for_current_user_spec.rb", "spec/v3/services/repositories/for_current_user_spec.rb",
"spec/v3/services/repositories/for_owner_spec.rb",
"spec/v3/services/repository/disable_spec.rb",
"spec/v3/services/repository/enable_spec.rb",
"spec/v3/services/repository/find_spec.rb", "spec/v3/services/repository/find_spec.rb",
"spec/v3/services/repository/star_spec.rb",
"spec/v3/services/repository/unstar_spec.rb",
"spec/v3/services/requests/create_spec.rb", "spec/v3/services/requests/create_spec.rb",
"spec/v3/services/user/current_spec.rb", "spec/v3/services/user/current_spec.rb",
"spec/v3/services/user/find_spec.rb", "spec/v3/services/user/find_spec.rb",
"spec/v3/services/user/sync_spec.rb",
"tmp/.gitkeep", "tmp/.gitkeep",
"travis-api.gemspec" "travis-api.gemspec"
] ]