diff options
| -rw-r--r-- | lib/nickserver/nicknym/source.rb | 2 | ||||
| -rw-r--r-- | test/remote/nicknym_source_test.rb | 11 | ||||
| -rw-r--r-- | test/unit/nicknym/source_test.rb | 58 | 
3 files changed, 50 insertions, 21 deletions
| diff --git a/lib/nickserver/nicknym/source.rb b/lib/nickserver/nicknym/source.rb index 45daeaf..0638869 100644 --- a/lib/nickserver/nicknym/source.rb +++ b/lib/nickserver/nicknym/source.rb @@ -8,6 +8,8 @@ module Nickserver        def available_for?(domain)          status, body = adapter.get "https://#{domain}/provider.json"          status == 200 && provider_with_mx?(body) +      rescue HTTP::ConnectionError +        return false        end        def query(email) diff --git a/test/remote/nicknym_source_test.rb b/test/remote/nicknym_source_test.rb index 2be7251..c95c820 100644 --- a/test/remote/nicknym_source_test.rb +++ b/test/remote/nicknym_source_test.rb @@ -2,6 +2,9 @@ require 'test_helper'  require 'nickserver/nicknym/source'  require 'nickserver/email_address' +# +# Please note the Readme.md file in this directory +#  class RemoteNicknymSourceTest < Minitest::Test    def setup @@ -15,22 +18,22 @@ class RemoteNicknymSourceTest < Minitest::Test    end    def test_availablility_check -    assert source.available_for? 'mail.bitmask.net' +    skip unless source.available_for? 'mail.bitmask.net'      refute source.available_for? 'dl.bitmask.net'   # not a provider -    refute source.available_for? 'demo.bitmask.net' # provider without mx    end    def test_successful_query      response = source.query(email_with_key) +    skip if response.status == 404      json = JSON.parse response.content -    assert_equal 200, response.status      assert_equal email_with_key.to_s, json["address"]      refute_empty json["openpgp"]    end    def test_not_found      response = source.query(email_without_key) -    assert_equal 404, response.status +    skip if response.status == 200 +    assert response.status == 404    end    protected diff --git a/test/unit/nicknym/source_test.rb b/test/unit/nicknym/source_test.rb index 76337d4..cddb7c2 100644 --- a/test/unit/nicknym/source_test.rb +++ b/test/unit/nicknym/source_test.rb @@ -8,31 +8,55 @@ 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_successful_query -    adapter.expect :get, [200, 'dummy body'], -      ['https://nicknym.leap_powered.tld:6425', -       {query: {address: email_stub.to_s}}] +  def test_failing_network_means_no_nicknym +    failing_network +    refute source.available_for?('remote.tld') +  end + +  def test_proxy_successful_query +    assert proxies_query_response?(200, 'dummy body') +  end + +  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 failing_network +    def adapter.get(*args) +      raise HTTP::ConnectionError +    end +  end    def source      Nickserver::Nicknym::Source.new(adapter) | 
