public async Task Play_song_request__handle_request() { // Arrange var customSkillRequest = new CustomSkillRequest { Intent = new Intent { Name = "PlaySongTitleArtistRequest", Slots = new Dictionary <string, Slot> { { "Title", new Slot { Name = "Title", Value = "I Will Wait" } }, { "ArtistName", new Slot { Name = "ArtistName", Value = "Mumford & Sons" } } } }, DialogState = "STARTED", Type = "PlaySongTitleArtistRequest" }; // mock dependency provider common Mock <ICommonDependencyProvider> provider = new Mock <ICommonDependencyProvider>(MockBehavior.Strict); // mock dependency provider sqs var request = new JukeboxSqsRequest { Key = "328", MessageBody = "foo-bar", RequestType = "PlaySongTitleArtistRequest" }; var sendMessageRequest = new SendMessageRequest { QueueUrl = "http://foo-bar", MessageGroupId = "bat-baz", MessageDeduplicationId = "foo-date", MessageBody = JsonConvert.SerializeObject(request) }; Mock <IAmazonSQS> sqsClient = new Mock <IAmazonSQS>(MockBehavior.Strict); sqsClient.Setup(x => x.SendMessageAsync(sendMessageRequest, new CancellationToken())); // mock dependency provider dynamodb IEnumerable <SongModel.Song> foundDynamodbSongs = new List <SongModel.Song> { SongFixtures.Song1 }; Mock <IDynamodbDependencyProvider> dynamodbProvider = new Mock <IDynamodbDependencyProvider>(MockBehavior.Strict); dynamodbProvider.Setup(x => x.DynamoDbFindSongsByTitleArtistAsync("I Will Wait", "Mumford & Sons")).Returns(Task.FromResult(foundDynamodbSongs)); var playSongRequest = new PlaySongTitleArtistRequest(provider.Object, sqsClient.Object, "http://foo-bar", dynamodbProvider.Object); // Act var response = await playSongRequest.HandleRequest(customSkillRequest); // Assert Assert.Contains("Sending song number 328", response.Message); }
public static async Task Abstract_intent_request__send_sqs_response__invalid() { // Arrange var request = new JukeboxSqsRequest { Key = "123", MessageBody = "foo-bar", RequestType = "bat-baz" }; var sendMessageRequest = new SendMessageRequest { QueueUrl = "http://foo-bar", MessageGroupId = "foooooo", MessageDeduplicationId = "foo-date", MessageBody = JsonConvert.SerializeObject(request) }; var provider = new Mock <ICommonDependencyProvider>(MockBehavior.Strict); provider.Setup(x => x.DateNow()).Returns("foo-date"); var sqsClient = new Mock <IAmazonSQS>(MockBehavior.Strict); sqsClient.Setup(x => x.SendMessageAsync(sendMessageRequest, new CancellationToken())); var aIntentRequestFixture = new AIntentRequestFixture(provider.Object, sqsClient.Object); // Act await aIntentRequestFixture.SendSqsRequest(request, "bat-baz"); // Assert provider.Verify(x => x.DateNow(), Times.Once); sqsClient.Verify(x => x.SendMessageAsync( It.Is <SendMessageRequest>(y => y.MessageBody == sendMessageRequest.MessageBody && y.MessageDeduplicationId == sendMessageRequest.MessageDeduplicationId && y.MessageGroupId == sendMessageRequest.MessageGroupId && y.QueueUrl == sendMessageRequest.QueueUrl ), new CancellationToken() ), Times.Never); }
public virtual async Task <SendMessageResponse> SendSqsRequest(JukeboxSqsRequest request, string requestType) { try { if (request == null || _queueUrl.IsNullOrEmpty()) { return(null); } var sendMessageRequest = new SendMessageRequest { QueueUrl = _queueUrl, MessageGroupId = requestType, MessageDeduplicationId = _provider.DateNow(), MessageBody = JsonConvert.SerializeObject(request) }; LambdaLogger.Log($"Sending Sqs Message to Jukebox: {JsonConvert.SerializeObject(sendMessageRequest)}"); var sendMessageResponse = await _sqsClient.SendMessageAsync(sendMessageRequest); return(sendMessageResponse); } catch (Exception e) { LambdaLogger.Log($"There was a problem sending message: {e}"); } return(null); }