public async Task UriAndResponse_For_Single_Response() { // Arrange const HttpStatusCode statusCode = HttpStatusCode.Accepted; var testObj = GetTestObjects(1).First(); var testUri = Random.GetUri(); var response = GetResponse(statusCode, testObj); var uriAndResponse = new RequestConditionalUriAndResponse(testUri, response, request => request.Method == HttpMethod.Post); var client = GetTestClient(uriAndResponse); // Act // - should return NotImplemented because it's a GET request var result = await client.GetAsync(testUri); // Assert result.StatusCode.Should().Be(HttpStatusCode.NotImplemented); // Act // - should return expected result because it's a POST request result = await client.PostAsync(testUri, new StringContent(String.Empty)); // Assert result.StatusCode.Should().Be(statusCode); var resultObj = JsonConvert.DeserializeObject <TestClass>(await result.Content.ReadAsStringAsync()); testObj.Equals(resultObj).Should().BeTrue(); }
public async Task UriAndResponse_For_Multiple_Responses() { // Arrange const HttpStatusCode statusCode0 = HttpStatusCode.Continue; var testObj0 = GetTestObjects(1).First(); var testUri0 = Random.GetUri(); var response0 = GetResponse(statusCode0, testObj0); var uriAndResponse0 = new UriAndResponse(testUri0, response0); const HttpStatusCode statusCode1 = HttpStatusCode.OK; var testObj1 = GetTestObjects(1).First(); var testUri1 = Random.GetUri(); var response1 = GetResponse(statusCode1, testObj1); var uriAndResponse1 = new UriAndResponse(testUri1, response1); var client = GetTestClient(uriAndResponse0, uriAndResponse1); // Act var result = await client.GetAsync(testUri1); // Assert result.StatusCode.Should().Be(statusCode1); var resultObj = JsonConvert.DeserializeObject <TestClass>(await result.Content.ReadAsStringAsync()); testObj1.Equals(resultObj).Should().BeTrue(); }
public async Task UriAndResponse_For_Single_Response() { // Arrange const HttpStatusCode statusCode = HttpStatusCode.OK; var testObj = GetTestObjects(1).First(); var testUri = Random.GetUri(); var response = new HttpResponseMessage { StatusCode = statusCode, Content = new StringContent(JsonConvert.SerializeObject(testObj), Encoding.UTF8, "application/json") }; var uriAndResponse = new UriAndResponse(testUri, response); var client = GetTestClient(uriAndResponse); // Act var result = await client.GetAsync(testUri); // Assert result.StatusCode.Should().Be(statusCode); var resultObj = JsonConvert.DeserializeObject <TestClass>(await result.Content.ReadAsStringAsync()); testObj.Equals(resultObj).Should().BeTrue(); }
public void GetUri_Returns_Valid_Uri() { // Arrange // Act var retrievedUri = Random.GetUri(); // Assert Uri.IsWellFormedUriString(retrievedUri.AbsoluteUri, UriKind.Absolute); }
public void GetInt_Has_Max_Upper_Bound() { // Arrange const int upperBound = 0; // Act var retrievedInt = Random.GetInt(upperBound); // Assert retrievedInt.Should().Be(upperBound); }
public void GetLong_Has_Max_Upper_Bound() { // Arrange const int upperBound = 0; // Act var retrievedLong = Random.GetLong(upperBound); // Assert retrievedLong.Should().Be(upperBound); }
public void GetString_Is_Of_Expected_Length() { // Arrange var expectedLength = new System.Random(5756987).Next(1000); // Act var retrievedString = Random.GetString(expectedLength); // Assert retrievedString.Length.Should().Be(expectedLength); }
public async Task Returns_NotImplemented_When_No_UriAndResponses_Configured() { // Arrange var client = GetTestClient(); // Act var response = await client.GetAsync(Random.GetUri()); // Assert response.StatusCode.Should().Be(HttpStatusCode.NotImplemented); }
public void GetBytes_Returns_Collection_Of_Specified_Length() { // Arrange var rdm = new System.Random(4375634); var count = rdm.Next(300); // Act var retrievedBytes = Random.GetBytes(count); // Assert retrievedBytes.Count().Should().Be(count); }
public void GetLong_Is_Within_Two_Bounds() { // Arrange const int lowerBound = 5; const int upperBound = 6; // Act var retrievedLong = Random.GetLong(lowerBound, upperBound); // Assert retrievedLong.Should().Be(lowerBound); }
public void GetString_Without_Numbers_Contains_No_Numbers() { // Arrange const int expectedLength = 1000; // Act var retrievedString = Random.GetString(expectedLength, false); // Assert for (var i = 0; i < 10; i++) { retrievedString.IndexOf(i.ToString()).Should().Be(-1); } }
public void GetEMail_Returns_String_In_Expected_Format() { // Arrange // Act var retrievedEmail = Random.GetEmail(); var idxAt = retrievedEmail.IndexOf("@"); var idxDot = retrievedEmail.LastIndexOf('.'); // Assert retrievedEmail.Should().NotBeNullOrWhiteSpace(); idxAt.Should().BeGreaterThan(0); idxDot.Should().BeGreaterThan(idxAt); }
protected static IEnumerable <TestClass> GetTestObjects(int count) { IEnumerable <TestClass> ReturnFromStream() { while (true) { yield return(new TestClass { GuidProp = Guid.NewGuid(), IntProp = Random.GetInt(), StringProp = Random.GetString(10) }); } } return(ReturnFromStream().Take(count).ToList()); }
public async Task Returns_NotImplemented_When_No_Matching_UriAndResponses_Configured() { // Arrange const HttpStatusCode statusCode0 = HttpStatusCode.Continue; var testObj = GetTestObjects(1).First(); var testUri = Random.GetUri(); var response = GetResponse(statusCode0, testObj); var uriAndResponse = new UriAndResponse(testUri, response); var unrecognisedUri = Random.GetUri(); var client = GetTestClient(uriAndResponse); // Act var result = await client.GetAsync(unrecognisedUri); // Assert result.StatusCode.Should().Be(HttpStatusCode.NotImplemented); }
public async Task UriAndResponse_For_Single_Response() { // Arrange const HttpStatusCode statusCode = HttpStatusCode.Accepted; var testRequestObj = GetTestObjects(1).First(); var testResponseObj = GetTestObjects(1).First(); var testUri = Random.GetUri(); var response = GetResponse(statusCode, testResponseObj); var uriAndResponse = new ContentConditionalUriAndResponse <TestClass>(testUri, response, request => request.IntProp == testRequestObj.IntProp); var client = GetTestClient(uriAndResponse); // Act var result = await client.PostAsync(testUri, GetAsStringContent(testRequestObj)); // Assert result.StatusCode.Should().Be(statusCode); var resultObj = JsonConvert.DeserializeObject <TestClass>(await result.Content.ReadAsStringAsync()); testResponseObj.Equals(resultObj).Should().BeTrue(); }
public async Task UriAndResponse_Throws_Excpn_For_All_Http_Verbs_Except_Patch_Post_And_Put() { // Arrange const HttpStatusCode statusCode = HttpStatusCode.Accepted; var testRequestObj = GetTestObjects(1).First(); var testResponseObj = GetTestObjects(1).First(); var testUri = Random.GetUri(); var response = GetResponse(statusCode, testResponseObj); var uriAndResponse = new ContentConditionalUriAndResponse <TestClass>(testUri, response, request => request.IntProp == testRequestObj.IntProp); var client = GetTestClient(uriAndResponse); var permittedMethods = new List <HttpMethod> { HttpMethod.Patch, HttpMethod.Post, HttpMethod.Put }; // Act foreach (var httpMethod in typeof(HttpMethod).GetProperties(BindingFlags.Public | BindingFlags.Static) .Where(propInfo => propInfo.PropertyType == typeof(HttpMethod)) .Select(propInfo => (HttpMethod)propInfo.GetValue(null)) .Where(httpMethod => !permittedMethods.Contains(httpMethod))) { try { await client.SendAsync(new HttpRequestMessage(httpMethod, testUri)); } catch (InvalidOperationException exception) when(exception.Message.StartsWith($"Invalid HTTP method: {httpMethod.Method}.")) { continue; } Assert.Fail($"Http method {httpMethod.Method} was unexpectedly permitted."); } }
public async Task UriAndResponse_For_Multiple_Responses() { // Arrange const HttpStatusCode statusCode0 = HttpStatusCode.Accepted; var testObj0 = GetTestObjects(1).First(); var testUri0 = Random.GetUri(); var response0 = GetResponse(statusCode0, testObj0); var uriAndResponse0 = new RequestConditionalUriAndResponse(testUri0, response0, request => request.Method == HttpMethod.Get); const HttpStatusCode statusCode1 = HttpStatusCode.Accepted; var testObj1 = GetTestObjects(1).First(); var testUri1 = Random.GetUri(); var response1 = GetResponse(statusCode1, testObj1); var uriAndResponse1 = new RequestConditionalUriAndResponse(testUri1, response1, request => request.Method == HttpMethod.Post); var client = GetTestClient(uriAndResponse0, uriAndResponse1); // Act var result = await client.GetAsync(testUri0); // Assert result.StatusCode.Should().Be(statusCode0); var resultObj = JsonConvert.DeserializeObject <TestClass>(await result.Content.ReadAsStringAsync()); testObj0.Equals(resultObj).Should().BeTrue(); // Act result = await client.PostAsync(testUri1, new StringContent(String.Empty)); // Assert result.StatusCode.Should().Be(statusCode0); resultObj = JsonConvert.DeserializeObject <TestClass>(await result.Content.ReadAsStringAsync()); testObj1.Equals(resultObj).Should().BeTrue(); }
public async Task UriAndResponse_For_Multiple_Responses() { // Arrange const HttpStatusCode statusCode0 = HttpStatusCode.Accepted; var testRequestObj0 = GetTestObjects(1).First(); var testResponseObj0 = GetTestObjects(1).First(); var testUri = Random.GetUri(); var response0 = GetResponse(statusCode0, testResponseObj0); var uriAndResponse0 = new ContentConditionalUriAndResponse <TestClass>(testUri, response0, request => request.IntProp == testRequestObj0.IntProp); const HttpStatusCode statusCode1 = HttpStatusCode.Created; var testRequestObj1 = GetTestObjects(1).First(); var testResponseObj1 = GetTestObjects(1).First(); var response1 = GetResponse(statusCode1, testResponseObj1); var uriAndResponse1 = new ContentConditionalUriAndResponse <TestClass>(testUri, response1, request => request.IntProp == testRequestObj1.IntProp); var client = GetTestClient(uriAndResponse0, uriAndResponse1); // Act var result0 = await client.PostAsync(testUri, GetAsStringContent(testRequestObj0)); var result1 = await client.PostAsync(testUri, GetAsStringContent(testRequestObj1)); // Assert result0.StatusCode.Should().Be(statusCode0); var resultObj = JsonConvert.DeserializeObject <TestClass>(await result0.Content.ReadAsStringAsync()); testResponseObj0.Equals(resultObj).Should().BeTrue(); result1.StatusCode.Should().Be(statusCode1); resultObj = JsonConvert.DeserializeObject <TestClass>(await result1.Content.ReadAsStringAsync()); testResponseObj1.Equals(resultObj).Should().BeTrue(); }