118 lines
2.7 KiB
Go
118 lines
2.7 KiB
Go
package ytsclient
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"strconv"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
var (
|
|
southParkID = "2806"
|
|
southParkMovie Movie
|
|
// Removed [YTS.AG] as it may change and does not matter
|
|
southParkMagnet = "magnet:?xt=urn:btih:04AC27DCF18C68470F35969517B477003C325301&" +
|
|
"dn=South+Park%3A+Bigger%2C+Longer+%26+Uncut+%281999%29+%5B1080p%5D&" +
|
|
"tr=udp%3A%2F%2Fglotorrents.pw%3A6969%2Fannounce&" +
|
|
"tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&" +
|
|
"tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&" +
|
|
"tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&" +
|
|
"tr=udp%3A%2F%2Fp4p.arenabg.ch%3A1337&" +
|
|
"tr=udp%3A%2F%2Ftracker.internetwarriors.net%3A1337"
|
|
|
|
tests = []struct {
|
|
name string
|
|
test func(t *testing.T)
|
|
}{{
|
|
name: "no dns server",
|
|
test: func(t *testing.T) {
|
|
dnsServer = "192.168.1.1"
|
|
yc := NewClient()
|
|
ms, err := yc.List(nil)
|
|
require.Error(t, err)
|
|
t.Log(err)
|
|
require.Nil(t, ms)
|
|
dnsServer = "8.8.8.8"
|
|
},
|
|
},{
|
|
name: "default url",
|
|
test: func(t *testing.T) {
|
|
yc := NewClient()
|
|
c, ok := yc.(*client)
|
|
require.True(t, ok)
|
|
assert.Contains(t, c.url,"https://yts.")
|
|
},
|
|
}, {
|
|
name: "list",
|
|
test: func(t *testing.T) {
|
|
c := NewClient()
|
|
_, err := c.List(nil)
|
|
assert.NoError(t, err)
|
|
},
|
|
}, {
|
|
name: "search",
|
|
test: func(t *testing.T) {
|
|
c := NewClient()
|
|
l, err := c.Search("South Park", nil)
|
|
assert.NoError(t, err)
|
|
require.NotEmpty(t, l)
|
|
southParkMovie = l[0]
|
|
assert.Equal(t, southParkID, strconv.Itoa(southParkMovie.ID))
|
|
},
|
|
}, {
|
|
name: "list 50",
|
|
test: func(t *testing.T) {
|
|
c := NewClient()
|
|
p := &ListParams{Limit: 50}
|
|
l, err := c.List(p)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 50, len(l))
|
|
},
|
|
}, {
|
|
name: "get",
|
|
test: func(t *testing.T) {
|
|
c := NewClient()
|
|
m, err := c.Get(southParkID, nil)
|
|
assert.NoError(t, err)
|
|
assert.NotEmpty(t, m)
|
|
assert.Equal(t, southParkMovie.Torrents, m.Torrents)
|
|
},
|
|
}, {
|
|
name: "magnet",
|
|
test: func(t *testing.T) {
|
|
require.NotEmpty(t, southParkMovie.Torrents)
|
|
m, err := southParkMovie.Magnet(southParkMovie.Torrents[1])
|
|
assert.NoError(t, err)
|
|
// Don't test trackers list nor YTS extension
|
|
e := strings.Split(southParkMagnet, "tr=")
|
|
a := strings.Split(m, "tr=")
|
|
assert.Equal(t, e[0], a[0])
|
|
},
|
|
}, {
|
|
name: "suggestions",
|
|
test: func(t *testing.T) {
|
|
c := NewClient()
|
|
s, err := c.Suggestions(10)
|
|
assert.NoError(t, err)
|
|
assert.NotEmpty(t, s)
|
|
},
|
|
}}
|
|
)
|
|
|
|
func TestYTSClient(t *testing.T) {
|
|
for _, test := range tests {
|
|
t.Run(test.name, test.test)
|
|
}
|
|
}
|
|
|
|
|
|
func TestResolveYts(t *testing.T) {
|
|
defaultHost = ""
|
|
host, err := ResolveYts()
|
|
require.NoError(t, err)
|
|
require.Contains(t, host, "https://yts.")
|
|
t.Log(host)
|
|
}
|