104 lines
2.5 KiB
Ruby
104 lines
2.5 KiB
Ruby
ENV['RACK_ENV'] = ENV['RAILS_ENV'] = ENV['ENV'] = 'test'
|
|
|
|
require 'support/coverage' unless ENV['SKIP_COVERAGE']
|
|
|
|
require 'rspec'
|
|
require 'rspec/its'
|
|
require 'database_cleaner'
|
|
require 'logger'
|
|
require 'gh'
|
|
require 'multi_json'
|
|
require 'pry'
|
|
require 'stackprof'
|
|
require 'webmock/rspec'
|
|
|
|
require 'travis/api/app'
|
|
require 'travis/testing'
|
|
require 'travis/testing/scenario'
|
|
require 'travis/testing/factories'
|
|
require 'travis/testing/matchers'
|
|
require 'support/formats'
|
|
require 'support/gcs'
|
|
require 'support/matchers'
|
|
require 'support/payloads'
|
|
require 'support/private_key'
|
|
require 'support/s3'
|
|
require 'support/test_helpers'
|
|
require 'support/shared_examples'
|
|
|
|
module TestHelpers
|
|
include Sinatra::TestHelpers
|
|
|
|
def custom_endpoints
|
|
@custom_endpoints ||= []
|
|
end
|
|
|
|
def add_settings_endpoint(name, options = {})
|
|
if options[:singleton]
|
|
Travis::Api::App::SingletonSettingsEndpoint.subclass(name)
|
|
else
|
|
Travis::Api::App::SettingsEndpoint.subclass(name)
|
|
end
|
|
set_app Travis::Api::App.new
|
|
end
|
|
|
|
def add_endpoint(prefix, &block)
|
|
endpoint = Sinatra.new(Travis::Api::App::Endpoint, &block)
|
|
endpoint.set(prefix: prefix)
|
|
set_app Travis::Api::App.new
|
|
custom_endpoints << endpoint
|
|
end
|
|
|
|
def parsed_body
|
|
MultiJson.decode(body)
|
|
end
|
|
end
|
|
|
|
RSpec.configure do |c|
|
|
c.mock_framework = :mocha
|
|
c.expect_with :rspec
|
|
c.include TestHelpers
|
|
|
|
c.before :suite do
|
|
Travis.logger = Logger.new(StringIO.new)
|
|
Travis::Api::App.setup
|
|
Travis.config.client_domain = "www.example.com"
|
|
Travis.config.endpoints.ssh_key = true
|
|
|
|
DatabaseCleaner.clean_with :truncation
|
|
DatabaseCleaner.strategy = :transaction
|
|
|
|
# This sets up a scenario in the db as an initial state. The db will be
|
|
# rolled back to this state after each test. Several tests in ./spec depend
|
|
# on this scenario, so this gives a performance benefit, but also can be
|
|
# confusing.
|
|
Scenario.default
|
|
end
|
|
|
|
c.before :each do
|
|
DatabaseCleaner.start
|
|
Redis.new.flushall
|
|
Travis.config.oauth2.scope = "user:email,public_repo"
|
|
end
|
|
|
|
c.before :each, set_app: true do
|
|
set_app Travis::Api::App.new
|
|
end
|
|
|
|
c.after :each do
|
|
DatabaseCleaner.clean
|
|
custom_endpoints.each do |endpoint|
|
|
endpoint.superclass.direct_subclasses.delete(endpoint)
|
|
end
|
|
end
|
|
end
|
|
|
|
require 'timecop'
|
|
Timecop.freeze(Time.now.utc)
|
|
|
|
describe Time do
|
|
let(:time) { Time.now.utc }
|
|
example { expect(Time.now.utc).to eq(time) }
|
|
example { expect(Time.now.utc + 5.minutes ).to eq(time + 5.minutes) }
|
|
end
|