(t *testing.T)
| 302 | } |
| 303 | |
| 304 | func TestOTPClearOnTokenKeyChange(t *testing.T) { |
| 305 | t.Parallel() |
| 306 | |
| 307 | app, _ := tests.NewTestApp() |
| 308 | defer app.Cleanup() |
| 309 | |
| 310 | user1, err := app.FindAuthRecordByEmail("users", "test@example.com") |
| 311 | if err != nil { |
| 312 | t.Fatal(err) |
| 313 | } |
| 314 | |
| 315 | user2, err := app.FindAuthRecordByEmail("users", "test2@example.com") |
| 316 | if err != nil { |
| 317 | t.Fatal(err) |
| 318 | } |
| 319 | |
| 320 | otpsToCreate := map[*core.Record]int{ |
| 321 | user1: 3, |
| 322 | user2: 2, |
| 323 | } |
| 324 | for user, total := range otpsToCreate { |
| 325 | for range total { |
| 326 | otp := core.NewOTP(app) |
| 327 | otp.SetCollectionRef(user.Collection().Id) |
| 328 | otp.SetRecordRef(user.Id) |
| 329 | otp.SetPassword("123456") |
| 330 | if err := app.Save(otp); err != nil { |
| 331 | t.Fatal(err) |
| 332 | } |
| 333 | } |
| 334 | } |
| 335 | |
| 336 | // update both users |
| 337 | err = app.Save(user1) |
| 338 | if err != nil { |
| 339 | t.Fatal(err) |
| 340 | } |
| 341 | |
| 342 | user2.RefreshTokenKey() |
| 343 | err = app.Save(user2) |
| 344 | if err != nil { |
| 345 | t.Fatal(err) |
| 346 | } |
| 347 | |
| 348 | expectedOTPs := map[*core.Record]int{ |
| 349 | user1: 3, |
| 350 | user2: 0, |
| 351 | } |
| 352 | |
| 353 | for user, expected := range expectedOTPs { |
| 354 | otps, err := app.FindAllOTPsByRecord(user) |
| 355 | if err != nil { |
| 356 | t.Fatal(err) |
| 357 | } |
| 358 | |
| 359 | if len(otps) != expected { |
| 360 | t.Fatalf("Expected %d OTPs, got %d", expected, len(otps)) |
| 361 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…