Skip to content

Commit 68e7123

Browse files
author
Cory Thompson
committed
Initial Port to .NET Standard.
1 parent 3ad9482 commit 68e7123

15 files changed

+187
-217
lines changed

WebPush.Test/ECKeyHelperTest.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
using System.Linq;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
23
using Org.BouncyCastle.Crypto.Parameters;
34
using WebPush.Util;
4-
using Xunit;
55

66
namespace WebPush.Test
77
{
8+
[TestClass]
89
public class ECKeyHelperTest
910
{
1011
private const string TestPublicKey =
1112
@"BCvKwB2lbVUYMFAaBUygooKheqcEU-GDrVRnu8k33yJCZkNBNqjZj0VdxQ2QIZa4kV5kpX9aAqyBKZHURm6eG1A";
1213

1314
private const string TestPrivateKey = @"on6X5KmLEFIVvPP3cNX9kE0OF6PV9TJQXVbnKU2xEHI";
1415

15-
[Fact]
16+
[TestMethod]
1617
public void TestGenerateKeys()
1718
{
1819
var keys = ECKeyHelper.GenerateKeys();
@@ -23,11 +24,11 @@ public void TestGenerateKeys()
2324
var publicKeyLength = publicKey.Length;
2425
var privateKeyLength = privateKey.Length;
2526

26-
Assert.Equal(65, publicKeyLength);
27-
Assert.Equal(32, privateKeyLength);
27+
Assert.AreEqual(65, publicKeyLength);
28+
Assert.AreEqual(32, privateKeyLength);
2829
}
2930

30-
[Fact]
31+
[TestMethod]
3132
public void TestGenerateKeysNoCache()
3233
{
3334
var keys1 = ECKeyHelper.GenerateKeys();
@@ -39,30 +40,30 @@ public void TestGenerateKeysNoCache()
3940
var publicKey2 = ((ECPublicKeyParameters) keys2.Public).Q.GetEncoded(false);
4041
var privateKey2 = ((ECPrivateKeyParameters) keys2.Private).D.ToByteArrayUnsigned();
4142

42-
Assert.False(publicKey1.SequenceEqual(publicKey2));
43-
Assert.False(privateKey1.SequenceEqual(privateKey2));
43+
Assert.IsFalse(publicKey1.SequenceEqual(publicKey2));
44+
Assert.IsFalse(privateKey1.SequenceEqual(privateKey2));
4445
}
4546

46-
[Fact]
47+
[TestMethod]
4748
public void TestGetPrivateKey()
4849
{
4950
var privateKey = UrlBase64.Decode(TestPrivateKey);
5051
var privateKeyParams = ECKeyHelper.GetPrivateKey(privateKey);
5152

5253
var importedPrivateKey = UrlBase64.Encode(privateKeyParams.D.ToByteArrayUnsigned());
5354

54-
Assert.Equal(TestPrivateKey, importedPrivateKey);
55+
Assert.AreEqual(TestPrivateKey, importedPrivateKey);
5556
}
5657

57-
[Fact]
58+
[TestMethod]
5859
public void TestGetPublicKey()
5960
{
6061
var publicKey = UrlBase64.Decode(TestPublicKey);
6162
var publicKeyParams = ECKeyHelper.GetPublicKey(publicKey);
6263

6364
var importedPublicKey = UrlBase64.Encode(publicKeyParams.Q.GetEncoded(false));
6465

65-
Assert.Equal(TestPublicKey, importedPublicKey);
66+
Assert.AreEqual(TestPublicKey, importedPublicKey);
6667
}
6768
}
6869
}

WebPush.Test/JWSSignerTest.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
using System.Collections.Generic;
22
using System.Text;
3+
using Microsoft.VisualStudio.TestTools.UnitTesting;
34
using WebPush.Util;
4-
using Xunit;
55

