示例#1
0
        public async Task SendMessageAsync_WithStoreManagerTest()
        {
            var        amazonSQS    = Substitute.For <IAmazonSQS>();
            var        storeManager = Substitute.For <IStorageManager>();
            SQSManager subscriber   = Substitute.ForPartsOf <SQSManager>(amazonSQS, storeManager);

            var document = new byte[700000];

            for (int j = 0; j < document.Length; j++)
            {
                document[j] = 0x20;
            }

            var content = new LoanMessage
            {
                LoanID     = 1,
                LoanNumber = System.Text.Encoding.Default.GetString(document),
                Amount     = 1000
            };

            var serializedContent = JsonConvert.SerializeObject(content);
            var expectedRef       = new S3StorageReference("ValidKey");

            storeManager.PutDataAsync(Arg.Any <string>()).ReturnsForAnyArgs(info => expectedRef);

            amazonSQS.CreateQueueAsync(Arg.Any <string>())
            .ReturnsForAnyArgs(info => new CreateQueueResponse {
                QueueUrl = TestQueueURL, HttpStatusCode = HttpStatusCode.OK
            });


            amazonSQS.SendMessageAsync(Arg.Any <SendMessageRequest>())
            .ReturnsForAnyArgs(new SendMessageResponse()
            {
                HttpStatusCode = HttpStatusCode.OK
            });


            await subscriber.SendMessageAsync(QueueName, content);

            //if storemanager was called, pass
            await storeManager.ReceivedWithAnyArgs().PutDataAsync(serializedContent);

            await amazonSQS.Received()
            .SendMessageAsync(Arg.Is <SendMessageRequest>(x => x.MessageBody == JsonConvert.SerializeObject(expectedRef)));
        }
示例#2
0
        public void ReceiveMessage_WithStoreManagerTest()
        {
            var amazonSQS    = Substitute.For <IAmazonSQS>();
            var storeManager = Substitute.For <IStorageManager>();

            _logger = Substitute.For <ILogger>();

            storeManager.StorageReferenceType.Returns(typeof(S3StorageReference));
            storeManager.When(x => x.DeleteData(Arg.Any <S3StorageReference>())).DoNotCallBase();

            SQSManager subscriber = new SQSManager(amazonSQS, storeManager);

            var content = new LoanMessage
            {
                LoanID     = 1,
                LoanNumber = "067",
                Amount     = 1000
            };

            var serializedContent = JsonConvert.SerializeObject(content);
            var expectedRef       = new S3StorageReference("ValidKey");

            //storeManager.PutData(serializedContent).Returns(info => expectedRef);
            storeManager.GetData(Arg.Any <S3StorageReference>()).ReturnsForAnyArgs(info => serializedContent);

            var message = new Message
            {
                Body          = JsonConvert.SerializeObject(expectedRef),
                ReceiptHandle = "Test_ReceiptHandle"
            };

            message.MessageAttributes.Add("SQSLargePayloadSize",
                                          new MessageAttributeValue {
                DataType = "Number", StringValue = "123456"
            });

            amazonSQS.ReceiveMessageAsync(Arg.Any <ReceiveMessageRequest>()).ReturnsForAnyArgs(
                info =>
                new ReceiveMessageResponse
            {
                HttpStatusCode = HttpStatusCode.OK,
                Messages       = new AutoConstructedList <Message>
                {
                    message
                }
            });


            amazonSQS.CreateQueueAsync(Arg.Any <string>())
            .ReturnsForAnyArgs(info => new CreateQueueResponse {
                QueueUrl = TestQueueURL, HttpStatusCode = HttpStatusCode.OK
            });

            amazonSQS.DeleteMessageAsync(Arg.Any <DeleteMessageRequest>()).ReturnsForAnyArgs(
                info =>
                new DeleteMessageResponse
            {
                HttpStatusCode = HttpStatusCode.OK,
            }
                );


            subscriber.ReceiveMessage <LoanMessage>(QueueName, Handler, default(CancellationToken));

            storeManager.Received().GetData(Arg.Is <S3StorageReference>(x => x.GetStorageKey() == expectedRef.GetStorageKey()));
        }