package http_test
import (
"context"
"fmt"
"testing"
"github.com/stretchr/testify/assert"
http "github.com/valyala/fasthttp"
repository "source.toby3d.me/toby3d/auth/internal/client/repository/http"
"source.toby3d.me/toby3d/auth/internal/common"
"source.toby3d.me/toby3d/auth/internal/domain"
"source.toby3d.me/toby3d/auth/internal/testing/httptest"
)
const testBody string = `
%[1]s
`
func TestGet(t *testing.T) {
t.Parallel()
client := domain.TestClient(t)
httpClient, _, cleanup := httptest.New(t, testHandler(t, client))
t.Cleanup(cleanup)
result, err := repository.NewHTTPClientRepository(httpClient).Get(context.Background(), client.ID)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, client.Name, result.Name)
assert.Equal(t, client.ID.String(), result.ID.String())
for i := range client.URL {
assert.Equal(t, client.URL[i].String(), result.URL[i].String())
}
for i := range client.Logo {
assert.Equal(t, client.Logo[i].String(), result.Logo[i].String())
}
for i := range client.RedirectURI {
assert.Equal(t, client.RedirectURI[i].String(), result.RedirectURI[i].String())
}
}
func testHandler(tb testing.TB, client *domain.Client) http.RequestHandler {
tb.Helper()
return func(ctx *http.RequestCtx) {
ctx.Response.Header.Set(http.HeaderLink, `<`+client.RedirectURI[0].String()+`>; rel="redirect_uri"`)
ctx.SuccessString(common.MIMETextHTMLCharsetUTF8, fmt.Sprintf(
testBody, client.Name[0], client.URL[0].String(), client.Logo[0].String(),
client.RedirectURI[1].String(),
))
}
}