public async Task TryRespondAsync_Token_Raises_ResponseDeliveryFailed_If_Delivery_Fails(int responseToken, string username, int token, string query, SearchResponse searchResponse) { var record = (username, token, query, searchResponse); var cache = GetCacheMock(); cache.Setup(m => m.TryRemove(responseToken, out record)) .Returns(true); var(responder, mocks) = GetFixture(new SoulseekClientOptions(searchResponseCache: cache.Object)); mocks.PeerConnectionManager.Setup(m => m.GetCachedMessageConnectionAsync(username)) .Throws(new Exception()); SearchRequestResponseEventArgs args = null; responder.ResponseDeliveryFailed += (sender, e) => args = e; var responded = await responder.TryRespondAsync(responseToken); Assert.False(responded); Assert.NotNull(args); Assert.Equal(username, args.Username); Assert.Equal(token, args.Token); Assert.Equal(query, args.Query); Assert.Equal(searchResponse, args.SearchResponse); }
public async Task TryRespondAsync_Raises_ResponseDelivered_When_Sending_Response(string username, int token, string query, SearchResponse searchResponse, IPEndPoint endpoint, int responseToken) { var(responder, mocks) = GetFixture(new SoulseekClientOptions(searchResponseResolver: (u, t, q) => Task.FromResult(searchResponse))); mocks.Client.Setup(m => m.GetUserEndPointAsync(username, It.IsAny <CancellationToken?>())) .Returns(Task.FromResult(endpoint)); mocks.Client.Setup(m => m.GetNextToken()) .Returns(responseToken); var conn = new Mock <IMessageConnection>(); mocks.PeerConnectionManager.Setup(m => m.GetOrAddMessageConnectionAsync(username, endpoint, responseToken, It.IsAny <CancellationToken>())) .Returns(Task.FromResult(conn.Object)); SearchRequestResponseEventArgs args = null; responder.ResponseDelivered += (sender, e) => args = e; var responded = await responder.TryRespondAsync(username, token, query); Assert.True(responded); Assert.NotNull(args); Assert.Equal(username, args.Username); Assert.Equal(token, args.Token); Assert.Equal(query, args.Query); Assert.Equal(searchResponse, args.SearchResponse); }
public void SearchRequestResponseEventArgs_Instantiates_SearchResponse_And_Context(string username, int token, string query, SearchResponse searchResponse) { var e = new SearchRequestResponseEventArgs(username, token, query, searchResponse); Assert.Equal(username, e.Username); Assert.Equal(token, e.Token); Assert.Equal(query, e.Query); Assert.Equal(searchResponse, e.SearchResponse); }
public void TryDiscard_Raises_ResponseDeliveryFailed_When_Discarding(int responseToken, string username, int token, string query, SearchResponse searchResponse) { var cache = GetCacheMock(); var(responder, mocks) = GetFixture(new SoulseekClientOptions(searchResponseCache: cache.Object)); (string Username, int Token, string Query, SearchResponse SearchResponse)record = (username, token, query, searchResponse); cache.Setup(m => m.TryRemove(responseToken, out record)) .Returns(true); SearchRequestResponseEventArgs args = null; responder.ResponseDeliveryFailed += (sender, e) => args = e; var removed = responder.TryDiscard(responseToken); Assert.True(removed); Assert.NotNull(args); Assert.Equal(username, args.Username); Assert.Equal(token, args.Token); Assert.Equal(query, args.Query); Assert.Equal(searchResponse, args.SearchResponse); }