From bf768af74df3f75204668126d191b33fe5654b71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20J=C3=B8rgen=20Skogstad?= Date: Thu, 30 May 2024 11:54:14 +0200 Subject: [PATCH] Add unit test --- .../Extensions/ClaimsPrincipalExtensions.cs | 4 +-- .../Authorization/DecisionRequestHelper.cs | 2 +- .../DecisionRequestHelperTests.cs | 27 +++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/Digdir.Domain.Dialogporten.Application/Common/Extensions/ClaimsPrincipalExtensions.cs b/src/Digdir.Domain.Dialogporten.Application/Common/Extensions/ClaimsPrincipalExtensions.cs index eb2debe71..e6f8bac26 100644 --- a/src/Digdir.Domain.Dialogporten.Application/Common/Extensions/ClaimsPrincipalExtensions.cs +++ b/src/Digdir.Domain.Dialogporten.Application/Common/Extensions/ClaimsPrincipalExtensions.cs @@ -80,7 +80,7 @@ private class SystemUserAuthorizationDetails public string? Type { get; set; } [JsonPropertyName("systemuser_id")] - public string? SystemUserId { get; set; } + public string[]? SystemUserIds { get; set; } } public static bool TryGetSystemUserId(this ClaimsPrincipal claimsPrincipal, [NotNullWhen(true)] out string? systemUserId) @@ -97,7 +97,7 @@ public static bool TryGetSystemUserId(this ClaimsPrincipal claimsPrincipal, [Not var systemUserTypeDetails = systemUserAuthDetails?.FirstOrDefault(x => x.Type == AttributeIdSystemUser); if (systemUserTypeDetails != null) { - systemUserId = systemUserTypeDetails.SystemUserId; + systemUserId = systemUserTypeDetails.SystemUserIds?.FirstOrDefault(); } return systemUserId is not null; diff --git a/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/DecisionRequestHelper.cs b/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/DecisionRequestHelper.cs index f5c7d96c1..9e7935526 100644 --- a/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/DecisionRequestHelper.cs +++ b/src/Digdir.Domain.Dialogporten.Infrastructure/Altinn/Authorization/DecisionRequestHelper.cs @@ -301,7 +301,7 @@ public static DialogSearchAuthorizationResult CreateDialogSearchResponse( continue; } - // Get the name of the resource. This may be either an app or an generic service resource. + // Get the name of the resource. This may be either an app or a generic service resource. var resourceId = $"r{i + 1}"; var resourceList = xamlJsonRequestRoot.Request.Resource.First(r => r.Id == resourceId).Attribute; var resource = resourceList.First(a => a.AttributeId is AttributeIdResource or AttributeIdApp); diff --git a/tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs b/tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs index e36224654..c6da71ce3 100644 --- a/tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs +++ b/tests/Digdir.Domain.Dialogporten.Infrastructure.Unit.Tests/DecisionRequestHelperTests.cs @@ -12,6 +12,8 @@ public class DecisionRequestHelperTests { private const string ConsumerClaimValue = /*lang=json,strict*/ "{\"authority\":\"iso6523-actorid-upis\",\"ID\":\"0192:991825827\"}"; + private const string AuthorizationDetailsClaimValue = /*lang=json,strict*/"[{\"type\":\"urn:altinn:systemuser\",\"systemuser_id\":[\"unique_systemuser_id\"]}]"; + [Fact] public void CreateDialogDetailsRequestShouldReturnCorrectRequest() { @@ -108,6 +110,31 @@ public void CreateDialogDetailsRequestShouldReturnCorrectRequestForApp() // Assert.Contains(resource1.Attribute, a => a.AttributeId == "urn:altinn:instance-id" && a.Value == dialogId.ToString()); } + [Fact] + public void CreateDialogDetailsRequestShouldReturnCorrectRequestForSystemUser() + { + // Arrange + var request = CreateDialogDetailsAuthorizationRequest( + GetAsClaims( + ("authorization_details", AuthorizationDetailsClaimValue) + ), + $"{NorwegianOrganizationIdentifier.PrefixWithSeparator}713330310" + ); + + // Act + var result = DecisionRequestHelper.CreateDialogDetailsRequest(request); + + // Assert + Assert.NotNull(result); + Assert.NotNull(result.Request); + Assert.NotNull(result.Request.Resource); + + var accessSubject = result.Request.AccessSubject.First(); + Assert.Equal("s1", accessSubject.Id); + Assert.Contains(accessSubject.Attribute, a => a.AttributeId == "urn:altinn:foo" && a.Value == "bar"); + Assert.Contains(accessSubject.Attribute, a => a.AttributeId == "urn:altinn:systemuser" && a.Value == "unique_systemuser_id"); + } + [Fact] public void CreateDialogDetailsRequestShouldReturnCorrectRequestForConsumerOrgAndPersonParty() {