Skip to content

Commit

Permalink
test: update tests for available evidence codes
Browse files Browse the repository at this point in the history
  • Loading branch information
SondreJDigdir committed Dec 5, 2024
1 parent 20ec04e commit d9a1896
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 3 deletions.
63 changes: 62 additions & 1 deletion Dan.Core.UnitTest/AvailableEvidenceCodesServiceTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Dan.Core.Services;
using Dan.Core.Services.Interfaces;
using Dan.Core.UnitTest.Helpers;
using FluentAssertions;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
Expand Down Expand Up @@ -55,6 +56,23 @@ public class AvailableEvidenceCodesServiceTest
Name = "ec2_req"
}
}
},
new EvidenceCode
{
EvidenceCodeName = "ec3",
BelongsToServiceContexts = new List<string> { "sc1", "sc2" },
DatasetAliases = new Dictionary<string, string>
{
{"sc1", "a1"},
{"sc2", "a2"}
},
AuthorizationRequirements = new List<Requirement>
{
new TestAuthorizationRequirement
{
Name = "ec3_req"
}
}
}
};

Expand Down Expand Up @@ -126,20 +144,63 @@ public async Task CheckServiceContextRequirementsIncluded()
var a = await acs.GetAvailableEvidenceCodes();

// Assert
Assert.AreEqual(4, a.Count); // we have two evidence sources in config
Assert.AreEqual(4, a.Count);

// ec1
Assert.AreEqual(3, a[0].AuthorizationRequirements.Count);
Assert.IsTrue(a[0].AuthorizationRequirements.All(x => x.GetType() == typeof(TestAuthorizationRequirement)));
Assert.IsTrue(a[0].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "ec1_req"));
Assert.IsTrue(a[0].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc1_req1"));
Assert.IsTrue(a[0].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc1_req2"));

// ec2
Assert.AreEqual(5, a[1].AuthorizationRequirements.Count);
Assert.IsTrue(a[1].AuthorizationRequirements.All(x => x.GetType() == typeof(TestAuthorizationRequirement)));
Assert.IsTrue(a[1].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "ec2_req"));
Assert.IsTrue(a[1].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc1_req1"));
Assert.IsTrue(a[1].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc1_req2"));
Assert.IsTrue(a[1].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc2_req1"));
Assert.IsTrue(a[1].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc2_req2"));

// Aliases get replaced at end of list
// a1
Assert.AreEqual(3, a[2].AuthorizationRequirements.Count);
Assert.IsTrue(a[2].AuthorizationRequirements.All(x => x.GetType() == typeof(TestAuthorizationRequirement)));
Assert.IsTrue(a[2].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "ec3_req"));
Assert.IsTrue(a[2].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc1_req1"));
Assert.IsTrue(a[2].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc1_req2"));

// a2
Assert.AreEqual(3, a[3].AuthorizationRequirements.Count);
Assert.IsTrue(a[3].AuthorizationRequirements.All(x => x.GetType() == typeof(TestAuthorizationRequirement)));
Assert.IsTrue(a[3].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "ec3_req"));
Assert.IsTrue(a[3].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc2_req1"));
Assert.IsTrue(a[3].AuthorizationRequirements.Any(x => ((TestAuthorizationRequirement)x).Name == "sc2_req2"));
}

[TestMethod]
public async Task GetAliases()
{
var acs = new AvailableEvidenceCodesService(
_loggerFactory,
_mockHttpClientFactory.Object,
_policyRegistry,
_mockDistributedCache.Object,
_mockServiceContextService.Object,
_mockFunctionContextAccessor.Object);

var expected = new Dictionary<string, string>
{
{"a1", "ec3"},
{"a2", "ec3"}
};

// Act
await acs.GetAvailableEvidenceCodes();
var actual = acs.GetAliases();

// Assert
actual.Should().BeEquivalentTo(expected);
}
}

Expand Down
1 change: 1 addition & 0 deletions Dan.Core.UnitTest/Dan.Core.UnitTest.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="FluentAssertions" Version="7.0.0"/>
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="Moq" Version="4.20.70" />
Expand Down
2 changes: 1 addition & 1 deletion Dan.Core.UnitTest/appsettings.unittest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"AccreditationMaximumValidDays": 10,
"AccreditationMinimumValidDays": 1,
"DoffinLinkTemplate": "{0}",
"EvidenceSources": "ut1,ut2",
"EvidenceSources": "ut1",
"EvidenceSourceURLPattern": "http://%s.unittest.net/api/evidencecodes,",
"FunctionKeyValue": "x",
"ASPNETCORE_ENVIRONMENT": "LocalDevelopment"
Expand Down
5 changes: 4 additions & 1 deletion Dan.Core/Services/AvailableEvidenceCodesService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,10 @@ private static List<EvidenceCode> SplitAliases(IEnumerable<EvidenceCode> evidenc
aliasedEvidenceCode.DatasetAliases = null;
aliasedEvidenceCode.AuthorizationRequirements = aliasedEvidenceCode
.AuthorizationRequirements
.Where(a => a.AppliesToServiceContext.Contains(alias.Key)).ToList();
.Where(a =>
a.AppliesToServiceContext.Count == 0 ||
a.AppliesToServiceContext.Contains(alias.Key))
.ToList();

splitEvidenceCodes.Add(aliasedEvidenceCode);
}
Expand Down

0 comments on commit d9a1896

Please sign in to comment.