git.iko.soy/typeable/oauth2-proxy
on master help sign in
77 lines 1.8 kB history raw
1package providers
3import (
4 "context"
5 "net/http"
6 "net/http/httptest"
7 "net/url"
8 "testing"
10 "github.com/stretchr/testify/assert"
13func testSourceHutProvider(hostname string) *SourceHutProvider {
14 p := NewSourceHutProvider(
15 &ProviderData{
16 ProviderName: "SourceHut",
17 LoginURL: &url.URL{},
18 RedeemURL: &url.URL{},
19 ProfileURL: &url.URL{},
20 ValidateURL: &url.URL{},
21 Scope: ""},
22 )
23 p.ProviderName = "SourceHut"
25 if hostname != "" {
26 updateURL(p.Data().LoginURL, hostname)
27 updateURL(p.Data().RedeemURL, hostname)
28 updateURL(p.Data().ProfileURL, hostname)
29 updateURL(p.Data().ValidateURL, hostname)
30 }
31 return p
34func testSourceHutBackend(payloads map[string][]string) *httptest.Server {
35 return httptest.NewServer(http.HandlerFunc(
36 func(w http.ResponseWriter, r *http.Request) {
37 index := 0
38 payload, ok := payloads[r.URL.Path]
39 if !ok {
40 w.WriteHeader(404)
41 } else if payload[index] == "" {
42 w.WriteHeader(204)
43 } else {
44 w.WriteHeader(200)
45 w.Write([]byte(payload[index]))
46 }
47 }))
50func TestSourceHutProvider_ValidateSessionWithBaseUrl(t *testing.T) {
51 b := testSourceHutBackend(map[string][]string{})
52 defer b.Close()
54 bURL, _ := url.Parse(b.URL)
55 p := testSourceHutProvider(bURL.Host)
57 session := CreateAuthorizedSession()
59 valid := p.ValidateSession(context.Background(), session)
60 assert.False(t, valid)
63func TestSourceHutProvider_ValidateSessionWithUserEmails(t *testing.T) {
64 b := testSourceHutBackend(map[string][]string{
65 "/query": {`{"data":{"me":{"username":"bitfehler","email":"ch@bitfehler.net"}}}`},
66 "/profile": {`ok`},
67 })
68 defer b.Close()
70 bURL, _ := url.Parse(b.URL)
71 p := testSourceHutProvider(bURL.Host)
73 session := CreateAuthorizedSession()
75 valid := p.ValidateSession(context.Background(), session)
76 assert.True(t, valid)