mirror of
https://gitea.invidious.io/iv-org/shard-athena-negotiation.git
synced 2024-08-15 00:53:23 +00:00
66 lines
1.5 KiB
Crystal
66 lines
1.5 KiB
Crystal
|
require "./spec_helper"
|
||
|
|
||
|
private struct MockAccept < ANG::BaseAccept; end
|
||
|
|
||
|
struct BaseAcceptTest < ASPEC::TestCase
|
||
|
@[DataProvider("build_parameters_data_provider")]
|
||
|
def test_build_parameters_string(header : String, expected : String) : Nil
|
||
|
MockAccept.new(header).normalized_header.should eq expected
|
||
|
end
|
||
|
|
||
|
def build_parameters_data_provider : Tuple
|
||
|
{
|
||
|
{"media/type; xxx = 1.0;level=2;foo=bar", "media/type; foo=bar; level=2; xxx=1.0"},
|
||
|
}
|
||
|
end
|
||
|
|
||
|
@[DataProvider("parameters_data_provider")]
|
||
|
def test_parse_parameters(header : String, expected_parameters : Hash(String, String)) : Nil
|
||
|
accept = MockAccept.new header
|
||
|
parameters = accept.parameters
|
||
|
|
||
|
# TODO: Can this be improved?
|
||
|
if header.includes? 'q'
|
||
|
parameters["q"] = accept.quality.to_s
|
||
|
end
|
||
|
|
||
|
expected_parameters.size.should eq parameters.size
|
||
|
|
||
|
expected_parameters.each do |k, v|
|
||
|
parameters.has_key?(k).should be_true
|
||
|
parameters[k].should eq v
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def parameters_data_provider : Tuple
|
||
|
{
|
||
|
{
|
||
|
"application/json ;q=1.0; level=2;foo= bar",
|
||
|
{
|
||
|
"q" => "1.0",
|
||
|
"level" => "2",
|
||
|
"foo" => "bar",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
"application/json ;q = 1.0; level = 2; FOO = bAr",
|
||
|
{
|
||
|
"q" => "1.0",
|
||
|
"level" => "2",
|
||
|
"foo" => "bAr",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
"application/json;q=1.0",
|
||
|
{
|
||
|
"q" => "1.0",
|
||
|
},
|
||
|
},
|
||
|
{
|
||
|
"application/json;foo",
|
||
|
{} of String => String,
|
||
|
},
|
||
|
}
|
||
|
end
|
||
|
end
|