module AssertUrl

Constants

PARTS

Public Instance Methods

assert_fragment_equal(expected, value) click to toggle source

@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
assert_host_equal(expected, value) click to toggle source

@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
assert_path_equal(expected, value) click to toggle source

@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
assert_port_equal(expected, value) click to toggle source

@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
assert_query_equal(expected, value) click to toggle source

@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
assert_query_include(expected, value) click to toggle source

@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
assert_scheme_equal(expected, value) click to toggle source

@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(expected, value) click to toggle source

{#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

includes?(expected, got) click to toggle source
# 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
raises(error, expected, value) click to toggle source
# File lib/assert_url.rb, line 129
def raises(error, expected, value)
  raise error, "expected #{expected}, got #{value}"
end
urify(arg) click to toggle source
# File lib/assert_url.rb, line 124
def urify(arg)
  arg.kind_of?(URI) ? arg : URI(arg)
end