-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathClientTests.cs
More file actions
96 lines (78 loc) · 3.07 KB
/
ClientTests.cs
File metadata and controls
96 lines (78 loc) · 3.07 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
using NUnit.Framework;
using Substrate.NetApi.Model.Extrinsics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Substrate.NetApi.TestNode
{
public class ClientTests
{
private SubstrateClient _client;
[SetUp]
public void Setup()
{
_client = new SubstrateClient(new Uri("ws://rpc-parachain.bajun.network"), ChargeTransactionPayment.Default());
}
[TearDown]
public async Task TeardownAsync()
{
await _client.CloseAsync();
}
[Test]
public async Task Connect_ShouldConnectSuccessfullyAsync()
{
Assert.That(_client.IsConnected, Is.False);
await _client.ConnectAsync();
Assert.That(_client.IsConnected, Is.True);
}
[Test]
public async Task Connect_ShouldDisconnectSuccessfullyAsync()
{
await _client.ConnectAsync();
Assert.That(_client.IsConnected, Is.True);
await _client.CloseAsync();
Assert.That(_client.IsConnected, Is.False);
}
[Test]
public async Task Connect_ShouldTriggerEventAsync()
{
var onConnectionSetTriggered = new TaskCompletionSource<bool>();
_client.ConnectionSet += (sender, e) => onConnectionSetTriggered.SetResult(true);
await _client.ConnectAsync();
await Task.WhenAny(onConnectionSetTriggered.Task, Task.Delay(TimeSpan.FromMinutes(1)));
Assert.That(onConnectionSetTriggered.Task.IsCompleted, Is.True);
}
[Test]
public async Task OnConnectionLost_ShouldThrowDisconnectedEventAsync()
{
var onConnectionLostTriggered = new TaskCompletionSource<bool>();
_client.ConnectionLost += (sender, e) => onConnectionLostTriggered.SetResult(true);
await _client.ConnectAsync();
await _client.CloseAsync();
await Task.WhenAny(onConnectionLostTriggered.Task, Task.Delay(TimeSpan.FromMinutes(1)));
Assert.That(onConnectionLostTriggered.Task.IsCompleted, Is.True);
}
[Test]
public async Task ManuallyDisconnect_ShouldNotTryToReconnectAsync()
{
await _client.ConnectAsync();
await _client.CloseAsync();
Assert.That(_client.IsConnected, Is.False);
}
[Test]
public async Task Disconnect_ShouldTryToReconnectAsync()
{
var onReconnectedTriggered = new TaskCompletionSource<(bool, int)>();
_client.OnReconnected += (sender, e) => onReconnectedTriggered.SetResult((true, e));
await _client.ConnectAsync();
await _client._socket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
await Task.WhenAny(onReconnectedTriggered.Task, Task.Delay(TimeSpan.FromMinutes(1)));
Assert.That(_client.IsConnected, Is.True);
}
}
}