package ibd import ( "context" "testing" "time" "github.com/ansg191/ibd-trader-backend/internal/database" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestClient_getCookie(t *testing.T) { t.Parallel() t.Run("no cookies", func(t *testing.T) { t.Parallel() client := NewClient(new(emptyCookieSourceStub)) _, _, err := client.getCookie(context.Background(), nil) assert.ErrorIs(t, err, ErrNoAvailableCookies) }) t.Run("no cookies by subject", func(t *testing.T) { t.Parallel() client := NewClient(new(emptyCookieSourceStub)) subject := "test" _, _, err := client.getCookie(context.Background(), &subject) assert.ErrorIs(t, err, ErrNoAvailableCookies) }) t.Run("get any cookie", func(t *testing.T) { t.Parallel() client := NewClient(new(cookieSourceStub)) id, cookie, err := client.getCookie(context.Background(), nil) require.NoError(t, err) assert.Equal(t, uint(42), id) assert.Equal(t, cookieName, cookie.Name) assert.Equal(t, "test-token", cookie.Value) assert.Equal(t, "/", cookie.Path) assert.Equal(t, time.Unix(0, 0), cookie.Expires) assert.Equal(t, "investors.com", cookie.Domain) }) t.Run("get cookie by subject", func(t *testing.T) { t.Parallel() client := NewClient(new(cookieSourceStub)) subject := "test" id, cookie, err := client.getCookie(context.Background(), &subject) require.NoError(t, err) assert.Equal(t, uint(42), id) assert.Equal(t, cookieName, cookie.Name) assert.Equal(t, "test-token", cookie.Value) assert.Equal(t, "/", cookie.Path) assert.Equal(t, time.Unix(0, 0), cookie.Expires) assert.Equal(t, "investors.com", cookie.Domain) }) } type emptyCookieSourceStub struct{} func (c *emptyCookieSourceStub) GetAnyCookie(_ context.Context) (*database.IBDCookie, error) { return nil, nil } func (c *emptyCookieSourceStub) GetCookies(_ context.Context, _ string, _ bool) ([]database.IBDCookie, error) { return nil, nil } func (c *emptyCookieSourceStub) ReportCookieFailure(_ context.Context, _ uint) error { return nil } var testCookie = database.IBDCookie{ ID: 42, Token: "test-token", Expiry: time.Unix(0, 0), } type cookieSourceStub struct{} func (c *cookieSourceStub) GetAnyCookie(_ context.Context) (*database.IBDCookie, error) { return &testCookie, nil } func (c *cookieSourceStub) GetCookies(_ context.Context, _ string, _ bool) ([]database.IBDCookie, error) { return []database.IBDCookie{testCookie}, nil } func (c *cookieSourceStub) ReportCookieFailure(_ context.Context, _ uint) error { return nil }