-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathGeneratorTests.cs
More file actions
114 lines (101 loc) · 3.13 KB
/
GeneratorTests.cs
File metadata and controls
114 lines (101 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
using SimpleOAuth.Generators;
namespace SimpleOAuth.Tests;
public class NonceGeneratorTests
{
[Fact]
public void Generate_ReturnsNonEmptyString()
{
var generator = new NonceGenerator();
var nonce = generator.Generate();
Assert.False(string.IsNullOrEmpty(nonce));
}
[Fact]
public void Generate_ReturnsUniqueValues()
{
var generator = new NonceGenerator();
var nonces = new HashSet<string>();
for (int i = 0; i < 100; i++)
{
nonces.Add(generator.Generate());
}
Assert.Equal(100, nonces.Count);
}
[Fact]
public void Generate_ReturnsStringWithoutDashes()
{
var generator = new NonceGenerator();
var nonce = generator.Generate();
Assert.DoesNotContain("-", nonce);
}
[Fact]
public void Generate_Returns32CharacterString()
{
var generator = new NonceGenerator();
var nonce = generator.Generate();
// GUID without dashes = 32 hex chars
Assert.Equal(32, nonce.Length);
}
}
public class TimestampGeneratorTests
{
[Fact]
public void Generate_ReturnsNonEmptyString()
{
var generator = new TimestampGenerator();
var timestamp = generator.Generate();
Assert.False(string.IsNullOrEmpty(timestamp));
}
[Fact]
public void Generate_ReturnsNumericString()
{
var generator = new TimestampGenerator();
var timestamp = generator.Generate();
Assert.True(long.TryParse(timestamp, out _));
}
[Fact]
public void Generate_ReturnsReasonableTimestamp()
{
var generator = new TimestampGenerator();
var timestamp = long.Parse(generator.Generate());
// Should be after 2020-01-01 (1577836800) and before 2100-01-01
Assert.True(timestamp > 1577836800);
Assert.True(timestamp < 4102444800);
}
}
public class HmacSha1GeneratorTests
{
[Fact]
public void Generate_ProducesConsistentOutput()
{
var generator = new HmacSha1Generator();
var result1 = generator.Generate("base string", "key");
var result2 = generator.Generate("base string", "key");
Assert.Equal(result1, result2);
}
[Fact]
public void Generate_DifferentInputsProduceDifferentOutput()
{
var generator = new HmacSha1Generator();
var result1 = generator.Generate("base string 1", "key");
var result2 = generator.Generate("base string 2", "key");
Assert.NotEqual(result1, result2);
}
[Fact]
public void Generate_DifferentKeysProduceDifferentOutput()
{
var generator = new HmacSha1Generator();
var result1 = generator.Generate("base string", "key1");
var result2 = generator.Generate("base string", "key2");
Assert.NotEqual(result1, result2);
}
[Fact]
public void Generate_ReturnsBase64String()
{
var generator = new HmacSha1Generator();
var result = generator.Generate("test", "key");
// Should be valid base64
var bytes = Convert.FromBase64String(result);
// HMAC-SHA1 produces 20 bytes
Assert.Equal(20, bytes.Length);
}
}