test/test_deploy_tracking.rb in toadhopper-2.0 vs test/test_deploy_tracking.rb in toadhopper-2.1

- old
+ new

@@ -1,15 +1,71 @@ require 'helper' require 'cgi' require 'fakeweb' class Toadhopper::TestDeployTracking < Test::Unit::TestCase + BOGUS_KEY = 'bogus_key' + def test_deploy - FakeWeb.register_uri(:post, 'http://airbrakeapp.com/deploys.txt', :status => ['200', 'Ok']) - options = {:framework_env => 'test', :scm_revision => 3, :scm_repository => 'some/where', :username => 'phil'} - response = Toadhopper('bogus key').deploy!(options) - request = FakeWeb.last_request - expected_parameters = {'api_key' => 'bogus key', 'deploy[rails_env]' => 'test', 'deploy[scm_revision]' => '3', 'deploy[scm_repository]' => 'some/where', 'deploy[local_username]' => 'phil'} + response_body = 'Recorded deploy of My Awesome App to test.' + FakeWeb.register_uri(:post, "http://#{Toadhopper::DEFAULT_DOMAIN}/deploys.txt", :body => response_body, :status => ['200', 'Ok']) + response = Toadhopper(BOGUS_KEY).deploy!(options) + # Check our request + assert_equal expected_parameters, query_to_hash(FakeWeb.last_request.body) + # Check how we capture the mock response + assert_equal 200, response.status, response + assert_equal response_body, response.body, response + assert_equal [], response.errors, response + end + + def test_fake_secure_deploy + response_body = 'Recorded deploy of Foo to test.' + FakeWeb.register_uri(:post, "https://#{Toadhopper::DEFAULT_DOMAIN}/deploys.txt", :body => response_body, :status => ['200', 'OK']) + response = Toadhopper.new(BOGUS_KEY, :notify_host => "https://#{Toadhopper::DEFAULT_DOMAIN}").deploy!(options) + # Check our request + assert_equal expected_parameters, query_to_hash(FakeWeb.last_request.body) + # Check how we capture the mock response assert_equal 200, response.status - assert_equal expected_parameters, Hash[CGI.unescape(FakeWeb.last_request.body).split('&').map { |x| x.split('=') }] + assert_equal response_body, response.body, response + assert_equal [], response.errors, response + end + + def test_deploy_integration_bad_key + FakeWeb.allow_net_connect = true + response = Toadhopper('bogus key').deploy!(options) + # Check how we capture the live response + assert_equal 403, response.status, response + expected_error = 'could not find a project with API key' + assert_match expected_error, response.body, response + assert_equal 1, response.errors.size, response + assert_match expected_error, response.errors.first, response + end + + if toadhopper_api_key and ENV['AIRBRAKE_FULL_TEST'] + def test_deploy_integration_good_key + FakeWeb.allow_net_connect = true + opts = {:scm_repository => 'git://github.com/toolmantim/toadhopper.git', :scm_revision => '5e15028652023c98c70ac275b5f04bb368e04773'} + response = toadhopper.deploy!(opts) + # Check how we capture the live response + assert_equal 200, response.status, response + assert_match 'Recorded deploy', response.body, response + assert_equal [], response.errors, response + end + end + + def options + {:framework_env => 'test', :scm_revision => 3, :scm_repository => 'some/where', :username => 'phil'} + end + + def expected_parameters + {'api_key' => BOGUS_KEY, 'deploy[rails_env]' => 'test', 'deploy[scm_revision]' => '3', 'deploy[scm_repository]' => 'some/where', 'deploy[local_username]' => 'phil'} + end + + def query_to_hash(query) + Hash[CGI.unescape(query).split('&').map { |x| x.split('=') }] + end + + # This method is called automatically after every test + def teardown + reset_test_env end end