-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconsent_test.go
65 lines (55 loc) · 1.92 KB
/
consent_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package sdk
import (
"encoding/base64"
"encoding/json"
"strings"
"testing"
"time"
"github.com/gorilla/sessions"
"github.com/ory/fosite"
"github.com/ory/hydra/jwk"
"github.com/ory/hydra/oauth2"
"github.com/square/go-jose"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func genKey() *jose.JsonWebKeySet {
g := &jwk.RS256Generator{}
k, _ := g.Generate("")
return k
}
func TestConsentHelper(t *testing.T) {
km := &jwk.MemoryManager{Keys: map[string]*jose.JsonWebKeySet{}}
km.AddKeySet(oauth2.ConsentChallengeKey, genKey())
km.AddKeySet(oauth2.ConsentEndpointKey, genKey())
_, err := km.GetKey(oauth2.ConsentChallengeKey, "private")
require.Nil(t, err)
c := Consent{KeyManager: km}
s := oauth2.DefaultConsentStrategy{
KeyManager: km,
DefaultChallengeLifespan: time.Hour,
}
ar := fosite.NewAuthorizeRequest()
ar.Client = &fosite.DefaultClient{ID: "foobarclient"}
challenge, err := s.IssueChallenge(ar, "http://hydra/oauth2/auth?client_id=foobarclient", &sessions.Session{Values: map[interface{}]interface{}{}})
require.Nil(t, err)
claims, err := c.VerifyChallenge(challenge)
require.Nil(t, err)
assert.Equal(t, claims.Audience, "foobarclient")
assert.Equal(t, claims.RedirectURL, "http://hydra/oauth2/auth?client_id=foobarclient")
assert.NotEmpty(t, claims.ID)
resp, err := c.GenerateResponse(&ResponseRequest{
Challenge: challenge,
Subject: "buzz",
Scopes: []string{"offline", "openid"},
})
require.Nil(t, err)
var dec map[string]interface{}
result, err := base64.RawURLEncoding.DecodeString(strings.Split(strings.Replace(resp, "http://hydra/oauth2/auth?client_id=foobarclient&consent=", "", -1), ".")[1])
require.Nil(t, err)
require.Nil(t, json.Unmarshal(result, &dec))
assert.Equal(t, dec["jti"], claims.ID)
t.Logf("%v", dec["jti"])
assert.Equal(t, dec["scp"].([]interface{}), []interface{}{"offline", "openid"})
assert.Equal(t, dec["sub"], "buzz")
}