1// SPDX-License-Identifier: AGPL-3.0-or-later
2
3package mediapolicy
4
5import (
6 "net/url"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11)
12
13func TestAllows(t *testing.T) {
14 for _, tc := range []struct {
15 address string
16 allowed bool
17 }{
18 {"https://github.com/a.mp4", true},
19 {"http://github.com/a.mp4", true},
20 {"https://GITHUB.COM:443/a.mp4", true},
21 {"http://github.com:80/a.mp4", true},
22 {"https://github.com:8080/a.mp4", false},
23 {"https://github.com.evil.test/a.mp4", false},
24 {"https://evil.test@github.com/a.mp4", false},
25 {"//github.com/a.mp4", false},
26 {"ftp://github.com/a.mp4", false},
27 {"https://user-images.githubusercontent.com/a.mp4", true},
28 {"https://private-user-images.githubusercontent.com/a.mp4", true},
29 {"https://github-production-user-asset-6210df.s3.amazonaws.com/a.mp4", true},
30 } {
31 t.Run(tc.address, func(t *testing.T) {
32 u, err := url.Parse(tc.address)
33 require.NoError(t, err)
34 assert.Equal(t, tc.allowed, Allows(u, nil))
35 })
36 }
37 assert.Equal(t, "https://clips.example http://clips.example", Sources([]string{"clips.example"}))
38 assert.Empty(t, Sources([]string{}))
39}