@@ -9,18 +9,46 @@ namespace ScottBrady91.AspNetCore.Identity.ScryptPasswordHasher.Tests
9
9
{
10
10
public class ScryptPasswordHasherTests
11
11
{
12
+ private ScryptPasswordHasherOptions options = new ScryptPasswordHasherOptions ( ) ;
13
+
14
+ private ScryptPasswordHasher < string > CreateSut ( ) =>
15
+ new ScryptPasswordHasher < string > (
16
+ options != null ? new OptionsWrapper < ScryptPasswordHasherOptions > ( options ) : null ) ;
17
+
18
+ [ Theory ]
19
+ [ InlineData ( null ) ]
20
+ [ InlineData ( "" ) ]
21
+ [ InlineData ( " " ) ]
22
+ public void HashPassword_WhenPasswordIsNullOrWhitespace_ExpectArgumentNullException ( string password )
23
+ {
24
+ var sut = CreateSut ( ) ;
25
+ Assert . Throws < ArgumentNullException > ( ( ) => sut . HashPassword ( null , password ) ) ;
26
+ }
27
+
12
28
[ Fact ]
13
29
public void HashPassword_WithDefaultSettings_ExpectVerifiableHash ( )
14
30
{
15
31
var password = Guid . NewGuid ( ) . ToString ( ) ;
16
32
17
- var hasher = new ScryptPasswordHasher < string > ( ) ;
18
- var hashedPassword = hasher . HashPassword ( "" , password ) ;
33
+ var sut = CreateSut ( ) ;
34
+ var hashedPassword = sut . HashPassword ( "" , password ) ;
19
35
20
36
var encoder = new ScryptEncoder ( ) ;
21
37
encoder . Compare ( password , hashedPassword ) . Should ( ) . BeTrue ( ) ;
22
38
}
23
39
40
+ [ Fact ]
41
+ public void HashPassword_WhenCalledMultipleTimesWithSamePlaintext_ExpectDifferentHash ( )
42
+ {
43
+ var password = Guid . NewGuid ( ) . ToString ( ) ;
44
+
45
+ var sut = CreateSut ( ) ;
46
+ var hashedPassword1 = sut . HashPassword ( "" , password ) ;
47
+ var hashedPassword2 = sut . HashPassword ( "" , password ) ;
48
+
49
+ hashedPassword1 . Should ( ) . NotBe ( hashedPassword2 ) ;
50
+ }
51
+
24
52
[ Fact ]
25
53
public void HashPassword_WithCustomSettings_ExpectVerifiableHash ( )
26
54
{
@@ -31,14 +59,36 @@ public void HashPassword_WithCustomSettings_ExpectVerifiableHash()
31
59
32
60
var password = Guid . NewGuid ( ) . ToString ( ) ;
33
61
34
- var hasher = new ScryptPasswordHasher < string > (
35
- new OptionsWrapper < ScryptPasswordHasherOptions > (
36
- new ScryptPasswordHasherOptions { IterationCount = iterationCount , BlockSize = blockSize , ThreadCount = threadCount } ) ) ;
37
- var hashedPassword = hasher . HashPassword ( "" , password ) ;
62
+ options . IterationCount = iterationCount ;
63
+ options . BlockSize = blockSize ;
64
+ options . ThreadCount = threadCount ;
65
+ var sut = CreateSut ( ) ;
66
+
67
+ var hashedPassword = sut . HashPassword ( "" , password ) ;
38
68
39
69
var encoder = new ScryptEncoder ( ) ;
40
70
encoder . Compare ( password , hashedPassword ) . Should ( ) . BeTrue ( ) ;
41
71
}
72
+
73
+ [ Theory ]
74
+ [ InlineData ( null ) ]
75
+ [ InlineData ( "" ) ]
76
+ [ InlineData ( " " ) ]
77
+ public void VerifyHashedPassword_WhenHashedPasswordIsNullOrWhitespace_ExpectArgumentNullException ( string hashedPassword )
78
+ {
79
+ var sut = CreateSut ( ) ;
80
+ Assert . Throws < ArgumentNullException > ( ( ) => sut . VerifyHashedPassword ( null , hashedPassword , Guid . NewGuid ( ) . ToString ( ) ) ) ;
81
+ }
82
+
83
+ [ Theory ]
84
+ [ InlineData ( null ) ]
85
+ [ InlineData ( "" ) ]
86
+ [ InlineData ( " " ) ]
87
+ public void VerifyHashedPassword_WhenPasswordIsNullOrWhitespace_ExpectArgumentNullException ( string password )
88
+ {
89
+ var sut = CreateSut ( ) ;
90
+ Assert . Throws < ArgumentNullException > ( ( ) => sut . VerifyHashedPassword ( null , Guid . NewGuid ( ) . ToString ( ) , password ) ) ;
91
+ }
42
92
43
93
[ Fact ]
44
94
public void VerifyHashedPassword_WithDefaultSettings_ExpectSuccess ( )
@@ -47,9 +97,9 @@ public void VerifyHashedPassword_WithDefaultSettings_ExpectSuccess()
47
97
var encoder = new ScryptEncoder ( ) ;
48
98
var hashedPassword = encoder . Encode ( password ) ;
49
99
50
- var hasher = new ScryptPasswordHasher < string > ( ) ;
100
+ var sut = CreateSut ( ) ;
51
101
52
- hasher . VerifyHashedPassword ( "" , hashedPassword , password ) . Should ( ) . Be ( PasswordVerificationResult . Success ) ;
102
+ sut . VerifyHashedPassword ( "" , hashedPassword , password ) . Should ( ) . Be ( PasswordVerificationResult . Success ) ;
53
103
}
54
104
55
105
[ Fact ]
@@ -64,9 +114,9 @@ public void VerifyHashedPassword_WithCustomSettings_ExpectSuccess()
64
114
var encoder = new ScryptEncoder ( iterationCount , blockSize , threadCount ) ;
65
115
var hashedPassword = encoder . Encode ( password ) ;
66
116
67
- var hasher = new ScryptPasswordHasher < string > ( ) ;
117
+ var sut = CreateSut ( ) ;
68
118
69
- hasher . VerifyHashedPassword ( "" , hashedPassword , password ) . Should ( ) . Be ( PasswordVerificationResult . Success ) ;
119
+ sut . VerifyHashedPassword ( "" , hashedPassword , password ) . Should ( ) . Be ( PasswordVerificationResult . Success ) ;
70
120
}
71
121
72
122
[ Fact ]
@@ -76,9 +126,9 @@ public void VerifyHashedPassword_WhenSuppliedPasswordDoesNotMatch_ExpectFailure(
76
126
var encoder = new ScryptEncoder ( ) ;
77
127
var hashedPassword = encoder . Encode ( Guid . NewGuid ( ) . ToString ( ) ) ;
78
128
79
- var hasher = new ScryptPasswordHasher < string > ( ) ;
129
+ var sut = CreateSut ( ) ;
80
130
81
- hasher . VerifyHashedPassword ( "" , hashedPassword , password ) . Should ( ) . Be ( PasswordVerificationResult . Failed ) ;
131
+ sut . VerifyHashedPassword ( "" , hashedPassword , password ) . Should ( ) . Be ( PasswordVerificationResult . Failed ) ;
82
132
}
83
133
}
84
134
}
0 commit comments