terraform/vendor/github.com/pearkes/cloudflare/api_test.go

102 lines
1.9 KiB
Go

package cloudflare
import (
"os"
"testing"
. "github.com/motain/gocheck"
"github.com/pearkes/cloudflare/testutil"
)
type S struct {
client *Client
}
var _ = Suite(&S{})
var testServer = testutil.NewHTTPServer()
func (s *S) SetUpSuite(c *C) {
testServer.Start()
var err error
s.client, err = NewClient("foobar", "foobar")
s.client.URL = "http://localhost:4444"
if err != nil {
panic(err)
}
}
func (s *S) TearDownTest(c *C) {
testServer.Flush()
}
func makeClient(t *testing.T) *Client {
client, err := NewClient("foobaremail", "foobartoken")
if err != nil {
t.Fatalf("err: %v", err)
}
if client.Token != "foobartoken" {
t.Fatalf("token not set on client: %s", client.Token)
}
if client.Email != "foobaremail" {
t.Fatalf("email not set on client: %s", client.Token)
}
return client
}
func Test_NewClient_env(t *testing.T) {
os.Setenv("CLOUDFLARE_TOKEN", "bar")
os.Setenv("CLOUDFLARE_EMAIL", "bar")
client, err := NewClient("", "")
if err != nil {
t.Fatalf("err: %v", err)
}
if client.Token != "bar" {
t.Fatalf("token not set on client: %s", client.Token)
}
if client.Email != "bar" {
t.Fatalf("email not set on client: %s", client.Email)
}
}
func TestClient_NewRequest(t *testing.T) {
c := makeClient(t)
params := map[string]string{
"foo": "bar",
"baz": "bar",
}
req, err := c.NewRequest(params, "POST", "bar")
if err != nil {
t.Fatalf("bad: %v", err)
}
encoded := req.URL.Query()
if encoded.Get("foo") != "bar" {
t.Fatalf("bad: %v", encoded)
}
if encoded.Get("baz") != "bar" {
t.Fatalf("bad: %v", encoded)
}
if encoded.Get("a") != "bar" {
t.Fatalf("bad: %v", encoded)
}
expected := "https://www.cloudflare.com/api_json.html?a=bar&baz=bar&email=foobaremail&foo=bar&tkn=foobartoken"
if req.URL.String() != expected {
t.Fatalf("bad base url: %v\n\nexpected: %v", req.URL.String(), expected)
}
if req.Method != "POST" {
t.Fatalf("bad method: %v", req.Method)
}
}