summaryrefslogtreecommitdiff
path: root/test/integration
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2016-09-12 16:34:25 +0200
committerAzul <azul@riseup.net>2016-09-12 16:34:57 +0200
commitec875169b0231d84bb8c55bbe91c52b896561f1e (patch)
treebb4b47a79d32744bda8d66b2c02e9343bfc61698 /test/integration
parentbc8ddfa1c49b438a563a8a8b9e0472944f71c71c (diff)
test: separate remote tests into own directory
Dropped the webmock dependency. We have our own http adapter. So we can stub that to inject a mock. As an added bonus this does not mess with other http requests. Also wrote down testing strategy. Not completely implemented yet.
Diffstat (limited to 'test/integration')
-rw-r--r--test/integration/hkp_test.rb88
-rw-r--r--test/integration/nickserver_test.rb13
2 files changed, 38 insertions, 63 deletions
diff --git a/test/integration/hkp_test.rb b/test/integration/hkp_test.rb
index bf78bb3..7d4bb6b 100644
--- a/test/integration/hkp_test.rb
+++ b/test/integration/hkp_test.rb
@@ -1,7 +1,9 @@
require 'test_helper'
+require 'support/http_stub_helper'
require 'nickserver/hkp/source'
class HkpTest < Minitest::Test
+ include HttpStubHelper
def setup
super
@@ -39,26 +41,31 @@ class HkpTest < Minitest::Test
end
def test_key_info_not_found
- uid = 'leaping_lemur@leap.se'
- stub_sks_vindex_reponse(uid, status: 404)
- assert_response_status_for_uid uid, 404
+ stubbing_http do
+ uid = 'leaping_lemur@leap.se'
+ stub_sks_vindex_reponse(uid, status: 404)
+ assert_response_status_for_uid uid, 404
+ end
end
def test_no_matching_key_found
- uid = 'leaping_lemur@leap.se'
- stub_sks_vindex_reponse(uid, status: 200)
- assert_response_status_for_uid uid, 404
+ stubbing_http do
+ uid = 'leaping_lemur@leap.se'
+ stub_sks_vindex_reponse(uid, status: 200)
+ assert_response_status_for_uid uid, 404
+ end
end
def test_fetch_key
uid = 'cloudadmin@leap.se'
key_id = 'E818C478D3141282F7590D29D041EB11B1647490'
- stub_sks_vindex_reponse(uid, body: file_content(:leap_vindex_result))
- stub_sks_get_reponse(key_id, body: file_content(:leap_public_key))
-
- assert_response_for_uid(uid) do |response|
- content = JSON.parse response.content
- assert_equal file_content(:leap_public_key), content['openpgp']
+ stubbing_http do
+ stub_sks_vindex_reponse(uid, body: file_content(:leap_vindex_result))
+ stub_sks_get_reponse(key_id, body: file_content(:leap_public_key))
+ assert_response_for_uid(uid) do |response|
+ content = JSON.parse response.content
+ assert_equal file_content(:leap_public_key), content['openpgp']
+ end
end
end
@@ -66,50 +73,19 @@ class HkpTest < Minitest::Test
uid = 'cloudadmin@leap.se'
key_id = 'E818C478D3141282F7590D29D041EB11B1647490'
- stub_sks_vindex_reponse(uid, body: file_content(:leap_vindex_result))
- stub_sks_get_reponse(key_id, status: 404)
-
- assert_response_status_for_uid uid, 404
+ stubbing_http do
+ stub_sks_vindex_reponse(uid, body: file_content(:leap_vindex_result))
+ stub_sks_get_reponse(key_id, status: 404)
+ assert_response_status_for_uid uid, 404
+ end
end
def test_fetch_key_too_short
uid = 'chiiph@leap.se'
- stub_sks_vindex_reponse(uid, body: file_content(:short_key_vindex_result))
- assert_response_status_for_uid uid, 500
- end
-
- #
- # real network tests
- # remember: must be run with REAL_NET=true
- #
-
- def test_key_info_real_network
- real_network do
- uid = 'elijah@riseup.net'
- assert_key_info_for_uid uid do |keys|
- assert_equal 1, keys.size
- assert keys.first.keyid =~ /00440025$/
- end
- end
- end
-
- def test_tls_validation_with_real_network
- hkp_url = 'https://keys.mayfirst.org/pks/lookup'
- ca_file = file_path('mayfirst-ca.pem')
-
- real_network do
- config.stub(:hkp_url, hkp_url) do
- config.stub(:hkp_ca_file, ca_file) do
- #config.stub(:hkp_ca_file, file_path('autistici-ca.pem')) do
- assert File.exist?(Nickserver::Config.hkp_ca_file)
- uid = 'elijah@riseup.net'
- assert_key_info_for_uid uid do |keys|
- assert_equal 1, keys.size
- assert keys.first.keyid =~ /00440025$/
- end
- end
- end
+ stubbing_http do
+ stub_sks_vindex_reponse(uid, body: file_content(:short_key_vindex_result))
+ assert_response_status_for_uid uid, 500
end
end
@@ -134,13 +110,11 @@ class HkpTest < Minitest::Test
end
end
- def adapter
- Nickserver::Adapters::CelluloidHttp.new
- end
-
def fetch_key_info(body_source, uid, &block)
- stub_sks_vindex_reponse(uid, body: file_content(body_source))
- assert_key_info_for_uid(uid, &block)
+ stubbing_http do
+ stub_sks_vindex_reponse uid, body: file_content(body_source)
+ assert_key_info_for_uid(uid, &block)
+ end
end
end
diff --git a/test/integration/nickserver_test.rb b/test/integration/nickserver_test.rb
index bdba6b7..e367e06 100644
--- a/test/integration/nickserver_test.rb
+++ b/test/integration/nickserver_test.rb
@@ -1,21 +1,20 @@
require 'test_helper'
+require 'support/http_stub_helper'
require 'nickserver/server'
require 'json'
#
# Some important notes to understanding these tests:
#
-# (1) Requests to 127.0.0.1 always bypass HTTP stub.
+# (1) We mock the http adapter. So no network is required.
#
-# (2) All requests to nickserver are to 127.0.0.1.
+# (2) We actually start the nickserver on 127.0.0.1 and talk to it via http.
#
# (3) the "Host" header for requests to nickserver must be set (or Config.domain set)
#
-# (4) When stubbing requests to couchdb, the couchdb host is changed from the
-# default (127.0.0.1) to a dummy value (notlocalhost).
-#
class NickserverTest < Minitest::Test
+ include HttpStubHelper
def setup
super
@@ -107,7 +106,9 @@ class NickserverTest < Minitest::Test
#
def start(timeout = 1)
server = Nickserver::ReelServer.new '127.0.0.1', config.port
- yield server
+ stubbing_http do
+ yield server
+ end
ensure
server.terminate if server && server.alive?
end