diff options
Diffstat (limited to 'client/client_test.go')
-rw-r--r-- | client/client_test.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/client/client_test.go b/client/client_test.go new file mode 100644 index 0000000..fb1701c --- /dev/null +++ b/client/client_test.go @@ -0,0 +1,66 @@ +package client + +import ( + "io/ioutil" + "net/http" + "net/http/httptest" + "strings" + "testing" +) + +func TestBadAuth(t *testing.T) { + var hf http.HandlerFunc = func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("authorization") != "token TEST-TOKEN" { + w.WriteHeader(http.StatusUnauthorized) + return + } + w.Write([]byte("encoded yay")) + } + tests := []struct { + name string + tok string + expectErr bool + expectBody bool + }{ + {"valid token", "TEST-TOKEN", false, true}, + {"empty token", "", true, false}, + {"invalid token", "bad token", true, false}, + } + server := httptest.NewServer(hf) + defer server.Close() + c := CaesarClient{Endpoint: server.URL} + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + r, err := c.EncodeMessage(strings.NewReader("secret message")) + if err == nil { + t.Errorf("should have gotten error") + } + if r != nil { + t.Errorf("should not have gotten a reader") + } + }) + } +} + +func TestEncode(t *testing.T) { + var hf http.HandlerFunc = func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("response")) + } + server := httptest.NewServer(hf) + defer server.Close() + c := CaesarClient{Endpoint: server.URL} + r, err := c.EncodeMessage(strings.NewReader("secret message")) + if err != nil { + t.Errorf("should not have gotten error: %v", err) + } + if r == nil { + t.Errorf("should have gotten a reader") + } + resp, err := ioutil.ReadAll(r) + if err != nil { + t.Fatalf("could not read message: %v", err) + } + if string(resp) != "response" { + t.Errorf("expected 'response' but got '%s'", resp) + } +} |