diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/integration/dispatcher_test.rb (renamed from test/unit/request_handler_test.rb) | 13 | ||||
-rw-r--r-- | test/unit/invalid_source_test.rb | 16 | ||||
-rw-r--r-- | test/unit/lookup_test.rb | 23 | ||||
-rw-r--r-- | test/unit/request_handlers/local_email_handler_test.rb | 65 | ||||
-rw-r--r-- | test/unit/request_test.rb | 44 |
5 files changed, 114 insertions, 47 deletions
diff --git a/test/unit/request_handler_test.rb b/test/integration/dispatcher_test.rb index 6c7a036..60d252b 100644 --- a/test/unit/request_handler_test.rb +++ b/test/integration/dispatcher_test.rb @@ -1,7 +1,7 @@ require 'test_helper' -require 'nickserver/request_handler' +require 'nickserver/dispatcher' -class Nickserver::RequestHandlerTest < Minitest::Test +class Nickserver::DispatcherTest < Minitest::Test def test_empty_query handle @@ -58,19 +58,16 @@ class Nickserver::RequestHandlerTest < Minitest::Test def assert_response(args) responder.expect :respond, nil, [args[:status], args[:content]] - handler.respond_to @params, @headers + dispatcher.respond_to @params, @headers responder.verify end - def handler - Nickserver::RequestHandler.new responder, adapter + def dispatcher + Nickserver::Dispatcher.new responder end def responder @responder ||= Minitest::Mock.new end - def adapter - @adapter ||= Minitest::Mock.new - end end diff --git a/test/unit/invalid_source_test.rb b/test/unit/invalid_source_test.rb deleted file mode 100644 index 37a38fc..0000000 --- a/test/unit/invalid_source_test.rb +++ /dev/null @@ -1,16 +0,0 @@ -require 'test_helper' -require 'nickserver/invalid_source' - -class Nickserver::InvalidSourceTest < Minitest::Test - - def test_query - adapter.query(nil) do |status, content| - assert_equal 500, status - assert_equal "Not a valid address", content - end - end - - def adapter - Nickserver::InvalidSource.new - end -end diff --git a/test/unit/lookup_test.rb b/test/unit/lookup_test.rb deleted file mode 100644 index ac827e0..0000000 --- a/test/unit/lookup_test.rb +++ /dev/null @@ -1,23 +0,0 @@ -require 'test_helper' -require 'minitest/mock' -require 'nickserver/lookup' - -class TestLookup < Nickserver::Lookup - - def query - yield 200, 'yeah' - end - -end - -class LookupTest < Minitest::Test - - def test_responding - responder = Minitest::Mock.new - responder.expect :send_response, nil, - [{status: 200, content: 'yeah'}] - lookup = TestLookup.new nil - lookup.respond_with responder - responder.verify - end -end diff --git a/test/unit/request_handlers/local_email_handler_test.rb b/test/unit/request_handlers/local_email_handler_test.rb new file mode 100644 index 0000000..8f303ec --- /dev/null +++ b/test/unit/request_handlers/local_email_handler_test.rb @@ -0,0 +1,65 @@ +require 'test_helper' +require 'nickserver/request_handlers/local_email_handler' + +class LocalEmailHandlerTest < MiniTest::Test + + def test_no_email + assert_refuses + end + + def test_remote_email + assert_refuses email: 'me@remote.tld', domain: 'local.tld' + end + + def test_local_email + assert_handles email: 'me@local.tld', domain: 'local.tld' + end + + def test_missing_host_header + Nickserver::Config.stub :domain, nil do + assert_responds_with_error "HTTP request must include a Host header.", + email: 'me@local.tld' + end + end + + protected + + def handler + Nickserver::RequestHandlers::LocalEmailHandler.new + end + + def source + source = Minitest::Mock.new + source.expect :query, + 'response', + [Nickserver::EmailAddress] + source + end + + def assert_handles(opts) + Nickserver::CouchDB::Source.stub :new, source do + assert_equal 'response', handle(request(opts)) + end + end + + def assert_responds_with_error(msg, opts) + response = handle(request(opts)) + assert_equal 500, response.status + assert_equal "500 #{msg}\n", response.content + end + + def assert_refuses(opts = {}) + assert_nil handle(request(opts)) + end + + def handle(request) + handler.call(request) + end + + def request(opts = {}) + params = {'address' => [opts[:email]]} + headers = {'Host' => opts[:domain]} + Nickserver::Request.new params, headers + end + +end diff --git a/test/unit/request_test.rb b/test/unit/request_test.rb new file mode 100644 index 0000000..698a275 --- /dev/null +++ b/test/unit/request_test.rb @@ -0,0 +1,44 @@ +require 'test_helper' +require 'nickserver/request' + +class Nickserver::RequestTest < Minitest::Test + + def test_email + request = request_with_params address: fake_email + assert_equal fake_email, request.email + end + + def test_blank_email + request = request_with_params + assert_equal nil, request.email + end + + def test_fingerprint + request = request_with_params fingerprint: fake_fingerprint + assert_equal fake_fingerprint, request.fingerprint + end + + def test_domain + request = Nickserver::Request.new Hash.new, + 'Host' => ' nicknym.my.domain.tld:123' + assert_equal 'my.domain.tld', request.domain + end + + protected + + # params are encoded with strings as keys and arrays with the + # given value(s) + def request_with_params(params = {}) + params = params.collect{|k,v| [k.to_s, Array(v)]}.to_h + Nickserver::Request.new params, {} + end + + def fake_email + 'test@domain.tld' + end + + def fake_fingerprint + 'F' * 40 + end + +end |