diff options
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/handler_chain_test.rb | 68 | ||||
-rw-r--r-- | test/unit/nicknym/source_test.rb | 47 |
2 files changed, 98 insertions, 17 deletions
diff --git a/test/unit/handler_chain_test.rb b/test/unit/handler_chain_test.rb new file mode 100644 index 0000000..fae0418 --- /dev/null +++ b/test/unit/handler_chain_test.rb @@ -0,0 +1,68 @@ +require 'test_helper' +require 'nickserver/handler_chain' + +class HandlerChainTest < Minitest::Test + + def test_initialization + assert chain + end + + def test_noop + assert_nil chain.handle + end + + def test_triggering_handlers + handler_mock.expect :call, nil, [:a, :b] + chain handler_mock + chain.handle :a, :b + handler_mock.verify + end + + def test_returns_handler_result + chain handler_with_nil, handler_with_result + assert_equal :result, chain.handle + end + + def test_raise_exception + chain handler_raising, handler_with_result + assert_raises RuntimeError do + chain.handle + end + end + + def test_continue_on_exception + chain handler_raising, handler_with_result + chain.continue_on(RuntimeError) + assert_equal :result, chain.handle + assert_equal [RuntimeError], chain.rescued_exceptions.map(&:class) + end + + def test_continue_on_exception_with_nil + chain handler_raising, handler_with_nil + chain.continue_on(RuntimeError) + assert_nil chain.handle + assert_equal [RuntimeError], chain.rescued_exceptions.map(&:class) + end + + protected + + def chain(*handlers) + @chain ||= Nickserver::HandlerChain.new(*handlers) + end + + def handler_mock + @handler ||= Minitest::Mock.new + end + + def handler_with_nil + Proc.new {} + end + + def handler_with_result + Proc.new { :result } + end + + def handler_raising(exception = RuntimeError) + Proc.new { raise exception } + end +end diff --git a/test/unit/nicknym/source_test.rb b/test/unit/nicknym/source_test.rb index 76337d4..f8c9b60 100644 --- a/test/unit/nicknym/source_test.rb +++ b/test/unit/nicknym/source_test.rb @@ -8,31 +8,44 @@ class NicknymSourceTest < Minitest::Test assert source end - def test_available_for_domain - adapter.expect :get, [200, '{"services": ["mx"]}'], - ['https://leap_powered.tld/provider.json'] - assert source.available_for?('leap_powered.tld') - adapter.verify + def test_available_for_domain_with_service_mx + assert available_on?(200, '{"services": ["mx"]}') end - def test_not_available_for_domain - adapter.expect :get, [404, nil], - ['https://remote.tld/provider.json'] - assert !source.available_for?('remote.tld') - adapter.verify + def test_no_provider_json_means_no_nicknym + refute available_on?(404, 'blablabla') + end + + def test_invalid_provider_json_means_no_nicknym + refute available_on?(200, 'blablabla') + end + + def test_proxy_successful_query + assert proxies_query_response?(200, 'dummy body') end - def test_successful_query - adapter.expect :get, [200, 'dummy body'], - ['https://nicknym.leap_powered.tld:6425', - {query: {address: email_stub.to_s}}] + def test_proxy_query_not_found + assert proxies_query_response?(404, 'dummy body') + end + + protected + + def proxies_query_response?(status = 0, body = nil) + adapter.expect :get, [status, body], + ['https://nicknym.leap_powered.tld:6425', query: {address: email_stub.to_s}] response = source.query(email_stub) - assert_equal 200, response.status - assert_equal 'dummy body', response.content + assert_equal status, response.status + assert_equal body, response.content adapter.verify end - protected + def available_on?(status = 0, body = nil) + adapter.expect :get, [status, body], + ['https://remote.tld/provider.json'] + available = source.available_for?('remote.tld') + adapter.verify + return available + end def source Nickserver::Nicknym::Source.new(adapter) |