owncast/core/rtmp/utils_test.go

36 lines
1.2 KiB
Go
Raw Normal View History

package rtmp
import "testing"
func Test_secretMatch(t *testing.T) {
tests := []struct {
name string
streamKey string
path string
want bool
}{
{"positive", "abc", "/live/abc", true},
{"negative", "abc", "/live/def", false},
{"positive with numbers", "abc123", "/live/abc123", true},
{"negative with numbers", "abc123", "/live/def456", false},
{"positive with url chars", "one/two/three", "/live/one/two/three", true},
{"negative with url chars", "one/two/three", "/live/four/five/six", false},
{"check the entire secret", "three", "/live/one/two/three", false},
{"with /live/ in secret", "one/live/three", "/live/one/live/three", true},
{"bad path", "anything", "nonsense", false},
{"missing secret", "abc", "/live/", false},
{"missing secret and missing last slash", "abc", "/live", false},
{"streamkey before /live/", "streamkey", "/streamkey/live", false},
{"missing /live/", "anything", "/something/else", false},
{"stuff before and after /live/", "after", "/before/live/after", false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := secretMatch(tt.streamKey, tt.path); got != tt.want {
t.Errorf("secretMatch() = %v, want %v", got, tt.want)
}
})
}
}