alist/internal/qbittorrent/client_test.go

155 lines
3.0 KiB
Go

package qbittorrent
import (
"net/http"
"net/http/cookiejar"
"net/url"
"testing"
)
func TestLogin(t *testing.T) {
// test logging in with wrong password
u, err := url.Parse("http://admin:admin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
jar, err := cookiejar.New(nil)
if err != nil {
t.Error(err)
}
var c = &client{
url: u,
client: http.Client{Jar: jar},
}
err = c.login()
if err == nil {
t.Error(err)
}
// test logging in with correct password
u, err = url.Parse("http://admin:adminadmin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
c.url = u
err = c.login()
if err != nil {
t.Error(err)
}
}
// in this test, the `Bypass authentication for clients on localhost` option in qBittorrent webui should be disabled
func TestAuthorized(t *testing.T) {
// init client
u, err := url.Parse("http://admin:adminadmin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
jar, err := cookiejar.New(nil)
if err != nil {
t.Error(err)
}
var c = &client{
url: u,
client: http.Client{Jar: jar},
}
// test without logging in, which should be unauthorized
authorized := c.authorized()
if authorized {
t.Error("Should not be authorized")
}
// test after logging in
err = c.login()
if err != nil {
t.Error(err)
}
authorized = c.authorized()
if !authorized {
t.Error("Should be authorized")
}
}
func TestNew(t *testing.T) {
_, err := New("http://admin:adminadmin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
_, err = New("http://admin:wrong_password@127.0.0.1:8080/")
if err == nil {
t.Error("Should get an error")
}
}
func TestAdd(t *testing.T) {
// init client
c, err := New("http://admin:adminadmin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
err = c.AddFromLink(
"https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso.torrent",
"D:\\qBittorrentDownload\\alist",
"uuid-1",
)
if err != nil {
t.Error(err)
}
err = c.AddFromLink(
"magnet:?xt=urn:btih:375ae3280cd80a8e9d7212e11dfaf7c45069dd35&dn=archlinux-2023.02.01-x86_64.iso",
"D:\\qBittorrentDownload\\alist",
"uuid-2",
)
if err != nil {
t.Error(err)
}
}
func TestGetInfo(t *testing.T) {
// init client
c, err := New("http://admin:adminadmin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
_, err = c.GetInfo("uuid-1")
if err != nil {
t.Error(err)
}
}
func TestGetFiles(t *testing.T) {
// init client
c, err := New("http://admin:adminadmin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
files, err := c.GetFiles("uuid-1")
if err != nil {
t.Error(err)
}
if len(files) != 1 {
t.Error("should have exactly one file")
}
}
func TestDelete(t *testing.T) {
// init client
c, err := New("http://admin:adminadmin@127.0.0.1:8080/")
if err != nil {
t.Error(err)
}
err = c.AddFromLink(
"https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso.torrent",
"D:\\qBittorrentDownload\\alist",
"uuid-1",
)
if err != nil {
t.Error(err)
}
err = c.Delete("uuid-1", true)
if err != nil {
t.Error(err)
}
}