Skip to content

Commit bf307b9

Browse files
author
Cory Thompson
committed
Rewrite for dotnetcore
1 parent cf35dfb commit bf307b9

26 files changed

+445
-792
lines changed

test/ECKeyHelperTest.cs renamed to WebPush.Test/ECKeyHelperTest.cs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,44 +3,43 @@
33
using System.Linq;
44
using System.Text;
55
using System.Threading.Tasks;
6-
using NUnit.Framework;
76
using Org.BouncyCastle.Crypto;
87
using Org.BouncyCastle.Crypto.Parameters;
98
using WebPush.Util;
9+
using Xunit;
1010

1111
namespace WebPush.Test
1212
{
13-
[TestFixture]
1413
public class ECKeyHelperTest
1514
{
1615
private const string TEST_PUBLIC_KEY =
1716
@"BCvKwB2lbVUYMFAaBUygooKheqcEU-GDrVRnu8k33yJCZkNBNqjZj0VdxQ2QIZa4kV5kpX9aAqyBKZHURm6eG1A";
1817

1918
private const string TEST_PRIVATE_KEY = @"on6X5KmLEFIVvPP3cNX9kE0OF6PV9TJQXVbnKU2xEHI";
2019

21-
[Test]
20+
[Fact]
2221
public void TestGetPublicKey()
2322
{
2423
byte[] publicKey = UrlBase64.Decode(TEST_PUBLIC_KEY);
2524
ECPublicKeyParameters publicKeyParams = ECKeyHelper.GetPublicKey(publicKey);
2625

2726
string importedPublicKey = UrlBase64.Encode(publicKeyParams.Q.GetEncoded(false));
2827

29-
Assert.AreEqual(TEST_PUBLIC_KEY, importedPublicKey);
28+
Assert.Equal(TEST_PUBLIC_KEY, importedPublicKey);
3029
}
3130

32-
[Test]
31+
[Fact]
3332
public void TestGetPrivateKey()
3433
{
3534
byte[] privateKey = UrlBase64.Decode(TEST_PRIVATE_KEY);
3635
ECPrivateKeyParameters privateKeyParams = ECKeyHelper.GetPrivateKey(privateKey);
3736

3837
string importedPrivateKey = UrlBase64.Encode(privateKeyParams.D.ToByteArrayUnsigned());
3938

40-
Assert.AreEqual(TEST_PRIVATE_KEY, importedPrivateKey);
39+
Assert.Equal(TEST_PRIVATE_KEY, importedPrivateKey);
4140
}
4241

43-
[Test]
42+
[Fact]
4443
public void TestGenerateKeys()
4544
{
4645
AsymmetricCipherKeyPair keys = ECKeyHelper.GenerateKeys();
@@ -51,12 +50,12 @@ public void TestGenerateKeys()
5150
int publicKeyLength = publicKey.Length;
5251
int privateKeyLength = privateKey.Length;
5352

54-
Assert.AreEqual(65, publicKeyLength);
55-
Assert.AreEqual(32, privateKeyLength);
53+
Assert.Equal(65, publicKeyLength);
54+
Assert.Equal(32, privateKeyLength);
5655

5756
; }
5857

59-
[Test]
58+
[Fact]
6059
public void TestGenerateKeysNoCache()
6160
{
6261
AsymmetricCipherKeyPair keys1 = ECKeyHelper.GenerateKeys();
@@ -68,8 +67,8 @@ public void TestGenerateKeysNoCache()
6867
byte[] publicKey2 = ((ECPublicKeyParameters)keys2.Public).Q.GetEncoded(false);
6968
byte[] privateKey2 = ((ECPrivateKeyParameters)keys2.Private).D.ToByteArrayUnsigned();
7069

71-
Assert.IsFalse(publicKey1.SequenceEqual(publicKey2));
72-
Assert.IsFalse(privateKey1.SequenceEqual(privateKey2));
70+
Assert.False(publicKey1.SequenceEqual(publicKey2));
71+
Assert.False(privateKey1.SequenceEqual(privateKey2));
7372
}
7473
}
75-
}
74+
}

test/JWSSignerTest.cs renamed to WebPush.Test/JWSSignerTest.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@
33
using System.Linq;
44
using System.Text;
55
using System.Threading.Tasks;
6-
using NUnit.Framework;
76
using Org.BouncyCastle.Crypto.Parameters;
87
using WebPush.Util;
8+
using Xunit;
99

1010
namespace WebPush.Test
1111
{
12-
[TestFixture]
1312
public class JWSSignerTest
1413
{
15-
[Test]
14+
[Fact]
1615
public void TestGenerateSignature()
1716
{
1817
ECPrivateKeyParameters privateKey = ECKeyHelper.GetPrivateKey(new byte[32]);
@@ -31,7 +30,7 @@ public void TestGenerateSignature()
3130

3231
string[] tokenParts = token.Split('.');
3332

34-
Assert.AreEqual(3, tokenParts.Length);
33+
Assert.Equal(3, tokenParts.Length);
3534

3635
string encodedHeader = tokenParts[0];
3736
string encodedPayload = tokenParts[1];
@@ -40,15 +39,15 @@ public void TestGenerateSignature()
4039
string decodedHeader = Encoding.UTF8.GetString(UrlBase64.Decode(encodedHeader));
4140
string decodedPayload = Encoding.UTF8.GetString(UrlBase64.Decode(encodedPayload));
4241

43-
Assert.AreEqual(@"{""typ"":""JWT"",""alg"":""ES256""}", decodedHeader);
44-
Assert.AreEqual(@"{""aud"":""aud"",""exp"":1,""sub"":""subject""}", decodedPayload);
42+
Assert.Equal(@"{""typ"":""JWT"",""alg"":""ES256""}", decodedHeader);
43+
Assert.Equal(@"{""aud"":""aud"",""exp"":1,""sub"":""subject""}", decodedPayload);
4544

4645
byte[] decodedSignature = UrlBase64.Decode(signature);
4746
int decodedSignatureLength = decodedSignature.Length;
4847

4948

5049
bool isSignatureLengthValid = decodedSignatureLength == 66 || decodedSignatureLength == 64;
51-
Assert.AreEqual(true, isSignatureLengthValid);
50+
Assert.Equal(true, isSignatureLengthValid);
5251
}
5352
}
54-
}
53+
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
using System;
22
using System.Linq;
3-
using NUnit.Framework;
43
using WebPush.Util;
4+
using Xunit;
55

66
namespace WebPush.Test
77
{
8-
[TestFixture]
98
public class UrlBase64Test
109
{
11-
[Test]
10+
[Fact]
1211
public void TestBase64UrlDecode()
1312
{
1413
byte[] expected = new byte[3] {181, 235, 45};
1514
byte[] actual = UrlBase64.Decode(@"test");
16-
Assert.IsTrue(actual.SequenceEqual(expected));
15+
Assert.True(actual.SequenceEqual(expected));
1716
}
1817

19-
[Test]
18+
[Fact]
2019
public void TestBase64UrlEncode()
2120
{
2221
string expected = @"test";
2322
string actual = UrlBase64.Encode(new byte[3] {181, 235, 45});
24-
Assert.AreEqual(expected, actual);
23+
Assert.Equal(expected, actual);
2524
}
2625

2726
}
28-
}
27+
}
Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,61 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Linq;
4-
using NUnit.Framework;
53
using WebPush.Util;
4+
using Xunit;
65

