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!
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 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"])

View File

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

View File

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

View File

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

View File

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

View File

@ -2,6 +2,7 @@ module Travis::API::V3
class Services::Crons::Start < Service
def run!
raise InsufficientAccess unless Travis::Features.feature_active?(:cron)
query.start_all()
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(: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
before { last_cron }
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(: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
before { Travis::API::V3::Models::Permission.create(repository: repo, user: repo.owner, push: true) }
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(: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
before { get("/v3/cron/#{cron.id}") }
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(: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
before { 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(: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
before { cron }
before { get("/v3/repo/#{repo.id}/crons") }

View File

@ -12,74 +12,90 @@ Gem::Specification.new do |s|
"Konstantin Haase",
"Piotr Sarnacki",
"Sven Fuchs",
"carlad",
"Hiro Asari",
"Mathias Meyer",
"Josh Kalderimis",
"Henrik Hodne",
"carlad",
"Steffen Kötte",
"Lennard Wolf",
"Tyranja",
"Andre Arko",
"Dan Buch",
"Andre Arko",
"C. Scott Ananian",
"Erik Michaels-Ober",
"Brian Ford",
"Jonas Chromik",
"Steffen",
"Steve Richert",
"Bryan Goldstein",
"Dan Rice",
"James Dennes",
"María de Antón",
"Nick Schonning",
"Patrick Williams",
"Puneeth Chaganti",
"Thais Camilo and Konstantin Haase",
"Tim Carey-Smith",
"Bryan Goldstein",
"Zachary Scott",
"James Dennes",
"rainsun",
"Nick Schonning",
"Patrick Williams",
"Dan Rice"
"rainsun"
]
s.email = [
"konstantin.mailinglists@googlemail.com",
"drogus@gmail.com",
"me@svenfuchs.com",
"carla@travis-ci.com",
"asari.ruby@gmail.com",
"meyer@paperplanes.de",
"josh.kalderimis@gmail.com",
"steffen.koette@gmail.com",
"me@henrikhodne.com",
"henrik@hodne.io",
"carlad@users.noreply.github.com",
"konstantin.haase@gmail.com",
"lennardwolf@live.de",
"carla@travis-ci.org",
"tyranja@cassiopeia.uberspace.de",
"andre@arko.net",
"svenfuchs@artweb-design.de",
"dan@travis-ci.org",
"sferik@gmail.com",
"svenfuchs@artweb-design.de",
"cscott@cscott.net",
"henrik@travis-ci.com",
"steve.richert@gmail.com",
"sferik@gmail.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",
"punchagan@muse-amuse.in",
"carlad@users.noreply.github.com",
"dan@zoombody.com",
"rainsuner@gmail.com",
"dev+narwen+rkh@rkh.im",
"tim@spork.in",
"brysgo@gmail.com",
"e@zzak.io",
"jdennes@gmail.com",
"nschonni@gmail.com",
"dan@meatballhat.com"
"rainsuner@gmail.com"
]
s.files = [
"CONTRIBUTING.md",
"LICENSE",
"Procfile",
"README.md",
"Rakefile",
"bin/start-nginx",
"config.ru",
"config/database.yml",
"config/mime.types",
"config/nginx.conf.erb",
"config/puma-config.rb",
"config/ruby_config.sh",
"config/unicorn.rb",
"lib/active_record_postgres_variables.rb",
"lib/conditional_skylight.rb",
"lib/tasks/build_update_branch.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/services/schedule_request.rb",
"lib/travis/api/app/stack_instrumentation.rb",
"lib/travis/api/attack.rb",
"lib/travis/api/instruments.rb",
"lib/travis/api/serializer.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/build.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/job.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/request.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/token.rb",
"lib/travis/api/v3/models/user.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/accounts.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/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/organizations.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/avatar_url.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/builds.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/job.rb",
"lib/travis/api/v3/renderer/jobs.rb",
"lib/travis/api/v3/renderer/model_renderer.rb",
"lib/travis/api/v3/renderer/organization.rb",
"lib/travis/api/v3/renderer/organizations.rb",
"lib/travis/api/v3/renderer/owner.rb",
"lib/travis/api/v3/renderer/repositories.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/user.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/accounts/for_current_user.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/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/sync.rb",
"lib/travis/api/v3/services/organizations/for_current_user.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_owner.rb",
"lib/travis/api/v3/services/repository/disable.rb",
"lib/travis/api/v3/services/repository/enable.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/find.rb",
"lib/travis/api/v3/services/user/current.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_restart.rb",
"lib/travis/api/workers/job_cancellation.rb",
@ -280,6 +346,8 @@ Gem::Specification.new do |s|
"script/console",
"script/repos_stats.rb",
"script/server",
"script/web_concurrency",
"spec/active_record_postgres_variables_spec.rb",
"spec/integration/error_handling_spec.rb",
"spec/integration/formats_handling_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/logs_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_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/service_spec.rb",
"spec/v3/extensions/belongs_to_spec.rb",
"spec/v3/models/cron_spec.rb",
"spec/v3/renderer/avatar_url_spec.rb",
"spec/v3/result_spec.rb",
"spec/v3/service_index_spec.rb",
"spec/v3/services/accounts/for_current_user_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/organizations/for_current_user_spec.rb",
"spec/v3/services/owner/find_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/star_spec.rb",
"spec/v3/services/repository/unstar_spec.rb",
"spec/v3/services/requests/create_spec.rb",
"spec/v3/services/user/current_spec.rb",
"spec/v3/services/user/find_spec.rb",
"spec/v3/services/user/sync_spec.rb",
"tmp/.gitkeep",
"travis-api.gemspec"
]