Multiple provider support + OIDC provider
This commit is contained in:
48
internal/provider/providers_test.go
Normal file
48
internal/provider/providers_test.go
Normal file
@ -0,0 +1,48 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// Utilities
|
||||
|
||||
type OAuthServer struct {
|
||||
t *testing.T
|
||||
url *url.URL
|
||||
body map[string]string // method -> body
|
||||
}
|
||||
|
||||
func NewOAuthServer(t *testing.T, body map[string]string) (*httptest.Server, *url.URL) {
|
||||
handler := &OAuthServer{t: t, body: body}
|
||||
server := httptest.NewServer(handler)
|
||||
handler.url, _ = url.Parse(server.URL)
|
||||
return server, handler.url
|
||||
}
|
||||
|
||||
func (s *OAuthServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
body, _ := ioutil.ReadAll(r.Body)
|
||||
// fmt.Println("Got request:", r.URL, r.Method, string(body))
|
||||
|
||||
if r.Method == "POST" && r.URL.Path == "/token" {
|
||||
if s.body["token"] != string(body) {
|
||||
s.t.Fatal("Unexpected request body, expected", s.body["token"], "got", string(body))
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
fmt.Fprintf(w, `{"access_token":"123456789"}`)
|
||||
} else if r.Method == "GET" && r.URL.Path == "/userinfo" {
|
||||
fmt.Fprint(w, `{
|
||||
"id":"1",
|
||||
"email":"example@example.com",
|
||||
"verified_email":true,
|
||||
"hd":"example.com"
|
||||
}`)
|
||||
} else {
|
||||
s.t.Fatal("Unrecognised request: ", r.Method, r.URL, string(body))
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user