slownie/slownie_test.go
2019-10-07 05:23:52 +02:00

83 lines
1.9 KiB
Go

package slownie
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"math/rand"
"net/http"
"net/url"
"regexp"
"testing"
"time"
)
type slownieResponse struct {
Error int
Data slownieResponseData `json:"data"`
}
type slownieResponseData struct {
Word string
Header string
}
func TestKwotaSlownie(t *testing.T) {
client := &http.Client{}
r := rand.New(rand.NewSource(time.Now().UnixNano()))
space := regexp.MustCompile(`\s+`)
cookie1 := &http.Cookie{Name: "PHPSESSID", Value: "shplbjsjd3o4fdt9iutbb0o233", HttpOnly: false}
for i := 0; i < 1000; i++ {
x := r.Float64() * 1000000000
if kwota, err := KwotaSlownie(x); err == nil {
valueAsString := fmt.Sprintf("%.2f", x)
reqBody := url.Values{"number": {valueAsString}, "currency": {"pln"}, "country": {"pl"}, "csrf": {"bb50ebc27eaee017c346e88d9cbe2b94efb4b53a"}}
reqBodyStr := reqBody.Encode()
req, err := http.NewRequest("POST", "https://slownie.pl/ajax/word/get", bytes.NewBuffer([]byte(reqBodyStr)))
req.AddCookie(cookie1)
req.Header.Set("Content-type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
t.Fatal("webrequest failed")
}
if resp.StatusCode != 200 {
t.Fatalf("codeL %d", resp.StatusCode)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
t.Fatal("parsing body failed")
}
gotSlownieResponse := slownieResponse{}
err = json.Unmarshal(body, &gotSlownieResponse)
if err != nil {
t.Fatal("unmarshaling body failed", err)
return
}
if gotSlownieResponse.Error != 0 {
t.Fatalf("got error: %d", gotSlownieResponse.Error)
}
their := space.ReplaceAllString(gotSlownieResponse.Data.Word, " ")
if their != kwota {
t.Errorf("%.2f\n", x)
t.Errorf("Got: %s\n", gotSlownieResponse.Data.Word)
t.Errorf("Own: %s\n", kwota)
} else {
t.Logf("%.2f sucessful", x)
}
} else {
t.Errorf("%.2f %s\n", x, err)
}
}
}