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}