summaryrefslogtreecommitdiffstats
path: root/vendor/gems/ruby-openid-2.1.4/test/test_trustroot.rb
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/ruby-openid-2.1.4/test/test_trustroot.rb')
-rw-r--r--vendor/gems/ruby-openid-2.1.4/test/test_trustroot.rb113
1 files changed, 113 insertions, 0 deletions
diff --git a/vendor/gems/ruby-openid-2.1.4/test/test_trustroot.rb b/vendor/gems/ruby-openid-2.1.4/test/test_trustroot.rb
new file mode 100644
index 000000000..2616021a0
--- /dev/null
+++ b/vendor/gems/ruby-openid-2.1.4/test/test_trustroot.rb
@@ -0,0 +1,113 @@
+require 'test/unit'
+require 'openid/trustroot'
+
+require "testutil"
+
+class TrustRootTest < Test::Unit::TestCase
+ include OpenID::TestDataMixin
+
+ def _test_sanity(case_, sanity, desc)
+ tr = OpenID::TrustRoot::TrustRoot.parse(case_)
+ if sanity == 'sane'
+ assert(! tr.nil?)
+ assert(tr.sane?, [case_, desc])
+ assert(OpenID::TrustRoot::TrustRoot.check_sanity(case_), [case_, desc])
+ elsif sanity == 'insane'
+ assert(!tr.sane?, [case_, desc])
+ assert(!OpenID::TrustRoot::TrustRoot.check_sanity(case_), [case_, desc])
+ else
+ assert(tr.nil?, case_)
+ end
+ end
+
+ def _test_match(trust_root, url, expected_match)
+ tr = OpenID::TrustRoot::TrustRoot.parse(trust_root)
+ actual_match = tr.validate_url(url)
+ if expected_match
+ assert(actual_match, [trust_root, url])
+ assert(OpenID::TrustRoot::TrustRoot.check_url(trust_root, url))
+ else
+ assert(!actual_match, [expected_match, actual_match, trust_root, url])
+ assert(!OpenID::TrustRoot::TrustRoot.check_url(trust_root, url))
+ end
+ end
+
+ def test_trustroots
+ data = read_data_file('trustroot.txt', false)
+
+ parts = data.split('=' * 40 + "\n").collect { |i| i.strip() }
+ assert(parts[0] == '')
+ _, ph, pdat, mh, mdat = parts
+
+ getTests(['bad', 'insane', 'sane'], ph, pdat).each { |tc|
+ sanity, desc, case_ = tc
+ _test_sanity(case_, sanity, desc)
+ }
+
+ getTests([true, false], mh, mdat).each { |tc|
+ match, desc, case_ = tc
+ trust_root, url = case_.split()
+ _test_match(trust_root, url, match)
+ }
+ end
+
+ def getTests(grps, head, dat)
+ tests = []
+ top = head.strip()
+ gdat = dat.split('-' * 40 + "\n").collect { |i| i.strip() }
+ assert(gdat[0] == '')
+ assert(gdat.length == (grps.length * 2 + 1), [gdat, grps])
+ i = 1
+ grps.each { |x|
+ n, desc = gdat[i].split(': ')
+ cases = gdat[i + 1].split("\n")
+ assert(cases.length == n.to_i, "Number of cases differs from header count")
+ cases.each { |case_|
+ tests += [[x, top + ' - ' + desc, case_]]
+ }
+ i += 2
+ }
+
+ return tests
+ end
+
+ def test_return_to_matches
+ data = [
+ [[], nil, false],
+ [[], "", false],
+ [[], "http://bogus/return_to", false],
+ [["http://bogus/"], nil, false],
+ [["://broken/"], nil, false],
+ [["://broken/"], "http://broken/", false],
+ [["http://*.broken/"], "http://foo.broken/", false],
+ [["http://x.broken/"], "http://foo.broken/", false],
+ [["http://first/", "http://second/path/"], "http://second/?query=x", false],
+
+ [["http://broken/"], "http://broken/", true],
+ [["http://first/", "http://second/"], "http://second/?query=x", true],
+ ]
+
+ data.each { |case_|
+ allowed_return_urls, return_to, expected_result = case_
+ actual_result = OpenID::TrustRoot::return_to_matches(allowed_return_urls,
+ return_to)
+ assert(expected_result == actual_result)
+ }
+ end
+
+ def test_build_discovery_url
+ data = [
+ ["http://foo.com/path", "http://foo.com/path"],
+ ["http://foo.com/path?foo=bar", "http://foo.com/path?foo=bar"],
+ ["http://*.bogus.com/path", "http://www.bogus.com/path"],
+ ["http://*.bogus.com:122/path", "http://www.bogus.com:122/path"],
+ ]
+
+ data.each { |case_|
+ trust_root, expected_disco_url = case_
+ tr = OpenID::TrustRoot::TrustRoot.parse(trust_root)
+ actual_disco_url = tr.build_discovery_url()
+ assert(actual_disco_url == expected_disco_url, case_ + [actual_disco_url])
+ }
+ end
+end