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) }