destination_header_test.rb 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. require 'test_helper'
  2. require 'dav4rack/destination_header'
  3. require 'dav4rack/uri'
  4. class DestinationHeaderTest < Minitest::Test
  5. def test_should_parse_header_value_with_root_set
  6. d = DAV4Rack::DestinationHeader.new DAV4Rack::Uri.new('https://example.com/foo/bar', script_name: '/foo')
  7. assert_equal 'example.com', d.host
  8. assert_equal '/foo/bar', d.path
  9. assert_equal '/bar', d.path_info
  10. end
  11. def test_should_parse_and_unescape_header_value
  12. d = DAV4Rack::DestinationHeader.new DAV4Rack::Uri.new('https://example.com/fo%20o/bar')
  13. assert_equal 'example.com', d.host
  14. assert_equal '/fo o/bar', d.path
  15. assert_equal '/fo o/bar', d.path_info
  16. end
  17. def test_should_validate_uri_header
  18. d = DAV4Rack::DestinationHeader.new DAV4Rack::Uri.new('https://example.com/foo/bar')
  19. assert_nil d.validate host: 'example.com', resource_path: '/test'
  20. assert_equal DAV4Rack::HTTPStatus::BadGateway,
  21. d.validate(host: 'another.com', resource_path: '/test')
  22. assert_equal DAV4Rack::HTTPStatus::Forbidden,
  23. d.validate(host: 'example.com', resource_path: '/foo/bar')
  24. end
  25. def test_should_validate_path_header
  26. d = DAV4Rack::DestinationHeader.new DAV4Rack::Uri.new('/foo/bar')
  27. assert_nil d.validate host: 'example.com', resource_path: '/test'
  28. assert_nil d.validate(host: 'another.com', resource_path: '/test')
  29. assert_equal DAV4Rack::HTTPStatus::Forbidden,
  30. d.validate(host: 'example.com', resource_path: '/foo/bar')
  31. end
  32. def test_should_validate_path_with_script_name
  33. d = DAV4Rack::DestinationHeader.new DAV4Rack::Uri.new('/foo/bar', script_name: '/foo')
  34. assert_equal DAV4Rack::HTTPStatus::Forbidden,
  35. d.validate(host: 'example.com', resource_path: '/bar')
  36. end
  37. end