Skip to content

Commit e6b1579

Browse files
committed
fix: test coverage
1 parent d877507 commit e6b1579

File tree

4 files changed

+898
-11
lines changed

4 files changed

+898
-11
lines changed

consent/handler_test.go

Lines changed: 129 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ import (
3232
"testing"
3333
"time"
3434

35+
"github.com/golang/mock/gomock"
36+
"github.com/pkg/errors"
37+
3538
"github.com/stretchr/testify/assert"
3639
"github.com/tidwall/gjson"
3740

@@ -225,6 +228,7 @@ func TestGetConsentRequest(t *testing.T) {
225228
}
226229

227230
func TestDeleteConsentSession(t *testing.T) {
231+
228232
newWg := func(add int) *sync.WaitGroup {
229233
var wg sync.WaitGroup
230234
wg.Add(add)
@@ -238,7 +242,9 @@ func TestDeleteConsentSession(t *testing.T) {
238242
cl := createClientWithBackChannelEndpoint(t, reg, "client-1", []string{"login-session-1"}, backChannelWG)
239243
performLoginFlow(t, reg, "1", cl)
240244
performLoginFlow(t, reg, "2", cl)
241-
performDeleteConsentSession(t, reg, "client-1", "login-session-1", true)
245+
246+
performDeleteConsentSession(t, reg, "client-1", "login-session-1", true, false)
247+
242248
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
243249
require.Error(t, x.ErrNotFound, err)
244250
require.Nil(t, c1)
@@ -255,7 +261,9 @@ func TestDeleteConsentSession(t *testing.T) {
255261
cl := createClientWithBackChannelEndpoint(t, reg, "client-1", []string{}, backChannelWG)
256262
performLoginFlow(t, reg, "1", cl)
257263
performLoginFlow(t, reg, "2", cl)
258-
performDeleteConsentSession(t, reg, "client-1", "login-session-1", false)
264+
265+
performDeleteConsentSession(t, reg, "client-1", "login-session-1", false, false)
266+
259267
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
260268
require.Error(t, x.ErrNotFound, err)
261269
require.Nil(t, c1)
@@ -265,6 +273,32 @@ func TestDeleteConsentSession(t *testing.T) {
265273
backChannelWG.Wait()
266274
})
267275

276+
t.Run("case=subject=subject-1,client=client-1,session=session-1,expect revoke error", func(t *testing.T) {
277+
conf := internal.NewConfigurationWithDefaults()
278+
reg := internal.NewRegistryMemory(t, conf)
279+
ctrl := gomock.NewController(t)
280+
persister := reg.Persister()
281+
mockPersister := NewMockManager(ctrl)
282+
defer ctrl.Finish()
283+
mockPersister.EXPECT().RevokeSubjectClientLoginSessionConsentSession(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("SqlError"))
284+
backChannelWG := newWg(0)
285+
cl := createClientWithBackChannelEndpoint(t, reg, "client-1", []string{"login-session-1"}, backChannelWG)
286+
performLoginFlow(t, reg, "1", cl)
287+
performLoginFlow(t, reg, "2", cl)
288+
289+
reg.WithPersister(mockPersister)
290+
performDeleteConsentSession(t, reg, "client-1", "login-session-1", false, true)
291+
reg.WithPersister(persister)
292+
293+
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
294+
require.NoError(t, err)
295+
require.NotNil(t, c1)
296+
c2, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-2")
297+
require.NoError(t, err)
298+
require.NotNil(t, c2)
299+
backChannelWG.Wait()
300+
})
301+
268302
t.Run("case=subject=subject-1,client=client-1,trigger_back_channel_logout=true", func(t *testing.T) {
269303
conf := internal.NewConfigurationWithDefaults()
270304
reg := internal.NewRegistryMemory(t, conf)
@@ -273,7 +307,7 @@ func TestDeleteConsentSession(t *testing.T) {
273307
performLoginFlow(t, reg, "1", cl)
274308
performLoginFlow(t, reg, "2", cl)
275309

276-
performDeleteConsentSession(t, reg, "client-1", nil, true)
310+
performDeleteConsentSession(t, reg, "client-1", nil, true, false)
277311

278312
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
279313
require.Error(t, x.ErrNotFound, err)
@@ -292,7 +326,7 @@ func TestDeleteConsentSession(t *testing.T) {
292326
performLoginFlow(t, reg, "1", cl)
293327
performLoginFlow(t, reg, "2", cl)
294328

295-
performDeleteConsentSession(t, reg, "client-1", nil, false)
329+
performDeleteConsentSession(t, reg, "client-1", nil, false, false)
296330

297331
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
298332
require.Error(t, x.ErrNotFound, err)
@@ -303,6 +337,32 @@ func TestDeleteConsentSession(t *testing.T) {
303337
backChannelWG.Wait()
304338
})
305339

340+
t.Run("case=subject=subject-1,client=client-1,expect revoke error", func(t *testing.T) {
341+
conf := internal.NewConfigurationWithDefaults()
342+
reg := internal.NewRegistryMemory(t, conf)
343+
ctrl := gomock.NewController(t)
344+
persister := reg.Persister()
345+
mockPersister := NewMockManager(ctrl)
346+
defer ctrl.Finish()
347+
mockPersister.EXPECT().RevokeSubjectClientConsentSession(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.New("SqlError"))
348+
backChannelWG := newWg(0)
349+
cl := createClientWithBackChannelEndpoint(t, reg, "client-1", []string{"login-session-1"}, backChannelWG)
350+
performLoginFlow(t, reg, "1", cl)
351+
performLoginFlow(t, reg, "2", cl)
352+
353+
reg.WithPersister(mockPersister)
354+
performDeleteConsentSession(t, reg, "client-1", nil, false, true)
355+
reg.WithPersister(persister)
356+
357+
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
358+
require.NoError(t, err)
359+
require.NotNil(t, c1)
360+
c2, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-2")
361+
require.NoError(t, err)
362+
require.NotNil(t, c2)
363+
backChannelWG.Wait()
364+
})
365+
306366
t.Run("case=subject=subject-1,all=true,session=session-1,trigger_back_channel_logout=true", func(t *testing.T) {
307367
conf := internal.NewConfigurationWithDefaults()
308368
reg := internal.NewRegistryMemory(t, conf)
@@ -312,7 +372,7 @@ func TestDeleteConsentSession(t *testing.T) {
312372
performLoginFlow(t, reg, "1", cl1)
313373
performLoginFlow(t, reg, "2", cl2)
314374

315-
performDeleteConsentSession(t, reg, nil, "login-session-1", true)
375+
performDeleteConsentSession(t, reg, nil, "login-session-1", true, false)
316376

317377
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
318378
require.Error(t, x.ErrNotFound, err)
@@ -332,7 +392,7 @@ func TestDeleteConsentSession(t *testing.T) {
332392
performLoginFlow(t, reg, "1", cl1)
333393
performLoginFlow(t, reg, "2", cl2)
334394

335-
performDeleteConsentSession(t, reg, nil, "login-session-1", false)
395+
performDeleteConsentSession(t, reg, nil, "login-session-1", false, false)
336396

337397
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
338398
require.Error(t, x.ErrNotFound, err)
@@ -343,6 +403,33 @@ func TestDeleteConsentSession(t *testing.T) {
343403
backChannelWG.Wait()
344404
})
345405

406+
t.Run("case=subject=subject-1,all=true,session=session-1,expect revoke error", func(t *testing.T) {
407+
conf := internal.NewConfigurationWithDefaults()
408+
reg := internal.NewRegistryMemory(t, conf)
409+
ctrl := gomock.NewController(t)
410+
persister := reg.Persister()
411+
mockPersister := NewMockManager(ctrl)
412+
defer ctrl.Finish()
413+
mockPersister.EXPECT().RevokeLoginSessionConsentSession(gomock.Any(), gomock.Any()).Return(errors.New("SqlError"))
414+
backChannelWG := newWg(0)
415+
cl1 := createClientWithBackChannelEndpoint(t, reg, "client-1", []string{}, backChannelWG)
416+
cl2 := createClientWithBackChannelEndpoint(t, reg, "client-2", []string{}, backChannelWG)
417+
performLoginFlow(t, reg, "1", cl1)
418+
performLoginFlow(t, reg, "2", cl2)
419+
420+
reg.WithPersister(mockPersister)
421+
performDeleteConsentSession(t, reg, nil, "login-session-1", false, true)
422+
reg.WithPersister(persister)
423+
424+
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
425+
require.NoError(t, err)
426+
require.NotNil(t, c1)
427+
c2, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-2")
428+
require.NoError(t, err)
429+
require.NotNil(t, c2)
430+
backChannelWG.Wait()
431+
})
432+
346433
t.Run("case=subject=subject-1,all=true,trigger_back_channel_logout=true", func(t *testing.T) {
347434
conf := internal.NewConfigurationWithDefaults()
348435
reg := internal.NewRegistryMemory(t, conf)
@@ -352,7 +439,7 @@ func TestDeleteConsentSession(t *testing.T) {
352439
performLoginFlow(t, reg, "1", cl1)
353440
performLoginFlow(t, reg, "2", cl2)
354441

355-
performDeleteConsentSession(t, reg, nil, nil, true)
442+
performDeleteConsentSession(t, reg, nil, nil, true, false)
356443

357444
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
358445
require.Error(t, x.ErrNotFound, err)
@@ -372,7 +459,7 @@ func TestDeleteConsentSession(t *testing.T) {
372459
performLoginFlow(t, reg, "1", cl1)
373460
performLoginFlow(t, reg, "2", cl2)
374461

375-
performDeleteConsentSession(t, reg, nil, nil, false)
462+
performDeleteConsentSession(t, reg, nil, nil, false, false)
376463

377464
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
378465
require.Error(t, x.ErrNotFound, err)
@@ -382,9 +469,36 @@ func TestDeleteConsentSession(t *testing.T) {
382469
require.Nil(t, c2)
383470
backChannelWG.Wait()
384471
})
472+
473+
t.Run("case=subject=subject-1,all=true,expect revoke error", func(t *testing.T) {
474+
conf := internal.NewConfigurationWithDefaults()
475+
reg := internal.NewRegistryMemory(t, conf)
476+
ctrl := gomock.NewController(t)
477+
persister := reg.Persister()
478+
mockPersister := NewMockManager(ctrl)
479+
defer ctrl.Finish()
480+
mockPersister.EXPECT().RevokeSubjectConsentSession(gomock.Any(), gomock.Any()).Return(errors.New("SqlError"))
481+
backChannelWG := newWg(0)
482+
cl1 := createClientWithBackChannelEndpoint(t, reg, "client-1", []string{}, backChannelWG)
483+
cl2 := createClientWithBackChannelEndpoint(t, reg, "client-2", []string{}, backChannelWG)
484+
performLoginFlow(t, reg, "1", cl1)
485+
performLoginFlow(t, reg, "2", cl2)
486+
487+
reg.WithPersister(mockPersister)
488+
performDeleteConsentSession(t, reg, nil, nil, false, true)
489+
reg.WithPersister(persister)
490+
491+
c1, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-1")
492+
require.NoError(t, err)
493+
require.NotNil(t, c1)
494+
c2, err := reg.ConsentManager().GetConsentRequest(context.Background(), "consent-challenge-2")
495+
require.NoError(t, err)
496+
require.NotNil(t, c2)
497+
backChannelWG.Wait()
498+
})
385499
}
386500

387-
func performDeleteConsentSession(t *testing.T, reg driver.Registry, client, loginSessionId interface{}, triggerBackChannelLogout bool) {
501+
func performDeleteConsentSession(t *testing.T, reg driver.Registry, client, loginSessionId interface{}, triggerBackChannelLogout bool, expectError bool) {
388502
h := NewHandler(reg, reg.Config())
389503
r := x.NewRouterAdmin()
390504
h.SetRoutes(r)
@@ -410,8 +524,12 @@ func performDeleteConsentSession(t *testing.T, reg driver.Registry, client, logi
410524
req, err := http.NewRequest(http.MethodDelete, u.String(), nil)
411525

412526
require.NoError(t, err)
413-
_, err = c.Do(req)
414-
require.NoError(t, err)
527+
res, err := c.Do(req)
528+
if expectError {
529+
require.Equal(t, 500, res.StatusCode)
530+
} else {
531+
require.Equal(t, 204, res.StatusCode)
532+
}
415533
}
416534

417535
func performLoginFlow(t *testing.T, reg driver.Registry, flowId string, cl *client.Client) {

0 commit comments

Comments
 (0)