this repo has no description
1package oauth
2
3import (
4 "context"
5 "encoding/json"
6 "fmt"
7 "io"
8 "net/http"
9 "os"
10 "testing"
11
12 _ "github.com/joho/godotenv/autoload"
13 "github.com/stretchr/testify/assert"
14)
15
16var (
17 ctx = context.Background()
18 oauthClient = newTestOauthClient()
19 serverUrlRoot = os.Getenv("OAUTH_TEST_SERVER_URL_ROOT")
20 serverMetadataUrl = fmt.Sprintf("%s/oauth/client-metadata.json", serverUrlRoot)
21 serverCallbackUrl = fmt.Sprintf("%s/callback", serverUrlRoot)
22 pdsUrl = os.Getenv("OAUTH_TEST_PDS_URL")
23)
24
25func newTestOauthClient() *OauthClient {
26 prefix := "testing"
27 testKey, err := GenerateKey(&prefix)
28 if err != nil {
29 panic(err)
30 }
31
32 b, err := json.Marshal(testKey)
33 if err != nil {
34 panic(err)
35 }
36
37 c, err := NewOauthClient(OauthClientArgs{
38 ClientJwk: b,
39 ClientId: serverMetadataUrl,
40 RedirectUri: serverCallbackUrl,
41 })
42 if err != nil {
43 panic(err)
44 }
45
46 // make sure the server is running
47
48 req, err := http.NewRequest("GET", serverMetadataUrl, nil)
49 if err != nil {
50 panic(err)
51 }
52
53 resp, err := http.DefaultClient.Do(req)
54 if err != nil {
55 panic(fmt.Errorf("could not connect to test server. are you sure you started it?"))
56 }
57 defer resp.Body.Close()
58
59 io.Copy(io.Discard, resp.Body)
60
61 return c
62}
63
64func TestResolvePDSAuthServer(t *testing.T) {
65 assert := assert.New(t)
66
67 authServer, err := oauthClient.ResolvePDSAuthServer(ctx, pdsUrl)
68
69 assert.NoError(err)
70 assert.NotEmpty(authServer)
71 assert.Equal(pdsUrl, authServer)
72}
73
74func TestFetchAuthServerMetadata(t *testing.T) {
75 assert := assert.New(t)
76
77 meta, err := oauthClient.FetchAuthServerMetadata(ctx, pdsUrl)
78
79 assert.NoError(err)
80 assert.IsType(&OauthAuthorizationMetadata{}, meta)
81}
82
83func TestGenerateKey(t *testing.T) {
84 assert := assert.New(t)
85
86 prefix := "testing"
87 _, err := GenerateKey(&prefix)
88 assert.NoError(err)
89}