1 package services
2
3 import (
4 "context"
5 "testing"
6
7 "github.com/DATA-DOG/go-sqlmock"
8 "github.com/stretchr/testify/assert"
9
10 "edge-infra.dev/pkg/edge/api/graph/model"
11 sqlquery "edge-infra.dev/pkg/edge/api/sql"
12 )
13
14 var (
15 ownerID = "f1509671-ba57-42c6-a68e-c72bf7256cd7"
16 expireTime = "4320h"
17 )
18
19 func TestCreateProviderSettings(t *testing.T) {
20 ctx := context.Background()
21 providerInput := createProvider()
22
23 db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
24 if err1 != nil {
25 t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
26 }
27 defer db.Close()
28
29 mock.ExpectBegin()
30
31 mock.ExpectQuery(sqlquery.GetProviderOwner).
32 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7")
33
34 mock.ExpectQuery(sqlquery.InsertProviderSettings).
35 WithArgs(*providerInput.PinAttempts, *providerInput.PinExpire, *providerInput.PinHistory, *providerInput.PinLength, *providerInput.BarcodeExpire, *providerInput.BarcodePrefix, *providerInput.BarcodeLength, *providerInput.BcryptCost, *providerInput.ProfileExpire).
36 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
37
38 mock.ExpectExec(sqlquery.InsertProviderOwner).
39 WithArgs(ownerID, "f1509671-ba57-42c6-a68e-c72bf7256cd7").
40 WillReturnResult(sqlmock.NewResult(1, 1))
41
42 mock.ExpectCommit()
43
44 mock.ExpectQuery(sqlquery.GetProviderOwner).
45 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
46 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
47
48 mock.ExpectQuery(sqlquery.GetProviderSettings).
49 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
50 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
51
52 iamsettingservice := NewIAMSettingsService(db)
53 providerSetting, _ := iamsettingservice.CreateSettings(ctx, ownerID, providerInput)
54 assert.Nil(t, providerSetting)
55 }
56 func TestDeleteProviderSettings(t *testing.T) {
57 ctx := context.Background()
58
59 db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
60 if err1 != nil {
61 t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
62 }
63 defer db.Close()
64
65 mock.ExpectQuery(sqlquery.GetProviderOwner).
66 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
67 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
68
69 mock.ExpectQuery(sqlquery.GetProviderSettings).
70 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
71 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
72
73 mock.ExpectQuery(sqlquery.GetProviderOwner).
74 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
75 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
76
77 mock.ExpectQuery(sqlquery.DeleteProviderSettings).
78 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
79 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
80
81 mock.ExpectQuery(sqlquery.DeleteProviderOwner).
82 WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
83 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
84
85 iamsettingservice := NewIAMSettingsService(db)
86 deleteSetting, _ := iamsettingservice.DeleteSettings(ctx, ownerID)
87 assert.Nil(t, deleteSetting)
88 }
89
90 func TestUpdateProviderSettings(t *testing.T) {
91 ctx := context.Background()
92 providerInput := createProvider()
93
94 db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
95 if err1 != nil {
96 t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
97 }
98 defer db.Close()
99
100 providerSettingsRows := sqlmock.NewRows([]string{"provider_settings_edge_id", "pin_attempts", "pin_expire", "pin_history", "pin_length", "barcode_expire", "barcode_prefix", "barcode_length", "bcrypt_cost", "profile_expire"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", 6, "4320h", 6, 6, "4320h", "temp", 12, 5, "4320h")
101 providerOwnerRows := sqlmock.NewRows([]string{"provider_owner_edge_id", "tenant_edge_id", "banner_edge_id", "provider_settings_edge_id"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", "f1509671-ba57-42c6-a68e-c72bf7256cd7", ownerID, "f1509671-ba57-42c6-a68e-c72bf7256cd7")
102
103 mock.ExpectQuery(sqlquery.GetProviderOwner).
104 WithArgs(ownerID).
105 WillReturnRows(providerOwnerRows)
106
107 mock.ExpectExec(sqlquery.UpdatePinAttempts).
108 WithArgs(9, "f1509671-ba57-42c6-a68e-c72bf7256cd7").
109 WillReturnResult(sqlmock.NewResult(1, 1))
110
111 mock.ExpectQuery(sqlquery.GetProviderOwner).
112 WithArgs(ownerID).
113 WillReturnRows(providerOwnerRows)
114
115 mock.ExpectQuery(sqlquery.GetProviderSettings).
116 WithArgs(ownerID).
117 WillReturnRows(providerSettingsRows.AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", 9, "4320h", 6, 6, "4320h", "temp", 12, 5, "4320h"))
118
119 iamsettingservice := NewIAMSettingsService(db)
120 updateSetting, _ := iamsettingservice.UpdateSettings(ctx, ownerID, providerInput)
121 assert.Nil(t, updateSetting)
122 }
123
124 func TestGetProviderSettings(t *testing.T) {
125 ctx := context.Background()
126
127 db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
128 if err1 != nil {
129 t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
130 }
131 defer db.Close()
132
133 providerSettingsRows := sqlmock.NewRows([]string{"provider_settings_edge_id", "pin_attempts", "pin_expire", "pin_history", "pin_length", "barcode_expire", "barcode_prefix", "barcode_length", "bcrypt_cost", "profile_expire"})
134
135 mock.ExpectQuery(sqlquery.GetProviderOwner).
136 WithArgs(ownerID).
137 WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
138
139 mock.ExpectQuery(sqlquery.GetProviderSettings).
140 WithArgs(ownerID).
141 WillReturnRows(providerSettingsRows.AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", 9, "4320h", 6, 6, "4320h", "temp", 12, 5, "4320h"))
142
143 iamsettingservice := NewIAMSettingsService(db)
144 providerSetting, _ := iamsettingservice.GetSettings(ctx, ownerID)
145 assert.NotNil(t, providerSetting)
146 }
147
148 func createProvider() model.ProviderInput {
149 pinAttempts := 6
150 pinExpire := expireTime
151 pinHistory := 6
152 pinLength := 6
153 barcodeExpire := expireTime
154 barcodePrefix := "temp"
155 barcodeLength := 12
156 bcryptCost := 5
157 profileExpire := expireTime
158
159 providerInput := model.ProviderInput{
160 PinAttempts: &pinAttempts,
161 PinExpire: &pinExpire,
162 PinHistory: &pinHistory,
163 PinLength: &pinLength,
164 BarcodeExpire: &barcodeExpire,
165 BarcodePrefix: &barcodePrefix,
166 BarcodeLength: &barcodeLength,
167 BcryptCost: &bcryptCost,
168 ProfileExpire: &profileExpire,
169 }
170
171 return providerInput
172 }
173
View as plain text