aboutsummaryrefslogtreecommitdiff
path: root/backend/internal/ibd/auth_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/internal/ibd/auth_test.go')
-rw-r--r--backend/internal/ibd/auth_test.go84
1 files changed, 34 insertions, 50 deletions
diff --git a/backend/internal/ibd/auth_test.go b/backend/internal/ibd/auth_test.go
index d28b33a..8a00d42 100644
--- a/backend/internal/ibd/auth_test.go
+++ b/backend/internal/ibd/auth_test.go
@@ -9,6 +9,8 @@ import (
"testing"
"time"
+ "github.com/ansg191/ibd-trader-backend/internal/ibd/transport"
+ "github.com/jarcoal/httpmock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/net/html"
@@ -134,44 +136,36 @@ func TestClient_Authenticate(t *testing.T) {
expectedVal := "test-cookie"
expectedExp := time.Now().Add(time.Hour).Round(time.Second).In(time.UTC)
- server := newServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- uri := r.URL.String()
- switch uri {
- case signInUrl:
- w.Header().Set("Content-Type", "text/html")
- _, err := w.Write([]byte(extractAuthHtml))
- require.NoError(t, err)
- return
- case authenticateUrl:
+ tp := httpmock.NewMockTransport()
+ tp.RegisterResponder("GET", signInUrl,
+ httpmock.NewStringResponder(http.StatusOK, extractAuthHtml))
+ tp.RegisterResponder("POST", authenticateUrl,
+ func(request *http.Request) (*http.Response, error) {
var body authRequestBody
- require.NoError(t, json.NewDecoder(r.Body).Decode(&body))
+ require.NoError(t, json.NewDecoder(request.Body).Decode(&body))
assert.Equal(t, "abc", body.Username)
assert.Equal(t, "xyz", body.Password)
- w.Header().Set("Content-Type", "text/html")
- _, err := w.Write([]byte(extractTokenParamsHtml))
- require.NoError(t, err)
- return
- case postAuthUrl:
- require.NoError(t, r.ParseForm())
- assert.Equal(t, extractTokenExpectedToken, r.Form.Get("token"))
+ return httpmock.NewStringResponse(http.StatusOK, extractTokenParamsHtml), nil
+ })
+ tp.RegisterResponder("POST", postAuthUrl,
+ func(request *http.Request) (*http.Response, error) {
+ require.NoError(t, request.ParseForm())
+ assert.Equal(t, extractTokenExpectedToken, request.Form.Get("token"))
params, err := url.QueryUnescape(extractTokenExpectedParams)
require.NoError(t, err)
- assert.Equal(t, params, r.Form.Get("params"))
+ assert.Equal(t, params, request.Form.Get("params"))
- w.Header().Set("Content-Type", "text/html")
- http.SetCookie(w, &http.Cookie{Name: cookieName, Value: expectedVal, Expires: expectedExp})
- _, err = w.Write([]byte("OK"))
- require.NoError(t, err)
- return
- default:
- t.Fatalf("unexpected URL: %s", uri)
- }
- }))
+ resp := httpmock.NewStringResponse(http.StatusOK, "OK")
+ cookie := &http.Cookie{Name: cookieName, Value: expectedVal, Expires: expectedExp}
+ resp.Header.Set("Set-Cookie", cookie.String())
+ return resp, nil
+ })
- client, err := NewClient(http.DefaultClient, apiKey, nil, "", WithBaseURL(server.URL))
- require.NoError(t, err)
+ client := NewClient([]transport.Transport{
+ &http.Client{Transport: tp},
+ }, nil)
cookie, err := client.Authenticate(context.Background(), "abc", "xyz")
require.NoError(t, err)
@@ -184,32 +178,22 @@ func TestClient_Authenticate(t *testing.T) {
func TestClient_Authenticate_401(t *testing.T) {
t.Parallel()
- server := newServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- uri := r.URL.String()
- switch uri {
- case signInUrl:
- w.Header().Set("Content-Type", "text/html")
- _, err := w.Write([]byte(extractAuthHtml))
- require.NoError(t, err)
- return
- case authenticateUrl:
+ tp := httpmock.NewMockTransport()
+ tp.RegisterResponder("GET", signInUrl,
+ httpmock.NewStringResponder(http.StatusOK, extractAuthHtml))
+ tp.RegisterResponder("POST", authenticateUrl,
+ func(request *http.Request) (*http.Response, error) {
var body authRequestBody
- require.NoError(t, json.NewDecoder(r.Body).Decode(&body))
+ require.NoError(t, json.NewDecoder(request.Body).Decode(&body))
assert.Equal(t, "abc", body.Username)
assert.Equal(t, "xyz", body.Password)
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusUnauthorized)
- _, err := w.Write([]byte(`{"name":"ValidationError","code":"ERR016","message":"Wrong username or password","description":"Wrong username or password"}`))
- require.NoError(t, err)
- return
- default:
- t.Fatalf("unexpected URL: %s", uri)
- }
- }))
+ return httpmock.NewStringResponse(http.StatusUnauthorized, `{"name":"ValidationError","code":"ERR016","message":"Wrong username or password","description":"Wrong username or password"}`), nil
+ })
- client, err := NewClient(http.DefaultClient, apiKey, nil, "", WithBaseURL(server.URL))
- require.NoError(t, err)
+ client := NewClient([]transport.Transport{
+ &http.Client{Transport: tp},
+ }, nil)
cookie, err := client.Authenticate(context.Background(), "abc", "xyz")
assert.Nil(t, cookie)