private async Task SendMessageAsync(Mocks.CloudBlobStorageProviderMock cloudStorage, Mocks.InboxHttpHandlerMock inboxMock, CryptoSettings senderCrypto, OwnEndpoint senderEndpoint, Endpoint receiverEndpoint) { Requires.NotNull(cloudStorage, "cloudStorage"); Requires.NotNull(senderCrypto, "senderCrypto"); Requires.NotNull(senderEndpoint, "senderEndpoint"); Requires.NotNull(receiverEndpoint, "receiverEndpoint"); var httpHandler = new Mocks.HttpMessageHandlerMock(); cloudStorage.AddHttpHandler(httpHandler); inboxMock.Register(httpHandler); var sentMessage = Valid.Message; var channel = new Channel() { HttpClient = new HttpClient(httpHandler), CloudBlobStorage = cloudStorage, CryptoServices = senderCrypto, Endpoint = senderEndpoint, Logger = this.logger, }; await channel.PostAsync(sentMessage, new[] { receiverEndpoint }, Valid.ExpirationUtc); }
private async Task<IReadOnlyCollection<Channel.PayloadReceipt>> ReceiveMessageAsync(Mocks.CloudBlobStorageProviderMock cloudBlobStorage, Mocks.InboxHttpHandlerMock inboxMock, CryptoSettings cryptoProvider, OwnEndpoint receiver, bool expectMessage = true) { Requires.NotNull(cloudBlobStorage, "cloudBlobStorage"); Requires.NotNull(receiver, "receiver"); var httpHandler = new Mocks.HttpMessageHandlerMock(); cloudBlobStorage.AddHttpHandler(httpHandler); inboxMock.Register(httpHandler); var channel = new Channel { HttpClient = new HttpClient(httpHandler), HttpClientLongPoll = new HttpClient(httpHandler), CloudBlobStorage = cloudBlobStorage, CryptoServices = cryptoProvider, Endpoint = receiver, Logger = this.logger, }; var progressMessage = new TaskCompletionSource<Payload>(); var progress = new Progress<Channel.PayloadReceipt>(m => progressMessage.SetResult(m.Payload)); var messages = await channel.ReceiveAsync(progress: progress); if (expectMessage) { Assert.Equal(1, messages.Count); await progressMessage.Task; Assert.Same(progressMessage.Task.Result, messages.Single().Payload); } else { Assert.Equal(0, messages.Count); } return messages; }
private async Task ReceiveMessageAsync(Mocks.CloudBlobStorageProviderMock cloudStorage, Mocks.InboxHttpHandlerMock inboxMock, CryptoSettings receiverCrypto, OwnEndpoint receiverEndpoint) { Requires.NotNull(cloudStorage, "cloudStorage"); Requires.NotNull(receiverCrypto, "receiverCrypto"); Requires.NotNull(receiverEndpoint, "receiverEndpoint"); var httpHandler = new Mocks.HttpMessageHandlerMock(); cloudStorage.AddHttpHandler(httpHandler); inboxMock.Register(httpHandler); var channel = new Channel { HttpClient = new HttpClient(httpHandler), HttpClientLongPoll = new HttpClient(httpHandler), CloudBlobStorage = cloudStorage, CryptoServices = receiverCrypto, Endpoint = receiverEndpoint, Logger = this.logger, }; var messages = await channel.ReceiveAsync(); Assert.Equal(1, messages.Count); Assert.Equal(Valid.Message, messages[0].Payload); }
private async Task<IReadOnlyCollection<Payload>> ReceiveMessageAsync(Mocks.CloudBlobStorageProviderMock cloudBlobStorage, Mocks.InboxHttpHandlerMock inboxMock, ICryptoProvider cryptoProvider, OwnEndpoint receiver) { Requires.NotNull(cloudBlobStorage, "cloudBlobStorage"); Requires.NotNull(receiver, "receiver"); var httpHandler = new Mocks.HttpMessageHandlerMock(); cloudBlobStorage.AddHttpHandler(httpHandler); inboxMock.Register(httpHandler); var channel = new Channel { HttpClient = new HttpClient(httpHandler), HttpClientLongPoll = new HttpClient(httpHandler), CloudBlobStorage = cloudBlobStorage, CryptoServices = cryptoProvider, Endpoint = receiver, Logger = this.logger, }; var progressMessage = new TaskCompletionSource<Payload>(); var progress = new Progress<Payload>(m => progressMessage.SetResult(m)); var messages = await channel.ReceiveAsync(progress: progress); Assert.That(messages.Count, Is.EqualTo(1)); await progressMessage.Task; Assert.That(progressMessage.Task.Result, Is.SameAs(messages.Single())); return messages; }
private async Task SendMessageAsync(Mocks.CloudBlobStorageProviderMock cloudBlobStorage, Mocks.InboxHttpHandlerMock inboxMock, ICryptoProvider cryptoProvider, OwnEndpoint sender, Endpoint receiver, Payload message) { Requires.NotNull(cloudBlobStorage, "cloudBlobStorage"); Requires.NotNull(sender, "sender"); Requires.NotNull(message, "message"); var httpHandler = new Mocks.HttpMessageHandlerMock(); cloudBlobStorage.AddHttpHandler(httpHandler); inboxMock.Register(httpHandler); var channel = new Channel() { HttpClient = new HttpClient(httpHandler), CloudBlobStorage = cloudBlobStorage, CryptoServices = cryptoProvider, Endpoint = sender, Logger = this.logger, }; await channel.PostAsync(Valid.Message, new[] { receiver }, Valid.ExpirationUtc); }