76
namespace WebPush.Test
87
{
9-
[TestFixture]
108
public class VapidHelperTest
119
{
1210
private const string VALID_AUDIENCE = "http://example.com";
1311
private const string VALID_SUBJECT = "http://example.com/example";
1412
private const string VALID_SUBJECT_MAILTO = "mailto:example@example.com";
1513

16-
[Test]
14+
[Fact]
1715
public void TestGenerateVapidKeys()
1816
{
1917
VapidDetails keys = VapidHelper.GenerateVapidKeys();
2018
byte[] publicKey = UrlBase64.Decode(keys.PublicKey);
2119
byte[] privateKey = UrlBase64.Decode(keys.PrivateKey);
2220

23-
Assert.AreEqual(32, privateKey.Length);
24-
Assert.AreEqual(65, publicKey.Length);
21+
Assert.Equal(32, privateKey.Length);
22+
Assert.Equal(65, publicKey.Length);
2523
}
2624

27-
[Test]
25+
[Fact]
2826
public void TestGenerateVapidKeysNoCache()
2927
{
3028
VapidDetails keys1 = VapidHelper.GenerateVapidKeys();
3129
VapidDetails keys2 = VapidHelper.GenerateVapidKeys();
3230

33-
Assert.AreNotEqual(keys1.PublicKey, keys2.PublicKey);
34-
Assert.AreNotEqual(keys1.PrivateKey, keys2.PrivateKey);
31+
Assert.NotEqual(keys1.PublicKey, keys2.PublicKey);
32+
Assert.NotEqual(keys1.PrivateKey, keys2.PrivateKey);
3533
}
3634

37-
[Test]
35+
[Fact]
3836
public void TestGetVapidHeaders()
3937
{
4038
string publicKey = UrlBase64.Encode(new byte[65]);
4139
string privatekey = UrlBase64.Encode(new byte[32]);
4240
Dictionary<string, string> headers = VapidHelper.GetVapidHeaders(VALID_AUDIENCE, VALID_SUBJECT, publicKey, privatekey);
4341

44-
Assert.IsTrue(headers.ContainsKey("Authorization"));
45-
Assert.IsTrue(headers.ContainsKey("Crypto-Key"));
42+
Assert.True(headers.ContainsKey("Authorization"));
43+
Assert.True(headers.ContainsKey("Crypto-Key"));
4644
}
4745

48-
[Test]
46+
[Fact]
4947
public void TestGetVapidHeadersWithMailToSubject()
5048
{
5149
string publicKey = UrlBase64.Encode(new byte[65]);
5250
string privatekey = UrlBase64.Encode(new byte[32]);
5351
Dictionary<string, string> headers = VapidHelper.GetVapidHeaders(VALID_AUDIENCE, VALID_SUBJECT_MAILTO, publicKey,
5452
privatekey);
5553

56-
Assert.IsTrue(headers.ContainsKey("Authorization"));
57-
Assert.IsTrue(headers.ContainsKey("Crypto-Key"));
54+
Assert.True(headers.ContainsKey("Authorization"));
55+
Assert.True(headers.ContainsKey("Crypto-Key"));
5856
}
5957

60-
[Test]
58+
[Fact]
6159
public void TestGetVapidHeadersAudienceNotAUrl()
6260
{
6361
string publicKey = UrlBase64.Encode(new byte[65]);
@@ -70,7 +68,7 @@ public void TestGetVapidHeadersAudienceNotAUrl()
7068
});
7169
}
7270

73-
[Test]
71+
[Fact]
7472
public void TestGetVapidHeadersSubjectNotAUrlOrMailTo()
7573
{
7674
string publicKey = UrlBase64.Encode(new byte[65]);
@@ -83,7 +81,7 @@ public void TestGetVapidHeadersSubjectNotAUrlOrMailTo()
8381
});
8482
}
8583

86-
[Test]
84+
[Fact]
8785
public void TestGetVapidHeadersInvalidPublicKey()
8886
{
8987
string publicKey = UrlBase64.Encode(new byte[1]);
@@ -96,7 +94,7 @@ public void TestGetVapidHeadersInvalidPublicKey()
9694
});
9795
}
9896

99-
[Test]
97+
[Fact]
10098
public void TestGetVapidHeadersInvalidPrivateKey()
10199
{
102100
string publicKey = UrlBase64.Encode(new byte[65]);
@@ -109,4 +107,4 @@ public void TestGetVapidHeadersInvalidPrivateKey()
109107
});
110108
}
111109
}
112-
}
110+
}

