@@ -92,57 +92,45 @@ func (f *fakeIDPLocked) PrivateKey() *rsa.PrivateKey {
92
92
}
93
93
94
94
func (f * fakeIDPLocked ) Provider () ProviderJSON {
95
- if ! f .mu .TryRLock () {
96
- panic ("developer error: fakeIDPLocked is already locked" )
97
- }
95
+ f .mu .RLock ()
98
96
defer f .mu .RUnlock ()
99
97
return f .provider
100
98
}
101
99
102
100
func (f * fakeIDPLocked ) Config () * oauth2.Config {
103
- if ! f .mu .TryRLock () {
104
- panic ("developer error: fakeIDPLocked is already locked" )
105
- }
101
+ f .mu .RLock ()
106
102
defer f .mu .RUnlock ()
107
103
return f .cfg
108
104
}
109
105
110
106
func (f * fakeIDPLocked ) Handler () http.Handler {
111
- if ! f .mu .TryRLock () {
112
- panic ("developer error: fakeIDPLocked is already locked" )
113
- }
107
+ f .mu .RLock ()
114
108
defer f .mu .RUnlock ()
115
109
return f .handler
116
110
}
117
111
118
112
func (f * fakeIDPLocked ) SetIssuer (issuer string ) {
119
- if ! f .mu .TryLock () {
120
- panic ("developer error: fakeIDPLocked is already locked" )
121
- }
113
+ f .mu .Lock ()
122
114
defer f .mu .Unlock ()
123
115
f .issuer = issuer
124
116
}
125
117
126
118
func (f * fakeIDPLocked ) SetIssuerURL (issuerURL * url.URL ) {
127
- if ! f .mu .TryLock () {
128
- panic ("developer error: fakeIDPLocked is already locked" )
129
- }
119
+ f .mu .Lock ()
130
120
defer f .mu .Unlock ()
131
121
f .issuerURL = issuerURL
132
122
}
133
123
134
124
func (f * fakeIDPLocked ) SetProvider (provider ProviderJSON ) {
135
- if ! f .mu .TryLock () {
136
- panic ("developer error: fakeIDPLocked is already locked" )
137
- }
125
+ f .mu .Lock ()
138
126
defer f .mu .Unlock ()
139
127
f .provider = provider
140
128
}
141
129
130
+ // MutateConfig is a helper function to mutate the oauth2.Config.
131
+ // Beware of re-entrant locks!
142
132
func (f * fakeIDPLocked ) MutateConfig (fn func (cfg * oauth2.Config )) {
143
- if ! f .mu .TryLock () {
144
- panic ("developer error: fakeIDPLocked is already locked" )
145
- }
133
+ f .mu .Lock ()
146
134
if f .cfg == nil {
147
135
f .cfg = & oauth2.Config {}
148
136
}
@@ -151,25 +139,19 @@ func (f *fakeIDPLocked) MutateConfig(fn func(cfg *oauth2.Config)) {
151
139
}
152
140
153
141
func (f * fakeIDPLocked ) SetHandler (handler http.Handler ) {
154
- if ! f .mu .TryLock () {
155
- panic ("developer error: fakeIDPLocked is already locked" )
156
- }
142
+ f .mu .Lock ()
157
143
defer f .mu .Unlock ()
158
144
f .handler = handler
159
145
}
160
146
161
147
func (f * fakeIDPLocked ) SetFakeCoderd (fakeCoderd func (req * http.Request ) (* http.Response , error )) {
162
- if ! f .mu .TryLock () {
163
- panic ("developer error: fakeIDPLocked is already locked" )
164
- }
148
+ f .mu .Lock ()
165
149
defer f .mu .Unlock ()
166
150
f .fakeCoderd = fakeCoderd
167
151
}
168
152
169
153
func (f * fakeIDPLocked ) FakeCoderd () func (req * http.Request ) (* http.Response , error ) {
170
- if ! f .mu .TryRLock () {
171
- panic ("developer error: fakeIDPLocked is already locked" )
172
- }
154
+ f .mu .RLock ()
173
155
defer f .mu .RUnlock ()
174
156
return f .fakeCoderd
175
157
}
@@ -1530,17 +1512,16 @@ func (f *FakeIDP) PublicKey() crypto.PublicKey {
1530
1512
func (f * FakeIDP ) OauthConfig (t testing.TB , scopes []string ) * oauth2.Config {
1531
1513
t .Helper ()
1532
1514
1533
- authURL := f .locked .Provider ().AuthURL
1534
- tokenURL := f .locked .Provider ().TokenURL
1515
+ provider := f .locked .Provider ()
1535
1516
f .locked .MutateConfig (func (cfg * oauth2.Config ) {
1536
1517
if len (scopes ) == 0 {
1537
1518
scopes = []string {"openid" , "email" , "profile" }
1538
1519
}
1539
1520
cfg .ClientID = f .clientID
1540
1521
cfg .ClientSecret = f .clientSecret
1541
1522
cfg .Endpoint = oauth2.Endpoint {
1542
- AuthURL : authURL ,
1543
- TokenURL : tokenURL ,
1523
+ AuthURL : provider . AuthURL ,
1524
+ TokenURL : provider . TokenURL ,
1544
1525
AuthStyle : oauth2 .AuthStyleInParams ,
1545
1526
}
1546
1527
// If the user is using a real network request, they will need to do
0 commit comments