Add MSP media protocol support
This commit is contained in:
+25
-4
@@ -14,8 +14,8 @@ module MeowMediaTest
|
||||
@requests = []
|
||||
end
|
||||
|
||||
def enqueue(id, uri)
|
||||
@requests << [id, uri]
|
||||
def enqueue(id, uri, allow_insecure_http: false)
|
||||
@requests << [id, uri, allow_insecure_http]
|
||||
true
|
||||
end
|
||||
|
||||
@@ -76,13 +76,34 @@ module MeowMediaTest
|
||||
MeowTest.assert_equal("https://media.example/game/weather/rain.ogg", uri.to_s)
|
||||
end
|
||||
|
||||
MeowTest.test("Media URL policy rejects insecure private and traversing URLs") do
|
||||
MeowTest.test("Media URL policy isolates legacy HTTP from secure requests") do
|
||||
policy = Media::URLPolicy.new
|
||||
MeowTest.assert_raises(ArgumentError) { policy.resolve("http://example.com/", "sound.mp3") }
|
||||
MeowTest.assert_raises(ArgumentError) { policy.resolve("https://127.0.0.1/", "sound.mp3") }
|
||||
legacy = policy.resolve("http://example.com/", "sound.mp3", nil, :allow_insecure_http => true)
|
||||
MeowTest.assert_equal("http://example.com/sound.mp3", legacy.to_s)
|
||||
MeowTest.assert_raises(ArgumentError) do
|
||||
policy.resolve("http://127.0.0.1/", "sound.mp3", nil, :allow_insecure_http => true)
|
||||
end
|
||||
MeowTest.assert_raises(ArgumentError) { policy.resolve("https://example.com/", "../secret.mp3") }
|
||||
end
|
||||
|
||||
MeowTest.test("Media manager carries HTTP permission on each request") do
|
||||
downloader = FakeDownloader.new
|
||||
manager = Media::Manager.new("unused", :downloader => downloader)
|
||||
secure = Media::PlayRequest.new(:name => "secure.mp3", :url => "https://media.example/")
|
||||
legacy = Media::PlayRequest.new(
|
||||
:name => "legacy.mid",
|
||||
:url => "http://media.example/",
|
||||
:allow_insecure_http => true
|
||||
)
|
||||
manager.play(secure)
|
||||
manager.play(legacy)
|
||||
MeowTest.assert_equal(false, downloader.requests[0][2])
|
||||
MeowTest.assert_equal(true, downloader.requests[1][2])
|
||||
ensure
|
||||
manager.close if manager != nil
|
||||
end
|
||||
|
||||
MeowTest.test("Client.Media adapter normalizes play and stop commands") do
|
||||
play = Media::ClientMedia.play_request({"name" => "rain.ogg", "type" => "music", "loops" => -1, "caption" => "Rain"})
|
||||
stop = Media::ClientMedia.stop_request({"type" => "music", "fadeaway" => true})
|
||||
|
||||
Reference in New Issue
Block a user