@@ -3,6 +3,7 @@ package persistence
3
3
import (
4
4
"context"
5
5
"errors"
6
+ "slices"
6
7
7
8
"github.com/Masterminds/squirrel"
8
9
"github.com/deluan/rest"
@@ -19,7 +20,7 @@ var _ = Describe("UserRepository", func() {
19
20
var repo model.UserRepository
20
21
21
22
BeforeEach (func () {
22
- repo = NewUserRepository (log .NewContext (context . TODO ()), GetDBXBuilder ())
23
+ repo = NewUserRepository (log .NewContext (GinkgoT (). Context ()), GetDBXBuilder ())
23
24
})
24
25
25
26
Describe ("Put/Get/FindByUsername" , func () {
@@ -80,7 +81,7 @@ var _ = Describe("UserRepository", func() {
80
81
It ("does nothing if passwords are not specified" , func () {
81
82
user := & model.User {ID : "2" , UserName : "johndoe" }
82
83
err := validatePasswordChange (user , loggedUser )
83
- Expect (err ).To ( BeNil ())
84
+ Expect (err ).ToNot ( HaveOccurred ())
84
85
})
85
86
86
87
Context ("Autogenerated password (used with Reverse Proxy Authentication)" , func () {
@@ -92,7 +93,7 @@ var _ = Describe("UserRepository", func() {
92
93
It ("does nothing if passwords are not specified" , func () {
93
94
user = * loggedUser
94
95
err := validatePasswordChange (& user , loggedUser )
95
- Expect (err ).To ( BeNil ())
96
+ Expect (err ).ToNot ( HaveOccurred ())
96
97
})
97
98
It ("does not requires currentPassword for regular user" , func () {
98
99
user = * loggedUser
@@ -119,7 +120,7 @@ var _ = Describe("UserRepository", func() {
119
120
user := & model.User {ID : "2" , UserName : "johndoe" }
120
121
user .NewPassword = "new"
121
122
err := validatePasswordChange (user , loggedUser )
122
- Expect (err ).To ( BeNil ())
123
+ Expect (err ).ToNot ( HaveOccurred ())
123
124
})
124
125
It ("requires currentPassword to change its own" , func () {
125
126
user := * loggedUser
@@ -157,7 +158,7 @@ var _ = Describe("UserRepository", func() {
157
158
user .CurrentPassword = "abc123"
158
159
user .NewPassword = "new"
159
160
err := validatePasswordChange (& user , loggedUser )
160
- Expect (err ).To ( BeNil ())
161
+ Expect (err ).ToNot ( HaveOccurred ())
161
162
})
162
163
})
163
164
@@ -201,10 +202,11 @@ var _ = Describe("UserRepository", func() {
201
202
user .CurrentPassword = "abc123"
202
203
user .NewPassword = "new"
203
204
err := validatePasswordChange (& user , loggedUser )
204
- Expect (err ).To ( BeNil ())
205
+ Expect (err ).ToNot ( HaveOccurred ())
205
206
})
206
207
})
207
208
})
209
+
208
210
Describe ("validateUsernameUnique" , func () {
209
211
var repo * tests.MockedUserRepo
210
212
var existingUser * model.User
@@ -275,16 +277,16 @@ var _ = Describe("UserRepository", func() {
275
277
Describe ("GetUserLibraries" , func () {
276
278
It ("returns empty list when user has no library associations" , func () {
277
279
libraries , err := repo .GetUserLibraries ("non-existent-user" )
278
- Expect (err ).To ( BeNil ())
280
+ Expect (err ).ToNot ( HaveOccurred ())
279
281
Expect (libraries ).To (HaveLen (0 ))
280
282
})
281
283
282
284
It ("returns user's associated libraries" , func () {
283
285
err := repo .SetUserLibraries (userID , []int {library1 .ID , library2 .ID })
284
- Expect (err ).To ( BeNil ())
286
+ Expect (err ).ToNot ( HaveOccurred ())
285
287
286
288
libraries , err := repo .GetUserLibraries (userID )
287
- Expect (err ).To ( BeNil ())
289
+ Expect (err ).ToNot ( HaveOccurred ())
288
290
Expect (libraries ).To (HaveLen (2 ))
289
291
290
292
libIDs := []int {libraries [0 ].ID , libraries [1 ].ID }
@@ -296,39 +298,39 @@ var _ = Describe("UserRepository", func() {
296
298
It ("sets user's library associations" , func () {
297
299
libraryIDs := []int {library1 .ID , library2 .ID }
298
300
err := repo .SetUserLibraries (userID , libraryIDs )
299
- Expect (err ).To ( BeNil ())
301
+ Expect (err ).ToNot ( HaveOccurred ())
300
302
301
303
libraries , err := repo .GetUserLibraries (userID )
302
- Expect (err ).To ( BeNil ())
304
+ Expect (err ).ToNot ( HaveOccurred ())
303
305
Expect (libraries ).To (HaveLen (2 ))
304
306
})
305
307
306
308
It ("replaces existing associations" , func () {
307
309
// Set initial associations
308
310
err := repo .SetUserLibraries (userID , []int {library1 .ID , library2 .ID })
309
- Expect (err ).To ( BeNil ())
311
+ Expect (err ).ToNot ( HaveOccurred ())
310
312
311
313
// Replace with just one library
312
314
err = repo .SetUserLibraries (userID , []int {library1 .ID })
313
- Expect (err ).To ( BeNil ())
315
+ Expect (err ).ToNot ( HaveOccurred ())
314
316
315
317
libraries , err := repo .GetUserLibraries (userID )
316
- Expect (err ).To ( BeNil ())
318
+ Expect (err ).ToNot ( HaveOccurred ())
317
319
Expect (libraries ).To (HaveLen (1 ))
318
320
Expect (libraries [0 ].ID ).To (Equal (library1 .ID ))
319
321
})
320
322
321
323
It ("removes all associations when passed empty slice" , func () {
322
324
// Set initial associations
323
325
err := repo .SetUserLibraries (userID , []int {library1 .ID , library2 .ID })
324
- Expect (err ).To ( BeNil ())
326
+ Expect (err ).ToNot ( HaveOccurred ())
325
327
326
328
// Remove all
327
329
err = repo .SetUserLibraries (userID , []int {})
328
- Expect (err ).To ( BeNil ())
330
+ Expect (err ).ToNot ( HaveOccurred ())
329
331
330
332
libraries , err := repo .GetUserLibraries (userID )
331
- Expect (err ).To ( BeNil ())
333
+ Expect (err ).ToNot ( HaveOccurred ())
332
334
Expect (libraries ).To (HaveLen (0 ))
333
335
})
334
336
})
@@ -347,7 +349,7 @@ var _ = Describe("UserRepository", func() {
347
349
348
350
// Count initial libraries
349
351
existingLibs , err := libRepo .GetAll ()
350
- Expect (err ).To ( BeNil ())
352
+ Expect (err ).ToNot ( HaveOccurred ())
351
353
initialLibCount = len (existingLibs )
352
354
353
355
library1 = model.Library {ID : 0 , Name : "Admin Test Library 1" , Path : "/admin/test/path1" }
@@ -377,11 +379,11 @@ var _ = Describe("UserRepository", func() {
377
379
}
378
380
379
381
err := repo .Put (& adminUser )
380
- Expect (err ).To ( BeNil ())
382
+ Expect (err ).ToNot ( HaveOccurred ())
381
383
382
384
// Admin should automatically have access to all libraries (including existing ones)
383
385
libraries , err := repo .GetUserLibraries (adminUser .ID )
384
- Expect (err ).To ( BeNil ())
386
+ Expect (err ).ToNot ( HaveOccurred ())
385
387
Expect (libraries ).To (HaveLen (initialLibCount + 2 )) // Initial libraries + our 2 test libraries
386
388
387
389
libIDs := make ([]int , len (libraries ))
@@ -403,20 +405,20 @@ var _ = Describe("UserRepository", func() {
403
405
}
404
406
405
407
err := repo .Put (& regularUser )
406
- Expect (err ).To ( BeNil ())
408
+ Expect (err ).ToNot ( HaveOccurred ())
407
409
408
410
// Give them access to just one library
409
411
err = repo .SetUserLibraries (regularUser .ID , []int {library1 .ID })
410
- Expect (err ).To ( BeNil ())
412
+ Expect (err ).ToNot ( HaveOccurred ())
411
413
412
414
// Promote to admin
413
415
regularUser .IsAdmin = true
414
416
err = repo .Put (& regularUser )
415
- Expect (err ).To ( BeNil ())
417
+ Expect (err ).ToNot ( HaveOccurred ())
416
418
417
419
// Should now have access to all libraries (including existing ones)
418
420
libraries , err := repo .GetUserLibraries (regularUser .ID )
419
- Expect (err ).To ( BeNil ())
421
+ Expect (err ).ToNot ( HaveOccurred ())
420
422
Expect (libraries ).To (HaveLen (initialLibCount + 2 )) // Initial libraries + our 2 test libraries
421
423
422
424
libIDs := make ([]int , len (libraries ))
@@ -438,11 +440,11 @@ var _ = Describe("UserRepository", func() {
438
440
}
439
441
440
442
err := repo .Put (& regularUser )
441
- Expect (err ).To ( BeNil ())
443
+ Expect (err ).ToNot ( HaveOccurred ())
442
444
443
445
// Regular user should be assigned to default libraries (library ID 1 from migration)
444
446
libraries , err := repo .GetUserLibraries (regularUser .ID )
445
- Expect (err ).To ( BeNil ())
447
+ Expect (err ).ToNot ( HaveOccurred ())
446
448
Expect (libraries ).To (HaveLen (1 ))
447
449
Expect (libraries [0 ].ID ).To (Equal (1 ))
448
450
Expect (libraries [0 ].DefaultNewUsers ).To (BeTrue ())
@@ -492,18 +494,19 @@ var _ = Describe("UserRepository", func() {
492
494
493
495
It ("populates Libraries field when getting a single user" , func () {
494
496
user , err := repo .Get (testUser .ID )
495
- Expect (err ).To ( BeNil ())
497
+ Expect (err ).ToNot ( HaveOccurred ())
496
498
Expect (user .Libraries ).To (HaveLen (2 ))
497
499
498
500
libIDs := []int {user .Libraries [0 ].ID , user .Libraries [1 ].ID }
499
501
Expect (libIDs ).To (ContainElements (library1 .ID , library2 .ID ))
500
502
501
503
// Check that library details are properly populated
502
504
for _ , lib := range user .Libraries {
503
- if lib .ID == library1 .ID {
505
+ switch lib .ID {
506
+ case library1 .ID :
504
507
Expect (lib .Name ).To (Equal ("Field Test Library 1" ))
505
508
Expect (lib .Path ).To (Equal ("/field/test/path1" ))
506
- } else if lib . ID == library2 .ID {
509
+ case library2 .ID :
507
510
Expect (lib .Name ).To (Equal ("Field Test Library 2" ))
508
511
Expect (lib .Path ).To (Equal ("/field/test/path2" ))
509
512
}
@@ -512,17 +515,13 @@ var _ = Describe("UserRepository", func() {
512
515
513
516
It ("populates Libraries field when getting all users" , func () {
514
517
users , err := repo .(* userRepository ).GetAll ()
515
- Expect (err ).To ( BeNil ())
518
+ Expect (err ).ToNot ( HaveOccurred ())
516
519
517
520
// Find our test user in the results
518
- var foundUser * model.User
519
- for i := range users {
520
- if users [i ].ID == testUser .ID {
521
- foundUser = & users [i ]
522
- break
523
- }
524
- }
521
+ found := slices .IndexFunc (users , func (u model.User ) bool { return u .ID == testUser .ID })
522
+ Expect (found ).ToNot (Equal (- 1 ))
525
523
524
+ foundUser := users [found ]
526
525
Expect (foundUser ).ToNot (BeNil ())
527
526
Expect (foundUser .Libraries ).To (HaveLen (2 ))
528
527
@@ -532,7 +531,7 @@ var _ = Describe("UserRepository", func() {
532
531
533
532
It ("populates Libraries field when finding user by username" , func () {
534
533
user , err := repo .FindByUsername (testUser .UserName )
535
- Expect (err ).To ( BeNil ())
534
+ Expect (err ).ToNot ( HaveOccurred ())
536
535
Expect (user .Libraries ).To (HaveLen (2 ))
537
536
538
537
libIDs := []int {user .Libraries [0 ].ID , user .Libraries [1 ].ID }
@@ -550,12 +549,10 @@ var _ = Describe("UserRepository", func() {
550
549
IsAdmin : false ,
551
550
}
552
551
Expect (repo .Put (& userWithoutLibs )).To (BeNil ())
553
- defer func () {
554
- _ = repo .(* userRepository ).delete (squirrel.Eq {"id" : userWithoutLibs .ID })
555
- }()
552
+ defer func () { _ = repo .(* userRepository ).delete (squirrel.Eq {"id" : userWithoutLibs .ID }) }()
556
553
557
554
user , err := repo .Get (userWithoutLibs .ID )
558
- Expect (err ).To ( BeNil ())
555
+ Expect (err ).ToNot ( HaveOccurred ())
559
556
Expect (user .Libraries ).ToNot (BeNil ())
560
557
// Regular users should be assigned to default libraries (library ID 1 from migration)
561
558
Expect (user .Libraries ).To (HaveLen (1 ))
0 commit comments