66
namespace WebPush.Test
77
{
8+
[TestClass]
89
public class JWSSignerTest
910
{
10-
[Fact]
11+
private const string TestPrivateKey = @"on6X5KmLEFIVvPP3cNX9kE0OF6PV9TJQXVbnKU2xEHI";
12+
13+
[TestMethod]
1114
public void TestGenerateSignature()
1215
{
13-
var privateKey = ECKeyHelper.GetPrivateKey(new byte[32]);
16+
var decodedPrivateKey = UrlBase64.Decode(TestPrivateKey);
17+
var privateKey = ECKeyHelper.GetPrivateKey(decodedPrivateKey);
1418

1519
var header = new Dictionary<string, object>();
1620
header.Add("typ", "JWT");
@@ -26,7 +30,7 @@ public void TestGenerateSignature()
2630

2731
var tokenParts = token.Split('.');
2832

29-
Assert.Equal(3, tokenParts.Length);
33+
Assert.AreEqual(3, tokenParts.Length);
3034

3135
var encodedHeader = tokenParts[0];
3236
var encodedPayload = tokenParts[1];
@@ -35,14 +39,14 @@ public void TestGenerateSignature()
3539
var decodedHeader = Encoding.UTF8.GetString(UrlBase64.Decode(encodedHeader));
3640
var decodedPayload = Encoding.UTF8.GetString(UrlBase64.Decode(encodedPayload));
3741

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

4145
var decodedSignature = UrlBase64.Decode(signature);
4246
var decodedSignatureLength = decodedSignature.Length;
4347

4448
var isSignatureLengthValid = decodedSignatureLength == 66 || decodedSignatureLength == 64;
45-
Assert.Equal(true, isSignatureLengthValid);
49+
Assert.AreEqual(true, isSignatureLengthValid);
4650
}
4751
}
4852
}

WebPush.Test/UrlBase64Test.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
using System.Linq;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
23
using WebPush.Util;
3-
using Xunit;
44

55
namespace WebPush.Test
66
{
7+
[TestClass]
78
public class UrlBase64Test
89
{
9-
[Fact]
10+
[TestMethod]
1011
public void TestBase64UrlDecode()
1112
{
1213
var expected = new byte[3] {181, 235, 45};
1314
var actual = UrlBase64.Decode(@"test");
14-
Assert.True(actual.SequenceEqual(expected));
15+
Assert.IsTrue(actual.SequenceEqual(expected));
1516
}
1617

17-
[Fact]
18+
[TestMethod]
1819
public void TestBase64UrlEncode()
1920
{
2021
var expected = @"test";
2122
var actual = UrlBase64.Encode(new byte[3] {181, 235, 45});
22-
Assert.Equal(expected, actual);
23+
Assert.AreEqual(expected, actual);
2324
}
2425
}
2526
}

WebPush.Test/VapidHelperTest.cs

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,105 @@
11
using System;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
23
using WebPush.Util;
3-
using Xunit;
44

