595 lines
12 KiB
Go
595 lines
12 KiB
Go
|
package mediarange_test
|
||
|
|
||
|
import (
|
||
|
"sourcecode.social/reiver/go-httpaccept/mediarange"
|
||
|
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestMediaRange_Match(t *testing.T) {
|
||
|
|
||
|
tests := []struct{
|
||
|
MediaType string
|
||
|
MediaRange mediarange.MediaRange
|
||
|
Expected bool
|
||
|
}{
|
||
|
{
|
||
|
MediaType: "application/activity+json",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/epub+zip",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/gzip",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/json",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/pdf",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/msword",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/octet-stream",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/ogg",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/rtf",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/xhtml+xml",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/x-httpd-php",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/X-httpd-PHP",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/gif",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/png",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "Image/png",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/PnG",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "IMAGE/PNG",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/html",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/html",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/plain",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/PLAIN",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "xyz/banana",
|
||
|
MediaRange: mediarange.Create("", ""),
|
||
|
Expected: true,
|
||
|
},
|
||
|
|
||
|
|
||
|
|
||
|
{
|
||
|
MediaType: "application/activity+json",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/epub+zip",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/gzip",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/json",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/pdf",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/msword",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/octet-stream",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/ogg",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/rtf",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/xhtml+xml",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/x-httpd-php",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/X-httpd-PHP",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/gif",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/png",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "Image/png",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/PnG",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "IMAGE/PNG",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/html",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/html",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/plain",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/PLAIN",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "xyz/banana",
|
||
|
MediaRange: mediarange.Create("*", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
|
||
|
|
||
|
|
||
|
{
|
||
|
MediaType: "application/activity+json",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/epub+zip",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/gzip",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/json",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/pdf",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/msword",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/octet-stream",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/ogg",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/rtf",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/xhtml+xml",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/x-httpd-php",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/X-httpd-PHP",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/gif",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/png",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "Image/png",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/PnG",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "IMAGE/PNG",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/html",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/html",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/plain",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/PLAIN",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "xyz/banana",
|
||
|
MediaRange: mediarange.Create("application", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
|
||
|
|
||
|
|
||
|
{
|
||
|
MediaType: "application/activity+json",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/epub+zip",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/gzip",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/json",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/pdf",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/msword",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/octet-stream",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/ogg",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/rtf",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/xhtml+xml",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/x-httpd-php",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/X-httpd-PHP",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/gif",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/png",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "Image/png",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/PnG",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "IMAGE/PNG",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/html",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/html",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/plain",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/PLAIN",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "xyz/banana",
|
||
|
MediaRange: mediarange.Create("image", "*"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
|
||
|
|
||
|
|
||
|
{
|
||
|
MediaType: "application/activity+json",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/epub+zip",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/gzip",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/json",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/pdf",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/msword",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/octet-stream",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/ogg",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/rtf",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/xhtml+xml",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/x-httpd-php",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "application/X-httpd-PHP",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/gif",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/png",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "Image/png",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "image/PnG",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "IMAGE/PNG",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: true,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/html",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/html",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "text/plain",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "TEXT/PLAIN",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
{
|
||
|
MediaType: "xyz/banana",
|
||
|
MediaRange: mediarange.Create("image", "png"),
|
||
|
Expected: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for testNumber, test := range tests {
|
||
|
|
||
|
actual := test.MediaRange.Match(test.MediaType)
|
||
|
expected := test.Expected
|
||
|
|
||
|
if expected != actual {
|
||
|
t.Errorf("For test #%d, the actual result from trying to match the media-type against the media-range is not what was expected.", testNumber)
|
||
|
t.Logf("MEDIA-TYPE: %q", test.MediaType)
|
||
|
t.Logf("MEDIA-RANGE: %q", test.MediaRange)
|
||
|
t.Logf("EXPECTED: %t", expected)
|
||
|
t.Logf("ACTUAL: %t", actual)
|
||
|
continue
|
||
|
}
|
||
|
}
|
||
|
}
|