mirror of
https://gitgud.io/yats/libkiwi.git
synced 2026-06-23 03:25:22 -04:00
Add user+pass login and 2fa support
This commit is contained in:
+80
-20
@@ -1,52 +1,112 @@
|
||||
package libkiwi
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/cookiejar"
|
||||
"net/url"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"golang.org/x/net/proxy"
|
||||
)
|
||||
|
||||
const TEST_HOST = "kiwifarms.st"
|
||||
const _TEST_HOST = "kiwifarms.st"
|
||||
|
||||
func TestGetPage(t *testing.T) {
|
||||
cookies := os.Getenv("TEST_COOKIES")
|
||||
kf, err := NewKF(http.Client{}, TEST_HOST, cookies)
|
||||
kf, err := newTestKF()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
log.Println("Getting homepage")
|
||||
resp, err := kf.GetPage(t.Context(), kf.domain)
|
||||
ctx := t.Context()
|
||||
|
||||
t.Log("Getting homepage\n")
|
||||
resp, err := kf.GetPage(ctx, kf.domain)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
log.Printf("Response status code: %d\n\n", resp.StatusCode)
|
||||
t.Logf("Response status code: %d\n\n", resp.StatusCode)
|
||||
for k, v := range resp.Header {
|
||||
if len(v) > 0 {
|
||||
log.Printf("%s: %s\n", k, v[0])
|
||||
t.Logf("%s: %s\n", k, v[0])
|
||||
}
|
||||
}
|
||||
log.Printf("Response host: %s\n\n", kf.domain)
|
||||
log.Printf("Cookies: %+v\n", resp.Cookies())
|
||||
t.Logf("Response host: %s\n\n", kf.domain)
|
||||
}
|
||||
|
||||
func TestRefreshSession(t *testing.T) {
|
||||
cookies := os.Getenv("TEST_COOKIES")
|
||||
kf, err := NewKF(http.Client{}, TEST_HOST, cookies)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
log.Println("Refreshing xf_session")
|
||||
tk, err := kf.RefreshSession(t.Context())
|
||||
func TestGetPost(t *testing.T) {
|
||||
kf, err := newTestKF()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
log.Println("New xf_session token: " + tk)
|
||||
const POST_ID = 22058462
|
||||
ctx := t.Context()
|
||||
|
||||
t.Logf("Getting post #%d\n", POST_ID)
|
||||
post, err := kf.GetPost(ctx, POST_ID)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
t.Logf("Post author: %+v\n", post.Author)
|
||||
}
|
||||
|
||||
func newTestKF() (*KF, error) {
|
||||
host := os.Getenv("KF_HOST")
|
||||
if host == "" {
|
||||
host = _TEST_HOST
|
||||
}
|
||||
|
||||
u, err := url.Parse("https://" + host)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := proxy.FromEnvironment()
|
||||
|
||||
tr := http.DefaultTransport.(*http.Transport).Clone()
|
||||
tr.DialContext = p.(proxy.ContextDialer).DialContext
|
||||
|
||||
jar, err := cookiejar.New(nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
hc := http.Client{
|
||||
Jar: jar,
|
||||
Transport: tr,
|
||||
}
|
||||
|
||||
return NewKF(hc, u)
|
||||
}
|
||||
|
||||
func TestLogin(t *testing.T) {
|
||||
user, pass := os.Getenv("TEST_USER"), os.Getenv("TEST_PASS")
|
||||
if user == "" || pass == "" {
|
||||
t.Log("TEST_USER and/or TEST_PASS empty. Skipping.\n")
|
||||
return
|
||||
}
|
||||
|
||||
kf, err := newTestKF()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
ctx := t.Context()
|
||||
|
||||
resp, err := kf.Login(ctx, user, pass)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
t.Logf("Login response: %+v\n", resp)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user