service_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package service
  2. import (
  3. "testing"
  4. "github.com/glebarez/sqlite"
  5. "gorm.io/gorm"
  6. "wails-app/internal/dao"
  7. "wails-app/internal/global"
  8. "wails-app/internal/modules/central-payment/model/request"
  9. utils "wails-app/internal/pkg"
  10. )
  11. func TestDeviceLoginAndTokenAuthentication(t *testing.T) {
  12. db, err := gorm.Open(sqlite.Open("file:central_payment_login?mode=memory&cache=shared"), &gorm.Config{})
  13. if err != nil {
  14. t.Fatal(err)
  15. }
  16. if err := db.AutoMigrate(&dao.CentralPaymentDevice{}, &dao.CentralPaymentToken{}, &dao.CentralPaymentRequestLog{}); err != nil {
  17. t.Fatal(err)
  18. }
  19. previousDB := global.GVA_DB
  20. global.GVA_DB = db
  21. t.Cleanup(func() { global.GVA_DB = previousDB })
  22. device := dao.CentralPaymentDevice{
  23. DeviceID: "POF-TEST-01", Username: "pof-test", PasswordHash: utils.BcryptHash("test-password"),
  24. Enabled: true, PaymentEntry: PaymentEntryCentral,
  25. }
  26. if err := db.Create(&device).Error; err != nil {
  27. t.Fatal(err)
  28. }
  29. svc := New()
  30. token, err := svc.Login(request.LoginRequest{UserName: "pof-test", Password: "test-password"})
  31. if err != nil {
  32. t.Fatal(err)
  33. }
  34. if token == "" {
  35. t.Fatal("expected a token")
  36. }
  37. authenticated, err := svc.Authenticate(token)
  38. if err != nil {
  39. t.Fatal(err)
  40. }
  41. if authenticated.DeviceID != device.DeviceID {
  42. t.Fatalf("authenticated device = %q, want %q", authenticated.DeviceID, device.DeviceID)
  43. }
  44. if _, err := svc.Login(request.LoginRequest{UserName: "pof-test", Password: "wrong"}); err == nil {
  45. t.Fatal("expected invalid password to fail")
  46. }
  47. }