Skip to content

Commit

Permalink
Merge pull request #273 from Vonage/devx-6173
Browse files Browse the repository at this point in the history
devx-6173
  • Loading branch information
matt-lethargic authored May 17, 2022
2 parents 9f7d64f + 70fdc16 commit 4633892
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 67 deletions.
8 changes: 4 additions & 4 deletions Vonage.Test.Unit/ConversionTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class ConversionTest : TestBase
[InlineData(true)]
public void SmsConversion(bool passCreds)
{
var expectedUri = $"${ApiUrl}/conversions/sms";
var expectedUri = $"{ApiUrl}/conversions/sms";
var expectedContent = "message-id=00A0B0C0&delivered=true&timestamp=2020-01-01+12%3A00%3A00&api_key=testkey&api_secret=testSecret&";
var expectedResponse = "";
Setup(expectedUri, expectedResponse, expectedContent);
Expand All @@ -38,7 +38,7 @@ public void SmsConversion(bool passCreds)
[InlineData(true)]
public void VoiceConversion(bool passCreds)
{
var expectedUri = $"${ApiUrl}/conversions/sms";
var expectedUri = $"{ApiUrl}/conversions/voice";
var expectedContent = "message-id=00A0B0C0&delivered=true&timestamp=2020-01-01+12%3A00%3A00&api_key=testkey&api_secret=testSecret&";
var expectedResponse = "";
Setup(expectedUri, expectedResponse, expectedContent);
Expand All @@ -62,7 +62,7 @@ public void VoiceConversion(bool passCreds)
[InlineData(true)]
public async void SmsConversionAsync(bool passCreds)
{
var expectedUri = $"${ApiUrl}/conversions/sms";
var expectedUri = $"{ApiUrl}/conversions/sms";
var expectedContent = "message-id=00A0B0C0&delivered=true&timestamp=2020-01-01+12%3A00%3A00&api_key=testkey&api_secret=testSecret&";
var expectedResponse = "";
Setup(expectedUri, expectedResponse, expectedContent);
Expand All @@ -86,7 +86,7 @@ public async void SmsConversionAsync(bool passCreds)
[InlineData(true)]
public async void VoiceConversionAsync(bool passCreds)
{
var expectedUri = $"${ApiUrl}/conversions/sms";
var expectedUri = $"{ApiUrl}/conversions/voice";
var expectedContent = "message-id=00A0B0C0&delivered=true&timestamp=2020-01-01+12%3A00%3A00&api_key=testkey&api_secret=testSecret&";
var expectedResponse = "";
Setup(expectedUri, expectedResponse, expectedContent);
Expand Down
18 changes: 9 additions & 9 deletions Vonage.Test.Unit/MessagingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class MessagingTests : TestBase
public void SendSmsWithAllPropertiesSet(bool passCreds)
{
var expectedResponse = GetExpectedJson();
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}" +
$"&ttl=900000&status-report-req=true&callback={HttpUtility.UrlEncode("https://example.com/sms-dlr")}&message-class=0" +
$"&type=text&vcard=none&vcal=none&body=638265253311&udh=06050415811581&protocol-id=127&title=welcome&url={HttpUtility.UrlEncode("https://example.com")}" +
Expand Down Expand Up @@ -69,7 +69,7 @@ public void SendSmsWithAllPropertiesSet(bool passCreds)
public async Task SendSmsAsyncWithAllPropertiesSet(bool passCreds)
{
var expectedResponse = GetExpectedJson();
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}" +
$"&ttl=900000&status-report-req=true&callback={HttpUtility.UrlEncode("https://example.com/sms-dlr")}&message-class=0" +
$"&type=text&vcard=none&vcal=none&body=638265253311&udh=06050415811581&protocol-id=127&title=welcome&url={HttpUtility.UrlEncode("https://example.com")}" +
Expand Down Expand Up @@ -133,7 +133,7 @@ public void SendSmsTypicalUsage()
}
]
}";
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&api_key={ApiKey}&api_secret={ApiSecret}&";
Setup(expectedUri, expectedResponse, expectedRequestContent);
var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret));
Expand Down Expand Up @@ -165,7 +165,7 @@ public void SendSmsTypicalUsageSimplified()
}
]
}";
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&type=text&api_key={ApiKey}&api_secret={ApiSecret}&";
Setup(expectedUri, expectedResponse, expectedRequestContent);
var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret));
Expand All @@ -184,7 +184,7 @@ public void SendSmsTypicalUsageSimplified()
public async Task SendSmsTypicalUsageSimplifiedAsync()
{
var expectedResponse = GetExpectedJson();
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&type=text&api_key={ApiKey}&api_secret={ApiSecret}&";
Setup(expectedUri, expectedResponse, expectedRequestContent);
var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret));
Expand Down Expand Up @@ -216,7 +216,7 @@ public void SendSmsUnicode()
}
]
}";
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("こんにちは世界")}&api_key={ApiKey}&api_secret={ApiSecret}&";
Setup(expectedUri, expectedResponse, expectedRequestContent);
var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret));
Expand All @@ -235,7 +235,7 @@ public void SendSmsUnicode()
public void SendSmsBadResponse()
{
var expectedResponse = GetExpectedJson();
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&api_key={ApiKey}&api_secret={ApiSecret}&";
Setup(expectedUri, expectedResponse, expectedRequestContent);
var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret));
Expand All @@ -252,7 +252,7 @@ public void SendSmsBadResponse()
public async Task SendSmsAsyncBadResponse()
{
var expectedResponse = GetExpectedJson();
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&api_key={ApiKey}&api_secret={ApiSecret}&";
Setup(expectedUri, expectedResponse, expectedRequestContent);
var client = new VonageClient(Request.Credentials.FromApiKeyAndSecret(ApiKey, ApiSecret));
Expand All @@ -269,7 +269,7 @@ public async Task SendSmsAsyncBadResponse()
public void NullMessagesResponse()
{
var expectedResponse = @"";
var expectedUri = $"{RestUrl}/sms/json?";
var expectedUri = $"{RestUrl}/sms/json";
var expectedRequestContent = $"from=AcmeInc&to=447700900000&text={HttpUtility.UrlEncode("Hello World!")}&api_key={ApiKey}&api_secret={ApiSecret}&";

Setup(expectedUri, expectedResponse, expectedRequestContent);
Expand Down
48 changes: 18 additions & 30 deletions Vonage.Test.Unit/TestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using System.Threading.Tasks;
using Moq;
using Moq.Protected;
using Xunit;

namespace Vonage.Test.Unit
{
Expand Down Expand Up @@ -43,7 +44,7 @@ public class TestBase

private static readonly string TestAssemblyName = ThisAssembly.GetName().Name;

public static string AssemblyDirectory
private static string AssemblyDirectory
{
get
{
Expand All @@ -55,55 +56,42 @@ public static string AssemblyDirectory
}


public void Setup(string uri, string responseContent, string requestContent = null, HttpStatusCode expectedCode = HttpStatusCode.OK)
protected void Setup(string uri, string responseContent, string requestContent = null, HttpStatusCode expectedCode = HttpStatusCode.OK)
{
typeof(Configuration).GetField("_client", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue(Configuration.Instance, null);
var mockHandler = new Mock<HttpMessageHandler>(MockBehavior.Strict);
mockHandler
.Protected()
.Setup<Task<HttpResponseMessage>>(MockedMethod,
ItExpr.Is<HttpRequestMessage>(
x =>
string.Equals(x.RequestUri.AbsoluteUri, uri, StringComparison.OrdinalIgnoreCase) &&
requestContent == null ||
string.Equals(x.Content.ReadAsStringAsync().Result, requestContent, StringComparison.OrdinalIgnoreCase)),
ItExpr.IsAny<CancellationToken>()
)
.ReturnsAsync(new HttpResponseMessage
{
StatusCode = expectedCode,
Content = new StringContent(responseContent)
})
.Verifiable();
Configuration.Instance.ClientHandler = mockHandler.Object;
Setup(uri, new StringContent(responseContent), expectedCode, requestContent);
}

public void Setup(string uri, byte[] responseContent, HttpStatusCode expectedCode = HttpStatusCode.OK)
protected void Setup(string uri, byte[] responseContent, HttpStatusCode expectedCode = HttpStatusCode.OK)
{
Setup(uri, new StreamContent(new MemoryStream(responseContent)), expectedCode);
}


private void Setup(string uri, HttpContent httpContent, HttpStatusCode expectedCode, string requestContent = null)
{
typeof(Configuration).GetField("_client", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(Configuration.Instance, null);
typeof(Configuration).GetField("_client", BindingFlags.Instance | BindingFlags.NonPublic)?.SetValue(Configuration.Instance, null);
Mock<HttpMessageHandler> mockHandler = new Mock<HttpMessageHandler>(MockBehavior.Strict);

mockHandler
.Protected()
.Setup<Task<HttpResponseMessage>>(MockedMethod,
ItExpr.Is<HttpRequestMessage>(
x => string.Equals(x.RequestUri.AbsoluteUri, uri, StringComparison.OrdinalIgnoreCase) && (requestContent == null) ||
string.Equals(x.Content.ReadAsStringAsync().Result, requestContent, StringComparison.OrdinalIgnoreCase)
),
ItExpr.IsAny<HttpRequestMessage>(),
ItExpr.IsAny<CancellationToken>())
.ReturnsAsync(new HttpResponseMessage()
.Callback<HttpRequestMessage, CancellationToken>((actualHttpRequestMessage, cancellationToken) =>
{
Assert.Equal(uri, actualHttpRequestMessage.RequestUri.AbsoluteUri, StringComparer.OrdinalIgnoreCase);
if (requestContent == null)
return;
var actualContent = actualHttpRequestMessage.Content.ReadAsStringAsync().Result;
Assert.Equal(requestContent, actualContent, StringComparer.OrdinalIgnoreCase);
})
.ReturnsAsync(new HttpResponseMessage
{
StatusCode = expectedCode,
Content = httpContent
})
.Verifiable();

Configuration.Instance.ClientHandler = mockHandler.Object;
}

Expand Down
4 changes: 2 additions & 2 deletions Vonage.Test.Unit/VerifyTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void TestCheckVerification(bool passCreds, bool kitchenSink)
""currency"": ""EUR"",
""estimated_price_messages_sent"": ""0.03330000""
}";
var expectedUri = $"{ApiUrl}/verify/json";
var expectedUri = $"{ApiUrl}/verify/check/json";

string expectedRequestContent;
VerifyCheckRequest request = new VerifyCheckRequest { Code = "1234", RequestId = "abcdef0123456789abcdef0123456789" };
Expand Down Expand Up @@ -330,7 +330,7 @@ public async void TestCheckVerificationAsync(bool passCreds, bool kitchenSink)
""currency"": ""EUR"",
""estimated_price_messages_sent"": ""0.03330000""
}";
var expectedUri = $"{ApiUrl}/verify/json";
var expectedUri = $"{ApiUrl}/verify/check/json";

string expectedRequestContent;
VerifyCheckRequest request = new VerifyCheckRequest { Code = "1234", RequestId = "abcdef0123456789abcdef0123456789" };
Expand Down
Loading

0 comments on commit 4633892

Please sign in to comment.