module AssertUrl
Constants
- PARTS
Public Instance Methods
@param [String] expected The fragment the url should have. @param [String or URI] value The url you wish to validate.
@example
assert_fragment_equal("fragment", "http://example.org/path#fragment")
# File lib/assert_url.rb, line 82 def assert_fragment_equal(expected, value) value = urify(value).fragment expected == value || raises(FragmentError, expected, value) end
@param [String] expected The host the url should have. @param [String or URI] value The url you wish to validate.
@example
assert_host_equal("example.org", "http://example.org")
# File lib/assert_url.rb, line 29 def assert_host_equal(expected, value) value = urify(value).host expected == value || raises(HostError, expected, value) end
@param [String] expected The path the url should have. @param [String or URI] value The url you wish to validate.
@example
assert_path_equal("/path", "http://example.org/path")
# File lib/assert_url.rb, line 55 def assert_path_equal(expected, value) value = urify(value).path expected == value || raises(PathError, expected, value) end
@param [Integer] expected The port the url should have. @param [String or URI] value The url you wish to validate.
@example
assert_port_equal(80, "http://example.org")
# File lib/assert_url.rb, line 42 def assert_port_equal(expected, value) value = urify(value).port expected == value || raises(PortError, expected, value) end
@param [Hash] expected The query the url should have. @param [String or URI] value The url you wish to validate.
@example
assert_query_equal({foo: "bar"}, "http://example.org/?foo=bar")
# File lib/assert_url.rb, line 68 def assert_query_equal(expected, value) value = urify(value).query expected = (URI.encode_www_form(expected) rescue expected) expected == value || raises(QueryError, expected, value) end
@param [String or Symbol] expected The key-value pairs that the url must include. @param [String or URI] value The url you wish to validate.
@example
assert_query_include({foo: "bar"}, "http://example.org/?foo=bar&baz=wat")
# File lib/assert_url.rb, line 110 def assert_query_include(expected, value) value = Hash[URI.decode_www_form(urify(value).query)] includes?(expected.to_a, value) || (raise QueryError, "expected #{value} to include #{expected}") end
@param [String or Symbol] expected The scheme the url should have. @param [String or URI] value The url you wish to validate.
@example
assert_scheme_equal(:http, "http://example.org") assert_scheme_equal("http", "http://example.org")
# File lib/assert_url.rb, line 16 def assert_scheme_equal(expected, value) value = urify(value).scheme expected.to_s == value || raises(SchemeError, expected, value) end
{#assert_url_equal} runs all the validations above. It’s not a String comparison.
@param [String or URI] expected The url you wish to have. @param [String or URI] value The url you wish to validate.
@example
assert_url_equal(URI("http://example.org"), "http://example.org")
# File lib/assert_url.rb, line 97 def assert_url_equal(expected, value) expected, value = urify(expected), urify(value) PARTS.map { |part| send(:"assert_#{part}_equal", expected.send(part.to_sym), value) }.reduce(:&) end
Private Instance Methods
# File lib/assert_url.rb, line 116 def includes?(expected, got) expected.all? do |(key, value)| key = key.to_s got.has_key?(key) && got[key] == value end end
# File lib/assert_url.rb, line 129 def raises(error, expected, value) raise error, "expected #{expected}, got #{value}" end
# File lib/assert_url.rb, line 124 def urify(arg) arg.kind_of?(URI) ? arg : URI(arg) end