From b7183ffd5513d0c52695659a94bef491fffed52e Mon Sep 17 00:00:00 2001 From: Koen Metsu Date: Wed, 20 Dec 2023 10:40:58 +0100 Subject: [PATCH] test: or-2006 add test for concurrent kbo request --- .../With_Duplicate_Requests.cs | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 test/AssociationRegistry.Test.Admin.Api/VerenigingMetRechtspersoonlijkheid/When_RegistreerVerenigingMetRechtspersoonlijkheid/With_Duplicate_Requests.cs diff --git a/test/AssociationRegistry.Test.Admin.Api/VerenigingMetRechtspersoonlijkheid/When_RegistreerVerenigingMetRechtspersoonlijkheid/With_Duplicate_Requests.cs b/test/AssociationRegistry.Test.Admin.Api/VerenigingMetRechtspersoonlijkheid/When_RegistreerVerenigingMetRechtspersoonlijkheid/With_Duplicate_Requests.cs new file mode 100644 index 000000000..6cb368c3a --- /dev/null +++ b/test/AssociationRegistry.Test.Admin.Api/VerenigingMetRechtspersoonlijkheid/When_RegistreerVerenigingMetRechtspersoonlijkheid/With_Duplicate_Requests.cs @@ -0,0 +1,78 @@ +namespace AssociationRegistry.Test.Admin.Api.VerenigingMetRechtspersoonlijkheid.When_RegistreerVerenigingMetRechtspersoonlijkheid; + +using AssociationRegistry.Admin.Api.Verenigingen.Registreer.MetRechtspersoonlijkheid.RequestModels; +using AutoFixture; +using Events; +using Fixtures; +using FluentAssertions; +using Framework; +using System.Net; +using Vereniging; +using Xunit; +using Xunit.Categories; + +public sealed class When_RegistreerVerenigingMetRechtspersoonlijkheid_With_Duplicate_Requests +{ + private static When_RegistreerVerenigingMetRechtspersoonlijkheid_With_Duplicate_Requests? called; + public readonly RegistreerVerenigingUitKboRequest UitKboRequest; + public readonly List, Task>> Responses; + + private When_RegistreerVerenigingMetRechtspersoonlijkheid_With_Duplicate_Requests(EventsInDbScenariosFixture fixture) + { + var autofixture = new Fixture().CustomizeAdminApi(); + + UitKboRequest = new RegistreerVerenigingUitKboRequest + { + KboNummer = fixture.V020VerenigingMetRechtspersoonlijkheidWerdGeregistreerdForDuplicateDetection + .VerenigingMetRechtspersoonlijkheidWerdGeregistreerd.KboNummer, + }; + + Responses = new List, Task>>(); + + foreach (var kboNummer in autofixture.CreateMany(5)) + { + var request = new RegistreerVerenigingUitKboRequest { KboNummer = kboNummer }; + + Responses.Add(new Tuple, Task>( + fixture.DefaultClient.RegistreerKboVereniging(GetJsonBody(request)), + fixture.DefaultClient.RegistreerKboVereniging(GetJsonBody(request)))); + } + } + + public static When_RegistreerVerenigingMetRechtspersoonlijkheid_With_Duplicate_Requests Called(EventsInDbScenariosFixture fixture) + => called ??= new When_RegistreerVerenigingMetRechtspersoonlijkheid_With_Duplicate_Requests(fixture); + + private string GetJsonBody(RegistreerVerenigingUitKboRequest uitKboRequest) + => GetType() + .GetAssociatedResourceJson("files.request.with_kboNummer") + .Replace(oldValue: "{{kboNummer}}", uitKboRequest.KboNummer); +} + +[Collection(nameof(AdminApiCollection))] +[Category("AdminApi")] +[IntegrationTest] +public class With_Duplicate_Requests +{ + private readonly EventsInDbScenariosFixture _fixture; + + public With_Duplicate_Requests(EventsInDbScenariosFixture fixture) + { + _fixture = fixture; + } + + private RegistreerVerenigingUitKboRequest Request + => When_RegistreerVerenigingMetRechtspersoonlijkheid_With_Duplicate_Requests.Called(_fixture).UitKboRequest; + + + [Fact] + public async Task Then_it_returns_an_ok_response_with_correct_headers() + { + var responses = When_RegistreerVerenigingMetRechtspersoonlijkheid_With_Duplicate_Requests.Called(_fixture).Responses; + + foreach (var responseTuple in responses) + { + var httpResponseMessages = await Task.WhenAll(responseTuple.Item1, responseTuple.Item2); + httpResponseMessages.Count(x => x.StatusCode == HttpStatusCode.Accepted).Should().Be(1); + } + } +}