1
21
22 package fosite_test
23
24 import (
25 "net/url"
26 "testing"
27 "time"
28
29 "github.com/stretchr/testify/assert"
30
31 . "github.com/ory/fosite"
32 )
33
34 func TestRequest(t *testing.T) {
35 r := &Request{
36 RequestedAt: time.Now().UTC(),
37 Client: &DefaultClient{},
38 RequestedScope: Arguments{"scope"},
39 GrantedScope: Arguments{"scope"},
40 RequestedAudience: Arguments{"scope"},
41 GrantedAudience: Arguments{"scope"},
42 Form: url.Values{"foo": []string{"bar"}},
43 Session: new(DefaultSession),
44 }
45
46 assert.Equal(t, r.RequestedAt, r.GetRequestedAt())
47 assert.Equal(t, r.Client, r.GetClient())
48 assert.Equal(t, r.GrantedScope, r.GetGrantedScopes())
49 assert.Equal(t, r.RequestedScope, r.GetRequestedScopes())
50 assert.Equal(t, r.Form, r.GetRequestForm())
51 assert.Equal(t, r.Session, r.GetSession())
52 }
53
54 func TestMergeRequest(t *testing.T) {
55 a := &Request{
56 ID: "123",
57 RequestedAt: time.Now().UTC(),
58 Client: &DefaultClient{ID: "123"},
59 RequestedScope: Arguments{"scope-3", "scope-4"},
60 RequestedAudience: Arguments{"aud-3", "aud-4"},
61 GrantedScope: []string{"scope-1", "scope-2"},
62 GrantedAudience: []string{"aud-1", "aud-2"},
63 Form: url.Values{"foo": []string{"fasdf"}},
64 Session: new(DefaultSession),
65 }
66 b := &Request{
67 RequestedAt: time.Now().UTC(),
68 Client: &DefaultClient{},
69 RequestedScope: Arguments{},
70 GrantedScope: []string{},
71 Form: url.Values{},
72 Session: new(DefaultSession),
73 }
74
75 b.Merge(a)
76 assert.EqualValues(t, a.RequestedAt, b.RequestedAt)
77 assert.EqualValues(t, a.Client, b.Client)
78 assert.EqualValues(t, a.RequestedScope, b.RequestedScope)
79 assert.EqualValues(t, a.RequestedAudience, b.RequestedAudience)
80 assert.EqualValues(t, a.GrantedScope, b.GrantedScope)
81 assert.EqualValues(t, a.GrantedAudience, b.GrantedAudience)
82 assert.EqualValues(t, a.Form, b.Form)
83 assert.EqualValues(t, a.Session, b.Session)
84 assert.EqualValues(t, a.ID, b.ID)
85 }
86
87 func TestSanitizeRequest(t *testing.T) {
88 a := &Request{
89 RequestedAt: time.Now().UTC(),
90 Client: &DefaultClient{ID: "123"},
91 RequestedScope: Arguments{"asdff"},
92 GrantedScope: []string{"asdf"},
93 Form: url.Values{
94 "foo": []string{"fasdf"},
95 "bar": []string{"fasdf", "faaaa"},
96 "baz": []string{"fasdf"},
97 },
98 Session: new(DefaultSession),
99 }
100
101 b := a.Sanitize([]string{"bar", "baz"})
102 assert.NotEqual(t, a.Form.Encode(), b.GetRequestForm().Encode())
103
104 assert.Empty(t, b.GetRequestForm().Get("foo"))
105 assert.Equal(t, "fasdf", b.GetRequestForm().Get("bar"))
106 assert.Equal(t, []string{"fasdf", "faaaa"}, b.GetRequestForm()["bar"])
107 assert.Equal(t, "fasdf", b.GetRequestForm().Get("baz"))
108
109 assert.Equal(t, "fasdf", a.GetRequestForm().Get("foo"))
110 assert.Equal(t, "fasdf", a.GetRequestForm().Get("bar"))
111 assert.Equal(t, []string{"fasdf", "faaaa"}, a.GetRequestForm()["bar"])
112 assert.Equal(t, "fasdf", a.GetRequestForm().Get("baz"))
113 }
114
115 func TestIdentifyRequest(t *testing.T) {
116 a := &Request{
117 RequestedAt: time.Now().UTC(),
118 Client: &DefaultClient{},
119 RequestedScope: Arguments{},
120 GrantedScope: []string{},
121 Form: url.Values{"foo": []string{"bar"}},
122 Session: new(DefaultSession),
123 }
124
125 b := a.Sanitize([]string{})
126 b.GetID()
127 assert.Equal(t, a.ID, b.GetID())
128 }
129
View as plain text