|
1 | 1 | using OpenOnlineConfig.v1; |
2 | 2 | using System.Text.Json; |
3 | | -using Xunit; |
4 | 3 |
|
5 | | -namespace OpenOnlineConfig.Tests |
| 4 | +namespace OpenOnlineConfig.Tests; |
| 5 | + |
| 6 | +public class DeserializationTests |
6 | 7 | { |
7 | | - public class DeserializationTests |
| 8 | + [Test] |
| 9 | + [Arguments("{\"version\":1,\"baseUrl\":\"https://example.com\",\"secret\":\"8c1da4d8-8684-4a2c-9abb-57b9d5fa7e52\",\"userId\":\"a117460e-41df-4dbd-b2df-4bd0c16efd2f\"}", |
| 10 | + 1, "https://example.com", "8c1da4d8-8684-4a2c-9abb-57b9d5fa7e52", "a117460e-41df-4dbd-b2df-4bd0c16efd2f", null)] |
| 11 | + [Arguments("{\"version\":1,\"baseUrl\":\"https://github.com\",\"secret\":\"8b7ef7fd-c2ac-47d9-8517-2b20c4fee5a7\",\"userId\":\"68720c88-e5e5-4b84-9db7-98fb4be109eb\",\"certSha256\":\"0ae384bfd4dde9d13e50c5857c05a442c93f8e01445ee4b34540d22bd1e37f1b\"}", |
| 12 | + 1, "https://github.com", "8b7ef7fd-c2ac-47d9-8517-2b20c4fee5a7", "68720c88-e5e5-4b84-9db7-98fb4be109eb", "0ae384bfd4dde9d13e50c5857c05a442c93f8e01445ee4b34540d22bd1e37f1b")] |
| 13 | + public async Task ApiToken_Deserialization(string json, int expectedVersion, string expectedBaseUrl, string expectedSecret, string expectedUserId, string? expectedCertSha256) |
8 | 14 | { |
9 | | - [Theory] |
10 | | - [InlineData("{\"version\":1,\"baseUrl\":\"https://example.com\",\"secret\":\"8c1da4d8-8684-4a2c-9abb-57b9d5fa7e52\",\"userId\":\"a117460e-41df-4dbd-b2df-4bd0c16efd2f\"}", |
11 | | - 1, "https://example.com", "8c1da4d8-8684-4a2c-9abb-57b9d5fa7e52", "a117460e-41df-4dbd-b2df-4bd0c16efd2f", null)] |
12 | | - [InlineData("{\"version\":1,\"baseUrl\":\"https://github.com\",\"secret\":\"8b7ef7fd-c2ac-47d9-8517-2b20c4fee5a7\",\"userId\":\"68720c88-e5e5-4b84-9db7-98fb4be109eb\",\"certSha256\":\"0ae384bfd4dde9d13e50c5857c05a442c93f8e01445ee4b34540d22bd1e37f1b\"}", |
13 | | - 1, "https://github.com", "8b7ef7fd-c2ac-47d9-8517-2b20c4fee5a7", "68720c88-e5e5-4b84-9db7-98fb4be109eb", "0ae384bfd4dde9d13e50c5857c05a442c93f8e01445ee4b34540d22bd1e37f1b")] |
14 | | - public void ApiToken_Deserialization(string json, int expectedVersion, string expectedBaseUrl, string expectedSecret, string expectedUserId, string? expectedCertSha256) |
15 | | - { |
16 | | - OOCv1ApiToken? token = JsonSerializer.Deserialize(json, OOCv1JsonSerializerContext.Default.OOCv1ApiToken); |
| 15 | + OOCv1ApiToken? token = JsonSerializer.Deserialize(json, OOCv1JsonSerializerContext.Default.OOCv1ApiToken); |
17 | 16 |
|
18 | | - Assert.NotNull(token); |
19 | | - Assert.Equal(expectedVersion, token.Version); |
20 | | - Assert.Equal(expectedBaseUrl, token.BaseUrl); |
21 | | - Assert.Equal(expectedSecret, token.Secret); |
22 | | - Assert.Equal(expectedUserId, token.UserId); |
23 | | - Assert.Equal(expectedCertSha256, token.CertSha256); |
24 | | - } |
| 17 | + await Assert.That(token).IsNotNull(); |
| 18 | + await Assert.That(token.Version).IsEqualTo(expectedVersion); |
| 19 | + await Assert.That(token.BaseUrl).IsEqualTo(expectedBaseUrl); |
| 20 | + await Assert.That(token.Secret).IsEqualTo(expectedSecret); |
| 21 | + await Assert.That(token.UserId).IsEqualTo(expectedUserId); |
| 22 | + await Assert.That(token.CertSha256).IsEqualTo(expectedCertSha256); |
| 23 | + } |
25 | 24 |
|
26 | | - [Theory] |
27 | | - [InlineData("{\"username\":\"somebody\",\"protocols\":[\"shadowsocks\"]}", |
28 | | - "somebody", null, null, null, new string[] { "shadowsocks", })] |
29 | | - [InlineData("{\"username\":\"nobody\",\"bytesUsed\":274877906944,\"bytesRemaining\":824633720832,\"expiryDate\":1609459200,\"protocols\":[\"shadowsocks\",\"vmess\",\"trojan-go\"]}", |
30 | | - "nobody", 274877906944UL, 824633720832UL, 1609459200L, new string[] { "shadowsocks", "vmess", "trojan-go", })] |
31 | | - public void ConfigBase_Deserialization(string json, string? expectedUsername, ulong? expectedBytesUsed, ulong? expectedBytesRemaining, long? expectedExpiryDate, string[] expectedProtocols) |
32 | | - { |
33 | | - OOCv1ConfigBase? config = JsonSerializer.Deserialize(json, OOCv1JsonSerializerContext.Default.OOCv1ConfigBase); |
| 25 | + [Test] |
| 26 | + [Arguments("{\"username\":\"somebody\",\"protocols\":[\"shadowsocks\"]}", |
| 27 | + "somebody", null, null, null, new string[] { "shadowsocks", })] |
| 28 | + [Arguments("{\"username\":\"nobody\",\"bytesUsed\":274877906944,\"bytesRemaining\":824633720832,\"expiryDate\":1609459200,\"protocols\":[\"shadowsocks\",\"vmess\",\"trojan-go\"]}", |
| 29 | + "nobody", 274877906944UL, 824633720832UL, 1609459200L, new string[] { "shadowsocks", "vmess", "trojan-go", })] |
| 30 | + public async Task ConfigBase_Deserialization(string json, string? expectedUsername, ulong? expectedBytesUsed, ulong? expectedBytesRemaining, long? expectedExpiryDate, string[] expectedProtocols) |
| 31 | + { |
| 32 | + OOCv1ConfigBase? config = JsonSerializer.Deserialize(json, OOCv1JsonSerializerContext.Default.OOCv1ConfigBase); |
34 | 33 |
|
35 | | - Assert.NotNull(config); |
36 | | - Assert.Equal(expectedUsername, config.Username); |
37 | | - Assert.Equal(expectedBytesUsed, config.BytesUsed); |
38 | | - Assert.Equal(expectedBytesRemaining, config.BytesRemaining); |
39 | | - Assert.Equal(expectedExpiryDate, config.ExpiryDate?.ToUnixTimeSeconds()); |
40 | | - Assert.Equal(expectedProtocols, config.Protocols); |
41 | | - } |
| 34 | + await Assert.That(config).IsNotNull(); |
| 35 | + await Assert.That(config.Username).IsEqualTo(expectedUsername); |
| 36 | + await Assert.That(config.BytesUsed).IsEqualTo(expectedBytesUsed); |
| 37 | + await Assert.That(config.BytesRemaining).IsEqualTo(expectedBytesRemaining); |
| 38 | + await Assert.That(config.ExpiryDate?.ToUnixTimeSeconds()).IsEqualTo(expectedExpiryDate); |
| 39 | + await Assert.That(config.Protocols).IsEquivalentTo(expectedProtocols); |
42 | 40 | } |
43 | 41 | } |
0 commit comments