WebPush.Test/WebPush.Test.csproj

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>netcoreapp1.1</TargetFramework>
4+
</PropertyGroup>
5+
<ItemGroup>
6+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
7+
<PackageReference Include="xunit" Version="2.2.0" />
8+
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
9+
</ItemGroup>
10+
<ItemGroup>
11+
<ProjectReference Include="..\WebPush\WebPush.csproj" />
12+
</ItemGroup>
13+
</Project>

test/WebPushClientTest.cs renamed to WebPush.Test/WebPushClientTest.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Net.Http;
5-
using NUnit.Framework;
65
using WebPush;
6+
using Xunit;
77

88
namespace WebPush.Test
99
{
10-
[TestFixture]
1110
public class WebPushClientTest
1211
{
1312
private const string TEST_PUBLIC_KEY =
@@ -21,7 +20,7 @@ public class WebPushClientTest
2120
@"https://fcm.googleapis.com/fcm/send/efz_TLX_rLU:APA91bE6U0iybLYvv0F3mf6";
2221

2322

24-
[Test]
23+
[Fact]
2524
public void TestSetGCMAPIKey()
2625
{
2726
WebPushClient client = new WebPushClient();
@@ -32,10 +31,10 @@ public void TestSetGCMAPIKey()
3231
HttpRequestMessage message = client.GenerateRequestDetails(subscription, "test payload");
3332
string authorizationHeader = message.Headers.GetValues("Authorization").First();
3433

35-
Assert.AreEqual("key=" + gcmAPIKey, authorizationHeader);
34+
Assert.Equal("key=" + gcmAPIKey, authorizationHeader);
3635
}
3736

38-
[Test]
37+
[Fact]
3938
public void TestGCMAPIKeyInOptions()
4039
{
4140
WebPushClient client = new WebPushClient();
@@ -48,7 +47,7 @@ public void TestGCMAPIKeyInOptions()
4847
HttpRequestMessage message = client.GenerateRequestDetails(subscription, "test payload", options);
4948
string authorizationHeader = message.Headers.GetValues("Authorization").First();
5049

51-
Assert.AreEqual("key=" + gcmAPIKey, authorizationHeader);
50+
Assert.Equal("key=" + gcmAPIKey, authorizationHeader);
5251

5352
// Test previous incorrect casing of gcmAPIKey
5453
Dictionary<string, object> options2 = new Dictionary<string, object>();
@@ -59,7 +58,7 @@ public void TestGCMAPIKeyInOptions()
5958
});
6059
}
6160

62-
[Test]
61+
[Fact]
6362
public void TestSetGCMAPIKeyEmptyString()
6463
{
6564
WebPushClient client = new WebPushClient();
@@ -70,7 +69,7 @@ public void TestSetGCMAPIKeyEmptyString()
7069
});
7170
}
7271

73-
[Test]
72+
[Fact]
7473
public void TestSetGCMAPIKeyNull()
7574
{
7675
WebPushClient client = new WebPushClient();
@@ -85,7 +84,7 @@ public void TestSetGCMAPIKeyNull()
8584
Assert.False(message.Headers.TryGetValues("Authorization", out values));
8685
}
8786

88-
[Test]
87+
[Fact]
8988
public void TestSetGCMAPiKeyNonGCMPushService()
9089
{
9190
// Ensure that the API key doesn't get added on a service that doesn't accept it.
@@ -100,7 +99,7 @@ public void TestSetGCMAPiKeyNonGCMPushService()
10099
Assert.False(message.Headers.TryGetValues("Authorization", out values));
101100
}
102101

103-
[Test]
102+
[Fact]
104103
public void TestSetVapidDetails()
105104
{
106105
WebPushClient client = new WebPushClient();
@@ -116,4 +115,4 @@ public void TestSetVapidDetails()
116115
Assert.True(cryptoHeader.Contains("p256ecdsa"));
117116
}
118117
}
119-
}
118+
}

0 commit comments

Comments
 (0)