public void BonusMethod_WithAuthentication_UsesPreAuthentication()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Even More Success", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.BonusMethod(operation, "AwesomeUser", "1234");

            Assert.IsTrue(expectedRequest.PreAuthenticate);
        }
        public void ListRemoteStuffAsyncAwait_404DohickeyNotFound_ThrowsDohickeyNotFoundException()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.NotFound, "Dohicky not found", "I couldn't find your dohicky because I don't like you", true);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuffAsyncAwait(operation);

            // expect exception
        }
        public void ListRemoteStuffAsyncAwait_403NoneShallPass_ThrowsExampleOfAnotherUsefulException()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.Forbidden, "None shall pass", "Somethign else amusing", true);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuffAsyncAwait(operation);

            // expect exception
        }
        public void Execute_SuccessfulOperation_MarksResponseAsSuccessfull()
        {
            var expectedUri        = "test://queue.abc/whatever/";
            var expectedRawRequest = new TestableWebRequest(new Uri(expectedUri));

            expectedRawRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Response content", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRawRequest);
            var request = new RequestWithEmptyPayload(new SettingsFake(), expectedUri, "GET");

            var response = request.Execute();

            Assert.AreEqual(HttpStatusCode.OK, response.HttpStatus);
        }
        public void Execute_ExpectingEmptyPayload_ConsumesResponseStream()
        {
            var expectedUri         = "test://queue.abc/whatever/";
            var expectedRawRequest  = new TestableWebRequest(new Uri(expectedUri));
            var expectedRawResponse = new HttpResponseSettings(HttpStatusCode.OK, "Success", "Response content", false);

            expectedRawRequest.EnqueueResponse(expectedRawResponse);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRawRequest);
            var request = new RequestWithEmptyPayload(new SettingsFake(), expectedUri, "GET");

            var response = request.Execute();

            // expect the response stream to be closed now
            long x;

            Assert.Throws <ObjectDisposedException>(() => x = expectedRawResponse.ResponseStream.Position);
        }
Ejemplo n.º 6
0
        public void Execute_CommonApiException_MapsToProperAzureException(string exceptionName, string errorCode, int httpStatus, string errorMessage)
        {
            //arrange
            string expectedExceptionName = exceptionName + "AzureException";
            var    expectedUri           = "test://common-api-errors.abc/whatever/";
            var    expectedRawRequest    = new TestableWebRequest(new Uri(expectedUri));

            expectedRawRequest.EnqueueResponse((HttpStatusCode)httpStatus, errorCode, ErrorContentFor(errorCode, errorMessage), true);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRawRequest);
            var request = new RequestWithErrorPayload(new SettingsFake(), expectedUri, "GET", StorageServiceType.QueueService);

            request.RetryPolicy = new RetryPolicy <ExceptionRetryStrategy>(0);
            try
            {
                //act
                var response = request.Execute();
            }
            catch (AzureException ae)
            {
                //assert
                Assert.AreEqual(expectedExceptionName, ae.GetType().Name);
            }
        }
        public void ListRemoteStuffAsyncAwait_404SomeOtherObjectNotFound_ThrowsGenericNotFoundException()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.NotFound, "OtherObjectType not found", "I couldn't find yuor other object because the name was unimaginative", true);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuffAsyncAwait(operation);

            // expect exception
        }
        public void UploadSomething_403NoneShallPass_ThrowsExampleOfAnotherUsefulException()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.Forbidden, "None shall pass", "Somethign else amusing", true);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            // expect exception
        }
        public void UploadSomething_ValidRequest_SetsVersionHeader()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Even More Success", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            Assert.AreEqual("123-awesome", expectedRequest.Headers["version"]);
        }
        public void UploadSomething_ValidRequest_UploadsMyAwesomeDataCorrectly()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Even More Success", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            var uploadedData = ((TestableWebRequest)expectedRequest).GetContent();
            Assert.AreEqual("My awesome data payload!", System.Text.Encoding.UTF8.GetString(uploadedData));
        }
        public void UploadSomething_TimeoutOccurs_ThrowsRawTimeoutException()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(new TimeoutException("took too long, so sorry"))
                           .EnqueueResponse(HttpStatusCode.OK, "All Good", "Nothing to see, please move along", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            Assert.AreEqual("Nothing to see, please move along", response.Message);
        }
        public void UploadSomething_ValidRequest_ReturnsSuccessfulResponse()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Even More Success", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            Assert.IsTrue(response.IsSuccess);
        }
        public void UploadSomething_404SomeOtherObjectNotFound_ThrowsGenericNotFoundException()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.NotFound, "OtherObjectType not found", "I couldn't find yuor other object because the name was unimaginative", true);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            // expect exception
        }
        public void UploadSomething_ServiceOutage_ThrowsSampleServiceOutage()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(new WebException("I'm broke!", WebExceptionStatus.ConnectFailure));
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            // expect exception
        }
        public void ListRemoteStuff_ServiceOutage_ThrowsSampleServiceOutage()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(new WebException("I'm broke!", WebExceptionStatus.ConnectFailure));
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuff(operation);

            // expect exception
        }
        public void ListRemoteStuff_SixTimeoutsOccur_FinallyThrowsTheException()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(new TimeoutException("took too long, so sorry"))
                           .EnqueueResponse(new TimeoutException("took too long, so sorry"))
                           .EnqueueResponse(new TimeoutException("took too long, so sorry"))
                           .EnqueueResponse(new TimeoutException("took too long, so sorry"))
                           .EnqueueResponse(new TimeoutException("took too long, so sorry"))
                           .EnqueueResponse(new TimeoutException("took too long, so sorry"));
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuff(operation);

            // expect exception
        }
        public void ListRemoteStuff_TimeoutOccurs_TruesASecondTime()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(new TimeoutException("took too long, so sorry"))
                           .EnqueueResponse(HttpStatusCode.OK, "All Good", "Nothing to see, please move along", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuff(operation);

            Assert.AreEqual("Nothing to see, please move along", response.Message);
        }
        public void ListRemoteStuff_ValidRequest_ReturnsSuccessfulResponse()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Even More Success", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuff(operation);

            Assert.IsTrue(response.IsSuccess);
        }
        public void ListRemoteStuff_ValidRequest_SetsVersionHeader()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Even More Success", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuff(operation);

            Assert.AreEqual("123-awesome", expectedRequest.Headers["version"]);
        }
        public void UploadSomething_404DohickeyNotFound_ThrowsDohickeyNotFoundException()
        {
            var operation = "UploadSomething";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.NotFound, "Dohicky not found", "I couldn't find your dohicky because I don't like you", true);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.UploadSomething(operation, System.Text.Encoding.UTF8.GetBytes("My awesome data payload!"));

            // expect exception
        }
        public void ListRemoteStuffAsyncTPL_ValidRequest_ReturnsResponseContent()
        {
            var operation = "ListOfStuff";
            var expectedRequest = new TestableWebRequest(new Uri(BaseUri, operation));
            expectedRequest.EnqueueResponse(HttpStatusCode.OK, "Success", "Even More Success", false);
            TestableWebRequestCreateFactory.GetFactory().AddRequest(expectedRequest);
            var service = new SampleService(BaseUri);

            var response = service.ListRemoteStuffAsyncTPL(operation);

            Assert.AreEqual("Even More Success", response.Message);
        }