Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }