argon2id 0.8.0.rc1-x86_64-linux-musl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,554 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/autorun"
4
+ require "argon2id"
5
+
6
+ class StringLike
7
+ def initialize(str)
8
+ @str = str
9
+ end
10
+
11
+ def to_s
12
+ @str
13
+ end
14
+ end
15
+
16
+ class TestPassword < Minitest::Test
17
+ def test_valid_hash_with_argon2id_hash_returns_true
18
+ assert Argon2id::Password.valid_hash?(
19
+ "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" \
20
+ "$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc"
21
+ )
22
+ end
23
+
24
+ def test_valid_hash_with_versionless_argon2id_hash_returns_true
25
+ assert Argon2id::Password.valid_hash?(
26
+ "$argon2id$m=65536,t=2,p=1$c29tZXNhbHQ" \
27
+ "$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc"
28
+ )
29
+ end
30
+
31
+ def test_valid_hash_with_argon2i_hash_returns_false
32
+ refute Argon2id::Password.valid_hash?(
33
+ "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" \
34
+ "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"
35
+ )
36
+ end
37
+
38
+ def test_valid_hash_with_partial_argon2id_hash_returns_false
39
+ refute Argon2id::Password.valid_hash?(
40
+ "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ"
41
+ )
42
+ end
43
+
44
+ def test_valid_hash_with_argon2id_hash_with_null_bytes_returns_false
45
+ refute Argon2id::Password.valid_hash?(
46
+ "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" \
47
+ "$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc\x00foo"
48
+ )
49
+ end
50
+
51
+ def test_valid_hash_with_bcrypt_hash_returns_false
52
+ refute Argon2id::Password.valid_hash?(
53
+ "$2a$12$stsRn7Mi9r02.keRyF4OK.Aq4UWOU185lWggfUQfcupAi.b7AI/nS"
54
+ )
55
+ end
56
+
57
+ def test_valid_hash_with_nil_returns_false
58
+ refute Argon2id::Password.valid_hash?(nil)
59
+ end
60
+
61
+ def test_valid_hash_with_coercible_argon2id_hash_returns_true
62
+ assert Argon2id::Password.valid_hash?(
63
+ StringLike.new(
64
+ "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" \
65
+ "$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc"
66
+ )
67
+ )
68
+ end
69
+
70
+ def test_valid_hash_with_coercible_bcrypt_hash_returns_false
71
+ refute Argon2id::Password.valid_hash?(
72
+ StringLike.new(
73
+ "$2a$12$stsRn7Mi9r02.keRyF4OK.Aq4UWOU185lWggfUQfcupAi.b7AI/nS"
74
+ )
75
+ )
76
+ end
77
+
78
+ def test_new_m_65536_t_2_p_1_equals_password
79
+ password = Argon2id::Password.new(
80
+ "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" \
81
+ "$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc"
82
+ )
83
+
84
+ assert password == "password"
85
+ end
86
+
87
+ def test_new_m_262144_t_2_p_1_equals_password
88
+ password = Argon2id::Password.new(
89
+ "$argon2id$v=19$m=262144,t=2,p=1$c29tZXNhbHQ" \
90
+ "$eP4eyR+zqlZX1y5xCFTkw9m5GYx0L5YWwvCFvtlbLow"
91
+ )
92
+
93
+ assert password == "password"
94
+ end
95
+
96
+ def test_new_m_256_t_2_p_1_equals_password
97
+ password = Argon2id::Password.new(
98
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
99
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
100
+ )
101
+
102
+ assert password == "password"
103
+ end
104
+
105
+ def test_new_m_256_t_2_p_2_equals_password
106
+ password = Argon2id::Password.new(
107
+ "$argon2id$v=19$m=256,t=2,p=2$c29tZXNhbHQ" \
108
+ "$bQk8UB/VmZZF4Oo79iDXuL5/0ttZwg2f/5U52iv1cDc"
109
+ )
110
+
111
+ assert password == "password"
112
+ end
113
+
114
+ def test_new_m_65536_t_1_p_1_equals_password
115
+ password = Argon2id::Password.new(
116
+ "$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQ" \
117
+ "$9qWtwbpyPd3vm1rB1GThgPzZ3/ydHL92zKL+15XZypg"
118
+ )
119
+
120
+ assert password == "password"
121
+ end
122
+
123
+ def test_new_m_65536_t_4_p_1_equals_password
124
+ password = Argon2id::Password.new(
125
+ "$argon2id$v=19$m=65536,t=4,p=1$c29tZXNhbHQ" \
126
+ "$kCXUjmjvc5XMqQedpMTsOv+zyJEf5PhtGiUghW9jFyw"
127
+ )
128
+
129
+ assert password == "password"
130
+ end
131
+
132
+ def test_new_m_65536_t_2_p_1_equals_differentpassword
133
+ password = Argon2id::Password.new(
134
+ "$argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ" \
135
+ "$C4TWUs9rDEvq7w3+J4umqA32aWKB1+DSiRuBfYxFj94"
136
+ )
137
+
138
+ assert password == "differentpassword"
139
+ end
140
+
141
+ def test_new_m_65536_t_2_p_1_with_diffsalt_equals_password
142
+ password = Argon2id::Password.new(
143
+ "$argon2id$v=19$m=65536,t=2,p=1$ZGlmZnNhbHQ" \
144
+ "$vfMrBczELrFdWP0ZsfhWsRPaHppYdP3MVEMIVlqoFBw"
145
+ )
146
+
147
+ assert password == "password"
148
+ end
149
+
150
+ def test_new_with_versionless_hash_equals_password
151
+ password = Argon2id::Password.new(
152
+ "$argon2id$m=256,t=2,p=1$c29tZXNhbHQ" \
153
+ "$2gcOV25Q8vOKPIl8vdxsf7QCjocJcf+erntOGHkpXm4"
154
+ )
155
+
156
+ assert password == "password"
157
+ end
158
+
159
+ def test_new_with_non_argon2id_hash_raises_argument_error
160
+ assert_raises(ArgumentError) do
161
+ Argon2id::Password.new(
162
+ "$argon2i$m=65536,t=2,p=1$c29tZXNhbHQ" \
163
+ "$9sTbSlTio3Biev89thdrlKKiCaYsjjYVJxGAL3swxpQ"
164
+ )
165
+ end
166
+ end
167
+
168
+ def test_new_with_invalid_hash_raises_argument_error
169
+ assert_raises(ArgumentError) do
170
+ Argon2id::Password.new("not a valid hash")
171
+ end
172
+ end
173
+
174
+ def test_new_with_nil_raises_argument_error
175
+ assert_raises(ArgumentError) do
176
+ Argon2id::Password.new(nil)
177
+ end
178
+ end
179
+
180
+ def test_new_with_coercible_equals_password
181
+ password = Argon2id::Password.new(
182
+ StringLike.new(
183
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
184
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
185
+ )
186
+ )
187
+
188
+ assert password == "password"
189
+ end
190
+
191
+ def test_encoded_returns_the_full_encoded_hash
192
+ password = Argon2id::Password.new(
193
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
194
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
195
+ )
196
+
197
+ assert_equal(
198
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4",
199
+ password.encoded
200
+ )
201
+ end
202
+
203
+ def test_version_returns_the_version
204
+ password = Argon2id::Password.new(
205
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
206
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
207
+ )
208
+
209
+ assert_equal(19, password.version)
210
+ end
211
+
212
+ def test_version_with_no_version_returns_the_default_version
213
+ password = Argon2id::Password.new(
214
+ "$argon2id$m=256,t=2,p=1$c29tZXNhbHQ" \
215
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
216
+ )
217
+
218
+ assert_equal(16, password.version)
219
+ end
220
+
221
+ def test_m_cost_returns_m_cost
222
+ password = Argon2id::Password.new(
223
+ "$argon2id$m=256,t=2,p=1$c29tZXNhbHQ" \
224
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
225
+ )
226
+
227
+ assert_equal(256, password.m_cost)
228
+ end
229
+
230
+ def test_t_cost_returns_t_cost
231
+ password = Argon2id::Password.new(
232
+ "$argon2id$m=256,t=2,p=1$c29tZXNhbHQ" \
233
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
234
+ )
235
+
236
+ assert_equal(2, password.t_cost)
237
+ end
238
+
239
+ def test_parallelism_returns_parallelism
240
+ password = Argon2id::Password.new(
241
+ "$argon2id$m=256,t=2,p=1$c29tZXNhbHQ" \
242
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
243
+ )
244
+
245
+ assert_equal(1, password.parallelism)
246
+ end
247
+
248
+ def test_salt_returns_decoded_salt
249
+ password = Argon2id::Password.new(
250
+ "$argon2id$m=256,t=2,p=1$c29tZXNhbHQ" \
251
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
252
+ )
253
+
254
+ assert_equal("somesalt", password.salt)
255
+ end
256
+
257
+ def test_salt_returns_decoded_binary_salt
258
+ password = Argon2id::Password.new(
259
+ "$argon2id$v=19$m=256,t=2,p=1$FImSDfu1p8vf1mZBL2PCkg" \
260
+ "$vG4bIkTJGMx6OvkLuKTeq37DTyAf8gF2Ouf3zSLlYVc"
261
+ )
262
+
263
+ assert_equal(
264
+ "\x14\x89\x92\r\xFB\xB5\xA7\xCB\xDF\xD6fA/c\xC2\x92".b,
265
+ password.salt
266
+ )
267
+ end
268
+
269
+ def test_output_returns_decoded_output
270
+ password = Argon2id::Password.new(
271
+ "$argon2id$v=19$m=65536,t=1,p=1$c29tZXNhbHQ" \
272
+ "$9qWtwbpyPd3vm1rB1GThgPzZ3/ydHL92zKL+15XZypg"
273
+ )
274
+
275
+ assert_equal(
276
+ "\xF6\xA5\xAD\xC1\xBAr=\xDD\xEF\x9BZ\xC1\xD4d\xE1\x80\xFC\xD9\xDF\xFC\x9D\x1C\xBFv\xCC\xA2\xFE\xD7\x95\xD9\xCA\x98".b,
277
+ password.output
278
+ )
279
+ end
280
+
281
+ def test_to_s_returns_the_full_encoded_hash
282
+ password = Argon2id::Password.new(
283
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
284
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
285
+ )
286
+
287
+ assert_equal(
288
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4",
289
+ password.to_s
290
+ )
291
+ end
292
+
293
+ def test_equals_correct_password_returns_true
294
+ password = Argon2id::Password.new(
295
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
296
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
297
+ )
298
+
299
+ assert password == "password"
300
+ end
301
+
302
+ def test_equals_incorrect_password_returns_false
303
+ password = Argon2id::Password.new(
304
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
305
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
306
+ )
307
+
308
+ refute password == "differentpassword"
309
+ end
310
+
311
+ def test_equals_nil_returns_false
312
+ password = Argon2id::Password.new(
313
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
314
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
315
+ )
316
+
317
+ refute password == nil
318
+ end
319
+
320
+ def test_equals_coercible_correct_password_returns_true
321
+ password = Argon2id::Password.new(
322
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
323
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
324
+ )
325
+
326
+ assert password == StringLike.new("password")
327
+ end
328
+
329
+ def test_equals_coercible_incorrect_password_returns_false
330
+ password = Argon2id::Password.new(
331
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
332
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
333
+ )
334
+
335
+ refute password == StringLike.new("differentpassword")
336
+ end
337
+
338
+ def test_is_password_correct_password_returns_true
339
+ password = Argon2id::Password.new(
340
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
341
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
342
+ )
343
+
344
+ assert password.is_password?("password")
345
+ end
346
+
347
+ def test_is_password_incorrect_password_returns_false
348
+ password = Argon2id::Password.new(
349
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
350
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
351
+ )
352
+
353
+ refute password.is_password?("differentpassword")
354
+ end
355
+
356
+ def test_is_password_nil_returns_false
357
+ password = Argon2id::Password.new(
358
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
359
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
360
+ )
361
+
362
+ refute password.is_password?(nil)
363
+ end
364
+
365
+ def test_is_password_coercible_correct_password_returns_true
366
+ password = Argon2id::Password.new(
367
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
368
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
369
+ )
370
+
371
+ assert password.is_password?(StringLike.new("password"))
372
+ end
373
+
374
+ def test_is_password_coercible_incorrect_password_returns_false
375
+ password = Argon2id::Password.new(
376
+ "$argon2id$v=19$m=256,t=2,p=1$c29tZXNhbHQ" \
377
+ "$nf65EOgLrQMR/uIPnA4rEsF5h7TKyQwu9U1bMCHGi/4"
378
+ )
379
+
380
+ refute password.is_password?(StringLike.new("differentpassword"))
381
+ end
382
+
383
+ def test_create_password_returns_password
384
+ password = Argon2id::Password.create("password")
385
+
386
+ assert_instance_of Argon2id::Password, password
387
+ end
388
+
389
+ def test_create_password_uses_version_13
390
+ password = Argon2id::Password.create("password")
391
+
392
+ assert_equal 0x13, password.version
393
+ end
394
+
395
+ def test_create_password_uses_default_t_cost
396
+ password = Argon2id::Password.create("password")
397
+
398
+ assert_equal 2, password.t_cost
399
+ end
400
+
401
+ def test_create_password_uses_default_m_cost
402
+ password = Argon2id::Password.create("password")
403
+
404
+ assert_equal 19_456, password.m_cost
405
+ end
406
+
407
+ def test_create_password_uses_default_parallelism
408
+ password = Argon2id::Password.create("password")
409
+
410
+ assert_equal 1, password.parallelism
411
+ end
412
+
413
+ def test_create_password_uses_default_salt_len
414
+ password = Argon2id::Password.create("password")
415
+
416
+ assert_equal 16, password.salt.bytesize
417
+ end
418
+
419
+ def test_create_password_uses_default_output_len
420
+ password = Argon2id::Password.create("password")
421
+
422
+ assert_equal 32, password.output.bytesize
423
+ end
424
+
425
+ def test_create_password_with_t_cost_changes_t_cost
426
+ password = Argon2id::Password.create("password", t_cost: 1)
427
+
428
+ assert_equal(1, password.t_cost)
429
+ end
430
+
431
+ def test_create_password_with_too_small_t_cost_raises_error
432
+ assert_raises(Argon2id::Error) do
433
+ Argon2id::Password.create("password", t_cost: 0)
434
+ end
435
+ end
436
+
437
+ def test_create_password_with_m_cost_changes_m_cost
438
+ password = Argon2id::Password.create("password", m_cost: 8)
439
+
440
+ assert_equal(8, password.m_cost)
441
+ end
442
+
443
+ def test_create_password_with_too_small_m_cost_raises_error
444
+ assert_raises(Argon2id::Error) do
445
+ Argon2id::Password.create("password", m_cost: 0)
446
+ end
447
+ end
448
+
449
+ def test_create_password_with_parallelism_changes_parallelism
450
+ password = Argon2id::Password.create("password", parallelism: 2)
451
+
452
+ assert_equal(2, password.parallelism)
453
+ end
454
+
455
+ def test_create_password_with_too_small_parallelism_raises_error
456
+ assert_raises(Argon2id::Error) do
457
+ Argon2id::Password.create("password", parallelism: 0)
458
+ end
459
+ end
460
+
461
+ def test_create_password_with_too_small_salt_raises_error
462
+ assert_raises(Argon2id::Error) do
463
+ Argon2id::Password.create("password", salt_len: 0)
464
+ end
465
+ end
466
+
467
+ def test_create_password_with_output_len_changes_output_len
468
+ password = Argon2id::Password.create("password", output_len: 8)
469
+
470
+ assert_equal 8, password.output.bytesize
471
+ end
472
+
473
+ def test_create_password_with_too_output_len_raises_error
474
+ assert_raises(Argon2id::Error) do
475
+ Argon2id::Password.create("password", output_len: 0)
476
+ end
477
+ end
478
+
479
+ def test_create_password_inherits_t_cost_from_argon2id
480
+ Argon2id.t_cost = 1
481
+
482
+ password = Argon2id::Password.create("password")
483
+
484
+ assert_equal(1, password.t_cost)
485
+ ensure
486
+ Argon2id.t_cost = Argon2id::DEFAULT_T_COST
487
+ end
488
+
489
+ def test_create_password_inherits_m_cost_from_argon2id
490
+ Argon2id.m_cost = 8
491
+
492
+ password = Argon2id::Password.create("password")
493
+
494
+ assert_equal(8, password.m_cost)
495
+ ensure
496
+ Argon2id.m_cost = Argon2id::DEFAULT_M_COST
497
+ end
498
+
499
+ def test_create_password_inherits_parallelism_from_argon2id
500
+ Argon2id.parallelism = 2
501
+
502
+ password = Argon2id::Password.create("password")
503
+
504
+ assert_equal(2, password.parallelism)
505
+ ensure
506
+ Argon2id.parallelism = Argon2id::DEFAULT_PARALLELISM
507
+ end
508
+
509
+ def test_create_password_inherits_salt_len_from_argon2id
510
+ Argon2id.salt_len = 8
511
+
512
+ password = Argon2id::Password.create("password")
513
+
514
+ assert_equal(8, password.salt.bytesize)
515
+ ensure
516
+ Argon2id.salt_len = Argon2id::DEFAULT_SALT_LEN
517
+ end
518
+
519
+ def test_create_password_inherits_output_len_from_argon2id
520
+ Argon2id.output_len = 8
521
+
522
+ password = Argon2id::Password.create("password")
523
+
524
+ assert_equal(8, password.output.bytesize)
525
+ ensure
526
+ Argon2id.output_len = Argon2id::DEFAULT_OUTPUT_LEN
527
+ end
528
+
529
+ def test_create_password_equals_correct_password
530
+ password = Argon2id::Password.create("password")
531
+
532
+ assert password == "password"
533
+ end
534
+
535
+ def test_create_password_does_not_equal_incorrect_password
536
+ password = Argon2id::Password.create("password")
537
+
538
+ refute password == "differentpassword"
539
+ end
540
+
541
+ def test_hashing_password_verifies_correct_password
542
+ hash = Argon2id::Password.create("password").to_s
543
+ password = Argon2id::Password.new(hash)
544
+
545
+ assert password == "password"
546
+ end
547
+
548
+ def test_hashing_password_does_not_verify_incorrect_password
549
+ hash = Argon2id::Password.create("password").to_s
550
+ password = Argon2id::Password.new(hash)
551
+
552
+ refute password == "differentpassword"
553
+ end
554
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/autorun"
4
+ require "argon2id"
5
+
6
+ class TestArgon2id < Minitest::Test
7
+ def test_t_cost_is_default_t_cost
8
+ assert_equal 2, Argon2id.t_cost
9
+ end
10
+
11
+ def test_m_cost_is_default_m_cost
12
+ assert_equal 19_456, Argon2id.m_cost
13
+ end
14
+
15
+ def test_parallelism_is_default_parallelism
16
+ assert_equal 1, Argon2id.parallelism
17
+ end
18
+
19
+ def test_salt_len_is_default_salt_len
20
+ assert_equal 16, Argon2id.salt_len
21
+ end
22
+
23
+ def test_output_len_is_default_output_len
24
+ assert_equal 32, Argon2id.output_len
25
+ end
26
+
27
+ def test_t_cost_can_be_overridden
28
+ Argon2id.t_cost = 1
29
+
30
+ assert_equal 1, Argon2id.t_cost
31
+ ensure
32
+ Argon2id.t_cost = Argon2id::DEFAULT_T_COST
33
+ end
34
+
35
+ def test_m_cost_can_be_overridden
36
+ Argon2id.m_cost = 256
37
+
38
+ assert_equal 256, Argon2id.m_cost
39
+ ensure
40
+ Argon2id.m_cost = Argon2id::DEFAULT_M_COST
41
+ end
42
+
43
+ def test_parallelism_can_be_overridden
44
+ Argon2id.parallelism = 2
45
+
46
+ assert_equal 2, Argon2id.parallelism
47
+ ensure
48
+ Argon2id.parallelism = Argon2id::DEFAULT_PARALLELISM
49
+ end
50
+
51
+ def test_salt_len_can_be_overridden
52
+ Argon2id.salt_len = 8
53
+
54
+ assert_equal 8, Argon2id.salt_len
55
+ ensure
56
+ Argon2id.salt_len = Argon2id::DEFAULT_SALT_LEN
57
+ end
58
+
59
+ def test_output_len_can_be_overridden
60
+ Argon2id.output_len = 16
61
+
62
+ assert_equal 16, Argon2id.output_len
63
+ ensure
64
+ Argon2id.output_len = Argon2id::DEFAULT_OUTPUT_LEN
65
+ end
66
+ end