diff --git a/Vonage.Test/NumberVerification/Authenticate/E2ETest.cs b/Vonage.Test/NumberVerification/Authenticate/E2ETest.cs index fcffb2d0..0ee1cb90 100644 --- a/Vonage.Test/NumberVerification/Authenticate/E2ETest.cs +++ b/Vonage.Test/NumberVerification/Authenticate/E2ETest.cs @@ -8,7 +8,7 @@ namespace Vonage.Test.NumberVerification.Authenticate; [Trait("Category", "E2E")] -public class E2ETest : SimSwap.E2EBase +public class E2ETest : E2EBase { public E2ETest() : base(typeof(E2ETest).Namespace) { @@ -17,7 +17,7 @@ public E2ETest() : base(typeof(E2ETest).Namespace) [Fact] public async Task Authenticate() { - this.Helper.Server.Given(WireMock.RequestBuilders.Request.Create() + this.Helper.OidcServer.Given(WireMock.RequestBuilders.Request.Create() .WithPath("/oauth2/auth") .WithHeader("Authorization", this.Helper.ExpectedAuthorizationHeaderValue) .WithBody( @@ -25,7 +25,7 @@ public async Task Authenticate() .UsingPost()) .RespondWith(Response.Create().WithStatusCode(HttpStatusCode.OK) .WithBody(this.Serialization.GetResponseJson(nameof(SerializationTest.ShouldDeserializeAuthorize)))); - this.Helper.Server.Given(WireMock.RequestBuilders.Request.Create() + this.Helper.VonageServer.Given(WireMock.RequestBuilders.Request.Create() .WithPath("/oauth2/token") .WithHeader("Authorization", this.Helper.ExpectedAuthorizationHeaderValue) .WithBody("auth_req_id=123456789&grant_type=urn:openid:params:grant-type:ciba") diff --git a/Vonage.Test/NumberVerification/E2EBase.cs b/Vonage.Test/NumberVerification/E2EBase.cs index 2ae5dc95..3e300eab 100644 --- a/Vonage.Test/NumberVerification/E2EBase.cs +++ b/Vonage.Test/NumberVerification/E2EBase.cs @@ -1,16 +1,15 @@ using Vonage.Serialization; using Vonage.Test.Common; -using Vonage.Test.TestHelpers; namespace Vonage.Test.NumberVerification; public class E2EBase { - internal readonly TestingContext Helper; + internal readonly OidcTestingContext Helper; internal readonly SerializationTestHelper Serialization; protected E2EBase(string serializationNamespace) : this() => this.Serialization = new SerializationTestHelper(serializationNamespace, JsonSerializerBuilder.BuildWithSnakeCase()); - protected E2EBase() => this.Helper = TestingContext.WithBearerCredentials(); + protected E2EBase() => this.Helper = OidcTestingContext.WithBearerCredentials(); } \ No newline at end of file diff --git a/Vonage.Test/NumberVerification/OidcTestingContext.cs b/Vonage.Test/NumberVerification/OidcTestingContext.cs new file mode 100644 index 00000000..c62a4f04 --- /dev/null +++ b/Vonage.Test/NumberVerification/OidcTestingContext.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using Microsoft.Extensions.Configuration; +using Vonage.Request; +using Vonage.Test.Common.TestHelpers; +using WireMock.Server; +using TimeProvider = Vonage.Common.TimeProvider; + +namespace Vonage.Test.NumberVerification; + +internal class OidcTestingContext : IDisposable +{ + private OidcTestingContext(Credentials credentials, string authorizationHeaderValue, + Dictionary settings) + { + this.ExpectedAuthorizationHeaderValue = authorizationHeaderValue; + this.VonageServer = WireMockServer.Start(); + this.OidcServer = WireMockServer.Start(); + settings.Add(VonageUrls.NexmoApiKey, this.VonageServer.Url); + settings.Add($"{VonageUrls.NexmoApiKey}.EMEA", this.VonageServer.Url); + settings.Add($"{VonageUrls.NexmoApiKey}.APAC", this.VonageServer.Url); + settings.Add($"{VonageUrls.NexmoApiKey}.AMER", this.VonageServer.Url); + settings.Add(VonageUrls.NexmoRestKey, this.VonageServer.Url); + settings.Add(VonageUrls.VideoApiKey, this.VonageServer.Url); + settings.Add(VonageUrls.OidcApiKey, this.OidcServer.Url); + var configuration = + Configuration.FromConfiguration(new ConfigurationBuilder().AddInMemoryCollection(settings).Build()); + this.VonageClient = new VonageClient(credentials, configuration, new TimeProvider()); + } + + public string ExpectedAuthorizationHeaderValue { get; protected init; } + public WireMockServer VonageServer { get; } + public WireMockServer OidcServer { get; } + public VonageClient VonageClient { get; } + + public void Dispose() + { + this.Dispose(true); + GC.SuppressFinalize(this); + } + + public static OidcTestingContext WithBearerCredentials() => + new OidcTestingContext(CreateBearerCredentials(), "Bearer *", new Dictionary()); + + private static Credentials CreateBearerCredentials() => Credentials.FromAppIdAndPrivateKey( + Guid.NewGuid().ToString(), + TokenHelper.GetKey()); + + protected virtual void Dispose(bool disposing) + { + if (!disposing) + { + return; + } + + this.VonageServer.Stop(); + this.VonageServer.Dispose(); + } +} \ No newline at end of file diff --git a/Vonage.Test/NumberVerification/Verify/E2ETest.cs b/Vonage.Test/NumberVerification/Verify/E2ETest.cs index 7626d1da..385dd2e9 100644 --- a/Vonage.Test/NumberVerification/Verify/E2ETest.cs +++ b/Vonage.Test/NumberVerification/Verify/E2ETest.cs @@ -8,7 +8,7 @@ namespace Vonage.Test.NumberVerification.Verify; [Trait("Category", "E2E")] -public class E2ETest : SimSwap.E2EBase +public class E2ETest : E2EBase { public E2ETest() : base(typeof(E2ETest).Namespace) { @@ -19,15 +19,15 @@ public async Task CheckAsync() { this.SetupAuthorization(); this.SetupToken(); - this.SetupCheck(nameof(SerializationTest.ShouldSerialize)); + this.SetupVerify(nameof(SerializationTest.ShouldSerialize)); await this.Helper.VonageClient.NumberVerificationClient .VerifyAsync(VerifyRequest.Parse("346661113334")) .Should() .BeSuccessAsync(true); } - private void SetupCheck(string expectedOutput) => - this.Helper.Server.Given(WireMock.RequestBuilders.Request.Create() + private void SetupVerify(string expectedOutput) => + this.Helper.VonageServer.Given(WireMock.RequestBuilders.Request.Create() .WithPath("/camara/number-verification/v031/verify") .WithHeader("Authorization", "Bearer ABCDEFG") .WithBody(this.Serialization.GetRequestJson(expectedOutput)) @@ -36,7 +36,7 @@ private void SetupCheck(string expectedOutput) => .WithBody(this.Serialization.GetResponseJson(nameof(SerializationTest.ShouldDeserializeVerify)))); private void SetupToken() => - this.Helper.Server.Given(WireMock.RequestBuilders.Request.Create() + this.Helper.VonageServer.Given(WireMock.RequestBuilders.Request.Create() .WithPath("/oauth2/token") .WithHeader("Authorization", this.Helper.ExpectedAuthorizationHeaderValue) .WithBody("auth_req_id=123456789&grant_type=urn:openid:params:grant-type:ciba") @@ -45,7 +45,7 @@ private void SetupToken() => .WithBody(this.Serialization.GetResponseJson(nameof(SerializationTest.ShouldDeserializeAccessToken)))); private void SetupAuthorization() => - this.Helper.Server.Given(WireMock.RequestBuilders.Request.Create() + this.Helper.OidcServer.Given(WireMock.RequestBuilders.Request.Create() .WithPath("/oauth2/auth") .WithHeader("Authorization", this.Helper.ExpectedAuthorizationHeaderValue) .WithBody(