GivenExistingEndpointsWhenFeedDeleteWithoutParametersWhenPerformingQueryThenTheMessageShouldNotBeOkBecauseTheMessageIdsAreMissing() { var feedDeleteService = new FeedDeleteService(new HttpMessagingService(HttpClient)); var feedDeleteParameters = new FeedDeleteParameters { OnboardResponse = OnboardResponse }; feedDeleteService.Send(feedDeleteParameters); Thread.Sleep(TimeSpan.FromSeconds(5)); var fetchMessageService = new FetchMessageService(HttpClient); var fetch = fetchMessageService.Fetch(OnboardResponse); Assert.Single(fetch); var decodedMessage = DecodeMessageService.Decode(fetch[0].Command.Message); Assert.Equal(400, decodedMessage.ResponseEnvelope.ResponseCode); var messages = DecodeMessageService.Decode(decodedMessage.ResponsePayloadWrapper.Details); Assert.NotNull(messages); Assert.NotEmpty(messages.Messages_); Assert.Single(messages.Messages_); Assert.Equal("VAL_000017", messages.Messages_[0].MessageCode); Assert.Equal( "messageIds information required to process message is missing or malformed.", messages.Messages_[0].Message_); }
/// <summary> /// Please see <seealso cref="IEncodeMessageService{T}.Encode" /> for documentation. /// </summary> /// <param name="feedDeleteParameters">-</param> /// <returns>-</returns> public EncodedMessage Encode(FeedDeleteParameters feedDeleteParameters) { var messageHeaderParameters = new MessageHeaderParameters { ApplicationMessageId = feedDeleteParameters.ApplicationMessageId, TeamSetContextId = feedDeleteParameters.TeamsetContextId ?? "", TechnicalMessageType = TechnicalMessageTypes.DkeFeedConfirm, Mode = RequestEnvelope.Types.Mode.Direct }; var messagePayloadParameters = new MessagePayloadParameters { TypeUrl = MessageDelete.Descriptor.FullName }; var messageDelete = new MessageDelete(); feedDeleteParameters.Senders?.ForEach(sender => messageDelete.Senders.Add(sender)); feedDeleteParameters.MessageIds?.ForEach(messageId => messageDelete.MessageIds.Add(messageId)); feedDeleteParameters.ValidityPeriod = feedDeleteParameters.ValidityPeriod; messagePayloadParameters.Value = messageDelete.ToByteString(); var encodedMessage = new EncodedMessage { Id = Guid.NewGuid().ToString(), Content = EncodeMessageService.Encode(messageHeaderParameters, messagePayloadParameters) }; return(encodedMessage); }
/// <summary> /// Please see <seealso cref="IMessagingService{T}.Send" /> for documentation. /// </summary> /// <param name="feedDeleteParameters">-</param> /// <returns>-</returns> public MessagingResult Send(FeedDeleteParameters feedDeleteParameters) { var encodedMessages = new List <string> { Encode(feedDeleteParameters).Content }; var messagingParameters = feedDeleteParameters.BuildMessagingParameter(encodedMessages); return(_messagingService.Send(messagingParameters)); }
/// <summary> /// The actions for the recipient are the following: /// 1. Query the message headers. /// 2. Let the AR process the message for some seconds to be sure (this depends on the use case and is just an example /// time limit) /// 3. Fetch the response from the AR and check. /// 4. Delete the messages using the message IDs to clean the feed. /// 5. Let the AR process the message for some seconds to be sure (this depends on the use case and is just an example /// time limit) /// 6. Fetch the response from the AR and check. /// </summary> private static void ActionsForRecipient() { var queryMessageHeadersService = new QueryMessageHeadersService(new HttpMessagingService(HttpClientForRecipient)); var queryMessageHeadersParameters = new QueryMessagesParameters { OnboardResponse = Recipient, Senders = new List <string> { Sender.SensorAlternateId } }; queryMessageHeadersService.Send(queryMessageHeadersParameters); Thread.Sleep(TimeSpan.FromSeconds(2)); var fetchMessageService = new FetchMessageService(HttpClientForRecipient); var fetch = fetchMessageService.Fetch(Recipient); Assert.Single(fetch); var decodedMessage = DecodeMessageService.Decode(fetch[0].Command.Message); Assert.Equal(200, decodedMessage.ResponseEnvelope.ResponseCode); Assert.Equal(ResponseEnvelope.Types.ResponseBodyType.AckForFeedHeaderList, decodedMessage.ResponseEnvelope.Type); var feedMessageHeaderQuery = queryMessageHeadersService.Decode(decodedMessage.ResponsePayloadWrapper.Details); Assert.True(feedMessageHeaderQuery.QueryMetrics.TotalMessagesInQuery > 0, "There has to be at least one message in the query."); var messageIds = (from feed in feedMessageHeaderQuery.Feed from feedHeader in feed.Headers select feedHeader.MessageId) .ToList(); var feedDeleteService = new FeedDeleteService(new HttpMessagingService(HttpClientForRecipient)); var feedDeleteParameters = new FeedDeleteParameters { OnboardResponse = Recipient, MessageIds = messageIds }; feedDeleteService.Send(feedDeleteParameters); Thread.Sleep(TimeSpan.FromSeconds(2)); fetch = fetchMessageService.Fetch(Recipient); Assert.Single(fetch); decodedMessage = DecodeMessageService.Decode(fetch[0].Command.Message); Assert.Equal(200, decodedMessage.ResponseEnvelope.ResponseCode); }
public void GivenExistingEndpointsWhenFeedDeleteWithUnknownMessageIdsMessageIdsThenTheResultShouldBeOk() { var feedDeleteService = new FeedDeleteService(new HttpMessagingService(HttpClient)); var feedDeleteParameters = new FeedDeleteParameters { OnboardResponse = OnboardResponse, MessageIds = new List <string> { Guid.NewGuid().ToString() } }; feedDeleteService.Send(feedDeleteParameters); Thread.Sleep(TimeSpan.FromSeconds(5)); var fetchMessageService = new FetchMessageService(HttpClient); var fetch = fetchMessageService.Fetch(OnboardResponse); Assert.Single(fetch); var decodedMessage = DecodeMessageService.Decode(fetch[0].Command.Message); Assert.Equal(200, decodedMessage.ResponseEnvelope.ResponseCode); Assert.Equal(ResponseEnvelope.Types.ResponseBodyType.AckWithMessages, decodedMessage.ResponseEnvelope.Type); var messages = DecodeMessageService.Decode(decodedMessage.ResponsePayloadWrapper.Details); Assert.NotNull(messages); Assert.NotEmpty(messages.Messages_); Assert.Single(messages.Messages_); Assert.Equal("VAL_000205", messages.Messages_[0].MessageCode); Assert.Equal( "Feed message cannot be found.", messages.Messages_[0].Message_); }
GivenExistingEndpointsWhenFeedDeleteWithValidityPeriodThenTheResultShouldNotBeOkBecauseTheMessageIdsAreMissing() { var feedDeleteService = new FeedDeleteService(new HttpMessagingService(HttpClient)); var feedDeleteParameters = new FeedDeleteParameters { OnboardResponse = OnboardResponse, ValidityPeriod = new ValidityPeriod() }; feedDeleteParameters.ValidityPeriod.SentTo = UtcDataService.Timestamp(TimestampOffset.None); feedDeleteParameters.ValidityPeriod.SentTo = UtcDataService.Timestamp(TimestampOffset.FourWeeks); feedDeleteService.Send(feedDeleteParameters); Thread.Sleep(TimeSpan.FromSeconds(5)); var fetchMessageService = new FetchMessageService(HttpClient); var fetch = fetchMessageService.Fetch(OnboardResponse); Assert.Single(fetch); var decodedMessage = DecodeMessageService.Decode(fetch[0].Command.Message); Assert.Equal(400, decodedMessage.ResponseEnvelope.ResponseCode); Assert.Equal(ResponseEnvelope.Types.ResponseBodyType.AckWithFailure, decodedMessage.ResponseEnvelope.Type); var messages = DecodeMessageService.Decode(decodedMessage.ResponsePayloadWrapper.Details); Assert.NotNull(messages); Assert.NotEmpty(messages.Messages_); Assert.Single(messages.Messages_); Assert.Equal("VAL_000017", messages.Messages_[0].MessageCode); Assert.Equal( "messageIds information required to process message is missing or malformed.", messages.Messages_[0].Message_); }
GivenExistingEndpointsWhenFeedDeleteWithUnknownMessageIdsSenderIdsThenTheResultShouldNotBeOkBecauseTheMessageIdsAreMissing() { var feedDeleteService = new FeedDeleteService(new HttpMessagingService(HttpClient)); var feedDeleteParameters = new FeedDeleteParameters { OnboardResponse = OnboardResponse, Senders = new List <string> { Guid.NewGuid().ToString() } }; feedDeleteService.Send(feedDeleteParameters); Thread.Sleep(TimeSpan.FromSeconds(5)); var fetchMessageService = new FetchMessageService(HttpClient); var fetch = fetchMessageService.Fetch(OnboardResponse); Assert.Single(fetch); var decodedMessage = DecodeMessageService.Decode(fetch[0].Command.Message); Assert.Equal(400, decodedMessage.ResponseEnvelope.ResponseCode); Assert.Equal(ResponseEnvelope.Types.ResponseBodyType.AckWithFailure, decodedMessage.ResponseEnvelope.Type); var messages = DecodeMessageService.Decode(decodedMessage.ResponsePayloadWrapper.Details); Assert.NotNull(messages); Assert.NotEmpty(messages.Messages_); Assert.Single(messages.Messages_); Assert.Equal("VAL_000017", messages.Messages_[0].MessageCode); Assert.Equal( "messageIds information required to process message is missing or malformed.", messages.Messages_[0].Message_); }