5849898283
Unit tests functional and coverage back to 100% Add more routes to dictionary, add more credentials, add default port 5554, rename cameradar logs ENV variable, improve unit test readability, remove tmp file
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
package curl
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
"sync"
|
|
)
|
|
|
|
func setupTestServer(serverContent string) *httptest.Server {
|
|
return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprintln(w, serverContent)
|
|
}))
|
|
}
|
|
|
|
func TestEasyInterface(t *testing.T) {
|
|
ts := setupTestServer("")
|
|
defer ts.Close()
|
|
|
|
easy := EasyInit()
|
|
defer easy.Cleanup()
|
|
|
|
easy.Setopt(OPT_URL, ts.URL)
|
|
if err := easy.Perform(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestCallbackFunction(t *testing.T) {
|
|
serverContent := "A random string"
|
|
ts := setupTestServer(serverContent)
|
|
defer ts.Close()
|
|
|
|
easy := EasyInit()
|
|
defer easy.Cleanup()
|
|
|
|
easy.Setopt(OPT_URL, ts.URL)
|
|
easy.Setopt(OPT_WRITEFUNCTION, func(buf []byte, userdata interface{}) bool {
|
|
result := string(buf)
|
|
expected := serverContent + "\n"
|
|
if result != expected {
|
|
t.Errorf("output should be %q and is %q.", expected, result)
|
|
}
|
|
return true
|
|
})
|
|
if err := easy.Perform(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestEscape(t *testing.T) {
|
|
easy := EasyInit()
|
|
defer easy.Cleanup()
|
|
|
|
payload := `payload={"msg": "First line\nSecond Line"}`
|
|
expected := `payload%3D%7B%22msg%22%3A%20%22First%20line%5CnSecond%20Line%22%7D`
|
|
result := easy.Escape(payload)
|
|
if result != expected {
|
|
t.Errorf("escaped output should be %q and is %q.", expected, result)
|
|
}
|
|
}
|
|
|
|
func TestConcurrentInitAndCleanup(t *testing.T) {
|
|
c := 2
|
|
var wg sync.WaitGroup
|
|
wg.Add(c)
|
|
for i := 0; i < c; i++ {
|
|
go func() {
|
|
wg.Done()
|
|
easy := EasyInit()
|
|
defer easy.Cleanup()
|
|
}()
|
|
}
|
|
|
|
wg.Wait()
|
|
}
|