55
namespace WebPush.Test
66
{
7+
[TestClass]
78
public class VapidHelperTest
89
{
910
private const string ValidAudience = @"http://example.com";
1011
private const string ValidSubject = @"http://example.com/example";
1112
private const string ValidSubjectMailto = @"mailto:example@example.com";
1213

13-
[Fact]
14+
private const string TestPublicKey =
15+
@"BCvKwB2lbVUYMFAaBUygooKheqcEU-GDrVRnu8k33yJCZkNBNqjZj0VdxQ2QIZa4kV5kpX9aAqyBKZHURm6eG1A";
16+
17+
private const string TestPrivateKey = @"on6X5KmLEFIVvPP3cNX9kE0OF6PV9TJQXVbnKU2xEHI";
18+
19+
[TestMethod]
1420
public void TestGenerateVapidKeys()
1521
{
1622
var keys = VapidHelper.GenerateVapidKeys();
1723
var publicKey = UrlBase64.Decode(keys.PublicKey);
1824
var privateKey = UrlBase64.Decode(keys.PrivateKey);
1925

20-
Assert.Equal(32, privateKey.Length);
21-
Assert.Equal(65, publicKey.Length);
26+
Assert.AreEqual(32, privateKey.Length);
27+
Assert.AreEqual(65, publicKey.Length);
2228
}
2329

24-
[Fact]
30+
[TestMethod]
2531
public void TestGenerateVapidKeysNoCache()
2632
{
2733
var keys1 = VapidHelper.GenerateVapidKeys();
2834
var keys2 = VapidHelper.GenerateVapidKeys();
2935

30-
Assert.NotEqual(keys1.PublicKey, keys2.PublicKey);
31-
Assert.NotEqual(keys1.PrivateKey, keys2.PrivateKey);
36+
Assert.AreNotEqual(keys1.PublicKey, keys2.PublicKey);
37+
Assert.AreNotEqual(keys1.PrivateKey, keys2.PrivateKey);
3238
}
3339

34-
[Fact]
40+
[TestMethod]
3541
public void TestGetVapidHeaders()
3642
{
37-
var publicKey = UrlBase64.Encode(new byte[65]);
38-
var privatekey = UrlBase64.Encode(new byte[32]);
43+
var publicKey = TestPublicKey;
44+
var privatekey = TestPrivateKey;
3945
var headers = VapidHelper.GetVapidHeaders(ValidAudience, ValidSubject, publicKey, privatekey);
4046

41-
Assert.True(headers.ContainsKey(@"Authorization"));
42-
Assert.True(headers.ContainsKey(@"Crypto-Key"));
47+
Assert.IsTrue(headers.ContainsKey(@"Authorization"));
48+
Assert.IsTrue(headers.ContainsKey(@"Crypto-Key"));
4349
}
4450

45-
[Fact]
51+
[TestMethod]
4652
public void TestGetVapidHeadersAudienceNotAUrl()
4753
{
48-
var publicKey = UrlBase64.Encode(new byte[65]);
49-
var privatekey = UrlBase64.Encode(new byte[32]);
50-
51-
Assert.Throws(typeof(ArgumentException),
52-
delegate { VapidHelper.GetVapidHeaders(@"invalid audience", ValidSubject, publicKey, privatekey); });
54+
var publicKey = TestPublicKey;
55+
var privatekey = TestPrivateKey;
56+
Assert.ThrowsException<ArgumentException>(
57+
delegate
58+
{
59+
VapidHelper.GetVapidHeaders("invalid audience", ValidSubjectMailto, publicKey, privatekey);
60+
});
5361
}
5462

55-
[Fact]
63+
[TestMethod]
5664
public void TestGetVapidHeadersInvalidPrivateKey()
5765
{
5866
var publicKey = UrlBase64.Encode(new byte[65]);
5967
var privatekey = UrlBase64.Encode(new byte[1]);
6068

61-
Assert.Throws(typeof(ArgumentException),
69+
Assert.ThrowsException<ArgumentException>(
6270
delegate { VapidHelper.GetVapidHeaders(ValidAudience, ValidSubject, publicKey, privatekey); });
6371
}
6472

65-
[Fact]
73+
[TestMethod]
6674
public void TestGetVapidHeadersInvalidPublicKey()
6775
{
6876
var publicKey = UrlBase64.Encode(new byte[1]);
6977
var privatekey = UrlBase64.Encode(new byte[32]);
7078

71-
Assert.Throws(typeof(ArgumentException),
79+
Assert.ThrowsException<ArgumentException>(
7280
delegate { VapidHelper.GetVapidHeaders(ValidAudience, ValidSubject, publicKey, privatekey); });
7381
}
7482

75-
[Fact]
83+
[TestMethod]
7684
public void TestGetVapidHeadersSubjectNotAUrlOrMailTo()
7785
{
78-
var publicKey = UrlBase64.Encode(new byte[65]);
79-
var privatekey = UrlBase64.Encode(new byte[32]);
86+
var publicKey = TestPublicKey;
87+
var privatekey = TestPrivateKey;
8088

81-
Assert.Throws(typeof(ArgumentException),
89+
Assert.ThrowsException<ArgumentException>(
8290
delegate { VapidHelper.GetVapidHeaders(ValidAudience, @"invalid subject", publicKey, privatekey); });
8391
}
8492

85-
[Fact]
93+
[TestMethod]
8694
public void TestGetVapidHeadersWithMailToSubject()
8795
{
88-
var publicKey = UrlBase64.Encode(new byte[65]);
89-
var privatekey = UrlBase64.Encode(new byte[32]);
96+
var publicKey = TestPublicKey;
97+
var privatekey = TestPrivateKey;
9098
var headers = VapidHelper.GetVapidHeaders(ValidAudience, ValidSubjectMailto, publicKey,
9199
privatekey);
92100

93-
Assert.True(headers.ContainsKey(@"Authorization"));
94-
Assert.True(headers.ContainsKey(@"Crypto-Key"));
101+
Assert.IsTrue(headers.ContainsKey(@"Authorization"));
102+
Assert.IsTrue(headers.ContainsKey(@"Crypto-Key"));
95103
}
96104
}
97105
}

WebPush.Test/WebPush.Test.csproj

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
23
<PropertyGroup>
3-
<TargetFrameworks>netcoreapp1.0;netcoreapp1.1</TargetFrameworks>
4+
<TargetFramework>netcoreapp1.0</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
47
</PropertyGroup>
8+
59
<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" />
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
11+
<PackageReference Include="MSTest.TestAdapter" Version="1.2.0" />
12+
<PackageReference Include="MSTest.TestFramework" Version="1.2.0" />
913
</ItemGroup>
14+
1015
<ItemGroup>
1116
<ProjectReference Include="..\WebPush\WebPush.csproj" />
1217
</ItemGroup>
18+
1319
</Project>

0 commit comments

Comments
 (0)