@@ -22,11 +22,8 @@ public class ProviderTests
2222
2323 public ProviderTests ( )
2424 {
25- _options . Setup ( x => x . Value . HmacKey ) . Returns ( HmacTestSecretKey ) ;
26- _options . Setup ( x => x . Value . HmacKeyVersion ) . Returns ( 1 ) ;
27-
28- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
29- _sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
25+ _options . Setup ( x => x . Value ) . Returns ( new ReferenceNumberOptions { HmacKeyVersion = 1 , HmacKey = HmacTestSecretKey } ) ;
26+ _sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , new MemoryCache ( new MemoryCacheOptions ( ) ) , _timeProvider . Object ) ;
3027 }
3128
3229 [ Fact ]
@@ -45,10 +42,7 @@ public async Task GetReferenceNumber_GeneratesCorrectlyFormattedNumber_MinDate()
4542 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 1970 , 1 , 1 , 00 , 00 , 00 ) ) ;
4643 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 1 ) ;
4744
48- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
49- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
50-
51- var result = await sut . GetReferenceNumber ( ) ;
45+ var result = await _sut . GetReferenceNumber ( ) ;
5246 result . Should ( ) . Be ( "0170-73123-6791" ) ;
5347 }
5448
@@ -70,10 +64,7 @@ public async Task GetReferenceNumber_GeneratesCorrectlyFormattedNumber_FirstTwoD
7064 initialDate = initialDate . AddDays ( 1 ) ;
7165 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( initialDate ) ;
7266
73- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
74- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
75-
76- var result = await sut . GetReferenceNumber ( ) ;
67+ var result = await _sut . GetReferenceNumber ( ) ;
7768
7869 Assert . True ( _sut . IsValidBookingReference ( result ) ) ;
7970 result . Should ( ) . StartWith ( $ "{ dayStep : 00} 25") ;
@@ -85,11 +76,8 @@ public async Task GetReferenceNumber_GeneratesCorrectlyFormattedNumber_MaxDate_L
8576 {
8677 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2024 , 12 , 31 , 23 , 59 , 59 ) ) ;
8778 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 99999999 ) ;
88-
89- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
90- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
91-
92- var result = await sut . GetReferenceNumber ( ) ;
79+
80+ var result = await _sut . GetReferenceNumber ( ) ;
9381
9482 Assert . True ( _sut . IsValidBookingReference ( result ) ) ;
9583 result . Should ( ) . Be ( "9224-44976-9071" ) ;
@@ -100,11 +88,8 @@ public async Task GetReferenceNumber_GeneratesCorrectlyFormattedNumber_MinSequen
10088 {
10189 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2077 , 1 , 01 , 17 , 23 , 00 ) ) ;
10290 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 0 ) ;
103-
104- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
105- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
106-
107- var result = await sut . GetReferenceNumber ( ) ;
91+
92+ var result = await _sut . GetReferenceNumber ( ) ;
10893 result . Should ( ) . Be ( "0177-00000-0006" ) ;
10994 }
11095
@@ -114,10 +99,7 @@ public async Task GetReferenceNumber_ChecksumDigitExists_MeansOnlyOneReferenceIs
11499 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2016 , 6 , 06 , 17 , 23 , 00 ) ) ;
115100 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 76543789 ) ;
116101
117- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
118- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
119-
120- var result = await sut . GetReferenceNumber ( ) ;
102+ var result = await _sut . GetReferenceNumber ( ) ;
121103 result . Should ( ) . Be ( "4016-90927-6174" ) ;
122104 Assert . True ( _sut . IsValidBookingReference ( result ) ) ;
123105
@@ -139,11 +121,8 @@ public async Task GetReferenceNumber_GeneratesCorrectlyFormattedNumber_MinSequen
139121 {
140122 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2077 , 1 , 01 , 17 , 23 , 00 ) ) ;
141123 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 1 ) ;
142-
143- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
144- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
145-
146- var result = await sut . GetReferenceNumber ( ) ;
124+
125+ var result = await _sut . GetReferenceNumber ( ) ;
147126 result . Should ( ) . Be ( "0177-40950-2016" ) ;
148127 }
149128
@@ -152,17 +131,14 @@ public async Task GetReferenceNumber_GeneratesCorrectlyFormattedNumber_SameSeque
152131 {
153132 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 356035 ) ;
154133 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2025 , 7 , 13 , 17 , 23 , 00 ) ) ;
155-
156- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
157- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
158-
159- var firstResult = await sut . GetReferenceNumber ( ) ;
134+
135+ var firstResult = await _sut . GetReferenceNumber ( ) ;
160136 firstResult . Should ( ) . Be ( "4925-52301-3450" ) ;
161137
162138 //sequence has passed 100 million and reset
163139 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 356035 + 100000000 ) ;
164140 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2025 , 7 , 17 , 17 , 23 , 00 ) ) ;
165- var secondResult = await sut . GetReferenceNumber ( ) ;
141+ var secondResult = await _sut . GetReferenceNumber ( ) ;
166142 secondResult . Should ( ) . Be ( "5025-82949-7652" ) ;
167143 }
168144
@@ -177,16 +153,13 @@ public async Task GetReferenceNumber_GeneratesSameReferenceNumber_SameSequenceNu
177153 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 356035 ) ;
178154 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2025 , 7 , 13 , 17 , 23 , 00 ) ) ;
179155
180- using var cache = new MemoryCache ( new MemoryCacheOptions ( ) ) ;
181- var sut = new Provider ( _options . Object , _bookingReferenceDocumentStore . Object , cache , _timeProvider . Object ) ;
182-
183- var firstResult = await sut . GetReferenceNumber ( ) ;
156+ var firstResult = await _sut . GetReferenceNumber ( ) ;
184157 firstResult . Should ( ) . Be ( "4925-52301-3450" ) ;
185158
186159 //sequence has passed 100 million and reset
187160 _bookingReferenceDocumentStore . Setup ( x => x . GetNextSequenceNumber ( ) ) . ReturnsAsync ( 356035 + 100000000 ) ;
188161 _timeProvider . Setup ( x => x . GetUtcNow ( ) ) . Returns ( new DateTime ( 2025 , 7 , 13 , 17 , 23 , 00 ) ) ;
189- var secondResult = await sut . GetReferenceNumber ( ) ;
162+ var secondResult = await _sut . GetReferenceNumber ( ) ;
190163
191164 //NOT DESIRABLE!!
192165 secondResult . Should ( ) . Be ( firstResult ) ;
@@ -211,12 +184,12 @@ public void PartitionBucketLengthInDays_Should_Equal_Four()
211184 }
212185
213186 /// <summary>
214- /// It is possible, but unlikely, that two different hmac keys produce the same stride value for the same partition key
187+ /// It is possible, but unlikely, that two different hmac keys produce the same multiplier value for the same partition key
215188 /// This is known and does not cause any issues with the logic.
216189 /// The hard-coded data for this test that proves this scenario was found by trial and error iterations.
217190 /// </summary>
218191 [ Fact ]
219- public void DeriveSequenceStride_DifferentHmacKeys_CanProduce_SameStride_For_SamePartitionKey ( )
192+ public void DeriveSequenceMultiplier_DifferentHmacKeys_CanProduce_SameMultiplier_For_SamePartitionKey ( )
220193 {
221194 const string samePartitionKey = "3125" ;
222195
@@ -292,23 +265,23 @@ public void DeriveSequenceStride_DifferentHmacKeys_CanProduce_SameStride_For_Sam
292265 49
293266 ] ;
294267
295- _options . Setup ( x => x . Value . HmacKey ) . Returns ( hmacKey1 ) ;
296- var stride1 = _sut . DeriveSequenceStride ( samePartitionKey ) ;
268+ _options . Setup ( x => x . Value ) . Returns ( new ReferenceNumberOptions { HmacKeyVersion = 1 , HmacKey = hmacKey1 } ) ;
269+ var multiplier1 = _sut . DeriveSequenceMultiplier ( samePartitionKey ) ;
297270
298- _options . Setup ( x => x . Value . HmacKey ) . Returns ( hmacKey2 ) ;
299- var stride2 = _sut . DeriveSequenceStride ( samePartitionKey ) ;
271+ _options . Setup ( x => x . Value ) . Returns ( new ReferenceNumberOptions { HmacKeyVersion = 1 , HmacKey = hmacKey2 } ) ;
272+ var multiplier2 = _sut . DeriveSequenceMultiplier ( samePartitionKey ) ;
300273
301274 //this is fine
302- Assert . Equal ( stride1 , stride2 ) ;
275+ Assert . Equal ( multiplier1 , multiplier2 ) ;
303276 }
304277
305278 /// <summary>
306- /// It is possible, but unlikely, that two different hmac keys produce the same stride value for the same partition key
279+ /// It is possible, but unlikely, that two different hmac keys produce the same multiplier value for the same partition key
307280 /// This is known and does not cause any issues with the logic.
308281 /// The hard-coded data for this test that proves this scenario was found by trial and error iterations.
309282 /// </summary>
310283 [ Fact ]
311- public void DeriveSequenceStride_DifferentHmacKeys_CanProduce_SameStride_For_DifferentPartitionKeys ( )
284+ public void DeriveSequenceMultiplier_DifferentHmacKeys_CanProduce_SameMultiplier_For_DifferentPartitionKeys ( )
312285 {
313286 byte [ ] hmacKey1 =
314287 [
@@ -346,9 +319,9 @@ public void DeriveSequenceStride_DifferentHmacKeys_CanProduce_SameStride_For_Dif
346319 6
347320 ] ;
348321
349- _options . Setup ( x => x . Value . HmacKey ) . Returns ( hmacKey1 ) ;
322+ _options . Setup ( x => x . Value ) . Returns ( new ReferenceNumberOptions { HmacKeyVersion = 1 , HmacKey = hmacKey1 } ) ;
350323 var partitionKey1 = "5728" ; //around about October 15th 2028
351- var stride1 = _sut . DeriveSequenceStride ( partitionKey1 ) ;
324+ var multiplier1 = _sut . DeriveSequenceMultiplier ( partitionKey1 ) ;
352325
353326 byte [ ] hmacKey2 =
354327 [
@@ -386,29 +359,29 @@ public void DeriveSequenceStride_DifferentHmacKeys_CanProduce_SameStride_For_Dif
386359 107
387360 ] ;
388361
389- _options . Setup ( x => x . Value . HmacKey ) . Returns ( hmacKey2 ) ;
362+ _options . Setup ( x => x . Value ) . Returns ( new ReferenceNumberOptions { HmacKeyVersion = 1 , HmacKey = hmacKey2 } ) ;
390363 var partitionKey2 = "5837" ; //around about August 20th 2037
391- var stride2 = _sut . DeriveSequenceStride ( partitionKey2 ) ;
364+ var multiplier2 = _sut . DeriveSequenceMultiplier ( partitionKey2 ) ;
392365
393- Assert . Equal ( stride1 , stride2 ) ;
366+ Assert . Equal ( multiplier1 , multiplier2 ) ;
394367 }
395368
396369 /// <summary>
397- /// It is possible, but unlikely, that two different partition keys produce the same stride value for the same hmac key
370+ /// It is possible, but unlikely, that two different partition keys produce the same multiplier value for the same hmac key
398371 /// This is known and does not cause any issues with the logic.
399372 /// The hard-coded data for this test that proves this scenario was found by trial and error iterations.
400373 /// </summary>
401374 [ Fact ]
402- public void DeriveSequenceStride_SameHmacKey_CanProduce_SameStride_For_DifferentPartitionKeys ( )
375+ public void DeriveSequenceMultiplier_SameHmacKey_CanProduce_SameMultiplier_For_DifferentPartitionKeys ( )
403376 {
404377 var partitionKey1 = "1947" ; //around about March 18th 2047
405378 var partitionKey2 = "2538" ; //around about April 10th 2038
406379
407- var stride1 = _sut . DeriveSequenceStride ( partitionKey1 ) ;
408- var stride2 = _sut . DeriveSequenceStride ( partitionKey2 ) ;
380+ var multiplier1 = _sut . DeriveSequenceMultiplier ( partitionKey1 ) ;
381+ var multiplier2 = _sut . DeriveSequenceMultiplier ( partitionKey2 ) ;
409382
410383 //this is fine
411- Assert . Equal ( stride1 , stride2 ) ;
384+ Assert . Equal ( multiplier1 , multiplier2 ) ;
412385 }
413386
414387 /// <summary>
0 commit comments