-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathBasicUtilsTests.cs
121 lines (111 loc) · 5.31 KB
/
BasicUtilsTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Copyright (c) Mihir Dilip. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
using System.Security.Claims;
using Xunit;
namespace AspNetCore.Authentication.Basic.Tests
{
public class BasicUtilsTests
{
[Fact]
public static void BuildClaimsPrincipal_null_ownerName_no_exception()
{
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(null, "Test", "Test", null);
Assert.NotNull(claimsPrincipal);
}
[Fact]
public static void BuildClaimsPrincipal_null_schemeName_throws_ArgumentNullException()
{
var exception = Assert.Throws<ArgumentNullException>(() => BasicUtils.BuildClaimsPrincipal(null, null!, null, null));
Assert.Contains("schemeName", exception.Message);
}
[Fact]
public static void BuildClaimsPrincipal_null_claimsIssuer_no_exception()
{
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(null, "Test", null, null);
Assert.NotNull(claimsPrincipal);
}
[Fact]
public static void BuildClaimsPrincipal_null_claims_no_exception()
{
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(null, "Test", null, null);
Assert.NotNull(claimsPrincipal);
}
[Fact]
public static void BuildClaimsPrincipal_adds_single_identity_without_claims()
{
var schemeName = "Test";
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(null, schemeName, null, null);
Assert.NotNull(claimsPrincipal);
Assert.Single(claimsPrincipal.Identities);
Assert.NotNull(claimsPrincipal.Identity);
Assert.Equal(schemeName, claimsPrincipal.Identity.AuthenticationType);
Assert.Empty(claimsPrincipal.Claims);
}
[Fact]
public static void BuildClaimsPrincipal_adds_single_identity_with_claims()
{
var schemeName = "Test";
var claims = new List<Claim>
{
new(ClaimTypes.Email, "abc@xyz.com") ,
new(ClaimTypes.Role, "admin")
};
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(null, schemeName, null, claims);
Assert.NotNull(claimsPrincipal);
Assert.Single(claimsPrincipal.Identities);
Assert.NotNull(claimsPrincipal.Identity);
Assert.Equal(schemeName, claimsPrincipal.Identity.AuthenticationType);
Assert.NotEmpty(claimsPrincipal.Claims);
Assert.Equal(claims.Count, claimsPrincipal.Claims.Count());
}
[Fact]
public static void BuildClaimsPrincipal_ownerName_adds_Name_and_NameIdentifier_claims()
{
var ownerName = "Test";
var schemeName = "Test";
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(ownerName, schemeName, null, null);
Assert.NotNull(claimsPrincipal);
Assert.NotEmpty(claimsPrincipal.Claims);
Assert.Equal(2, claimsPrincipal.Claims.Count());
Assert.Contains(claimsPrincipal.Claims, c => c.Type == ClaimTypes.NameIdentifier && c.Value == ownerName);
Assert.Contains(claimsPrincipal.Claims, c => c.Type == ClaimTypes.Name && c.Value == ownerName);
}
[Fact]
public static void BuildClaimsPrincipal_ownerName_adds_Name_and_NameIdentifier_claims2()
{
var ownerName = "Test";
var schemeName = "Test";
var claims = new List<Claim>
{
new(ClaimTypes.Email, "abc@xyz.com") ,
new(ClaimTypes.Role, "admin")
};
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(ownerName, schemeName, null, claims);
Assert.NotNull(claimsPrincipal);
Assert.NotEmpty(claimsPrincipal.Claims);
Assert.NotEqual(claims.Count, claimsPrincipal.Claims.Count());
Assert.Equal(claims.Count + 2, claimsPrincipal.Claims.Count());
Assert.Contains(claimsPrincipal.Claims, c => c.Type == ClaimTypes.NameIdentifier && c.Value == ownerName);
Assert.Contains(claimsPrincipal.Claims, c => c.Type == ClaimTypes.Name && c.Value == ownerName);
}
[Fact]
public static void BuildClaimsPrincipal_ownerName_adds_Name_and_NameIdentifier_claims_if_not_already_exists()
{
var ownerName = "Test";
var schemeName = "Test";
var claims = new List<Claim>
{
new(ClaimTypes.Name, "Admin"),
new(ClaimTypes.Role, "admin")
};
var claimsPrincipal = BasicUtils.BuildClaimsPrincipal(ownerName, schemeName, null, claims);
Assert.NotNull(claimsPrincipal);
Assert.NotEmpty(claimsPrincipal.Claims);
Assert.NotEqual(claims.Count, claimsPrincipal.Claims.Count());
Assert.Equal(claims.Count + 1, claimsPrincipal.Claims.Count());
Assert.Contains(claimsPrincipal.Claims, c => c.Type == ClaimTypes.NameIdentifier && c.Value == ownerName);
Assert.Contains(claimsPrincipal.Claims, c => c.Type == ClaimTypes.Name && c.Value != ownerName);
Assert.Contains(claimsPrincipal.Claims, c => c.Type == ClaimTypes.Name && c.Value == "Admin");
}
}
}