@@ -161,3 +161,65 @@ func TestTenantManagerGetTenant(t *testing.T) {
161
161
require .Equal (t , 1 , tc .requestCount [t3 .Id ])
162
162
require .Equal (t , t3 , * tenant )
163
163
}
164
+
165
+ func TestCalculateValidUntil (t * testing.T ) {
166
+ now := time .Now ()
167
+ timeout := 5 * time .Minute
168
+ timeWindow := 100 * time .Millisecond
169
+
170
+ tests := map [string ]struct {
171
+ tenant * sm.Tenant
172
+ expectedBefore time.Time
173
+ expectedAfter time.Time
174
+ }{
175
+ "no secret store" : {
176
+ tenant : & sm.Tenant {},
177
+ expectedBefore : now .Add (timeout ).Add (timeWindow ),
178
+ expectedAfter : now .Add (timeout ).Add (- timeWindow ),
179
+ },
180
+ "secret store with no expiration" : {
181
+ tenant : & sm.Tenant {
182
+ SecretStore : & sm.SecretStore {},
183
+ },
184
+ expectedBefore : now .Add (timeout ).Add (timeWindow ),
185
+ expectedAfter : now .Add (timeout ).Add (- timeWindow ),
186
+ },
187
+ "secret store with earlier expiration" : {
188
+ tenant : & sm.Tenant {
189
+ SecretStore : & sm.SecretStore {
190
+ Token : "token" ,
191
+ Expiry : float64 (now .Add (2 * time .Minute ).UnixNano ()) / 1e9 ,
192
+ },
193
+ },
194
+ expectedBefore : now .Add (2 * time .Minute ).Add (timeWindow ),
195
+ expectedAfter : now .Add (2 * time .Minute ).Add (- timeWindow ),
196
+ },
197
+ "secret store with later expiration" : {
198
+ tenant : & sm.Tenant {
199
+ SecretStore : & sm.SecretStore {
200
+ Token : "token" ,
201
+ Expiry : float64 (now .Add (10 * time .Minute ).UnixNano ()) / 1e9 ,
202
+ },
203
+ },
204
+ expectedBefore : now .Add (timeout ).Add (timeWindow ),
205
+ expectedAfter : now .Add (timeout ).Add (- timeWindow ),
206
+ },
207
+ }
208
+
209
+ for name , tt := range tests {
210
+ t .Run (name , func (t * testing.T ) {
211
+ tm := & Manager {
212
+ timeout : timeout ,
213
+ }
214
+
215
+ validUntil := tm .calculateValidUntil (tt .tenant )
216
+
217
+ if validUntil .After (tt .expectedBefore ) {
218
+ t .Errorf ("validUntil %v is after expected time %v" , validUntil , tt .expectedBefore )
219
+ }
220
+ if validUntil .Before (tt .expectedAfter ) {
221
+ t .Errorf ("validUntil %v is before expected time %v" , validUntil , tt .expectedAfter )
222
+ }
223
+ })
224
+ }
225
+ }
0 commit comments