-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathFollowerPermissionChangeTests.cs
More file actions
79 lines (63 loc) · 3.09 KB
/
FollowerPermissionChangeTests.cs
File metadata and controls
79 lines (63 loc) · 3.09 KB
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
using KustoSchemaTools.Changes;
using KustoSchemaTools.Model;
using Microsoft.Extensions.Logging;
using Moq;
namespace KustoSchemaTools.Tests.Changes
{
public class FollowerPermissionChangeTests
{
private readonly Mock<ILogger> _logger = new();
private static FollowerDatabase BuildFollower(params (string role, string id, string name)[] principals)
{
var follower = new FollowerDatabase
{
DatabaseName = "DDoSNeuralAnalysis",
Permissions = new FollowerPermissions { ModificationKind = FollowerModificationKind.Union }
};
foreach (var (role, id, name) in principals)
{
var obj = new AADObject { Id = id, Name = name };
if (string.Equals(role, "admin", StringComparison.OrdinalIgnoreCase))
{
follower.Permissions.Admins.Add(obj);
}
else
{
follower.Permissions.Viewers.Add(obj);
}
}
return follower;
}
[Fact]
public void GeneratesFollowerAdd_WithLeaderName()
{
var oldFollower = BuildFollower();
var newFollower = BuildFollower(("viewer", "aadapp=64decea3-723a-4fbf-b2ec-9faaf852cfdc;398a6654-997b-47e9-b12b-9515b896b4de", "spn-dev-spam-slam"));
newFollower.Permissions.LeaderName = "leader-cluster";
var changes = DatabaseChanges.GenerateFollowerChanges(oldFollower, newFollower, _logger.Object);
var permChange = Assert.Single(changes.OfType<FollowerPermissionChange>());
var script = Assert.Single(permChange.Scripts).Script!.Text;
Assert.Equal(".add follower database DDoSNeuralAnalysis viewers (\"aadapp=64decea3-723a-4fbf-b2ec-9faaf852cfdc;398a6654-997b-47e9-b12b-9515b896b4de\") 'leader-cluster'", script);
}
[Fact]
public void GeneratesFollowerAdd_WithoutLeaderName()
{
var oldFollower = BuildFollower();
var newFollower = BuildFollower(("admin", "aaduser=foo;tenant", "Foo"));
var changes = DatabaseChanges.GenerateFollowerChanges(oldFollower, newFollower, _logger.Object);
var permChange = Assert.Single(changes.OfType<FollowerPermissionChange>());
var script = Assert.Single(permChange.Scripts).Script!.Text;
Assert.Equal(".add follower database DDoSNeuralAnalysis admins (\"aaduser=foo;tenant\")", script);
}
[Fact]
public void EmitsDrop_WhenRemovingPrincipals()
{
var oldFollower = BuildFollower(("admin", "aadapp=1;tenant", "v1"));
var newFollower = BuildFollower();
var changes = DatabaseChanges.GenerateFollowerChanges(oldFollower, newFollower, _logger.Object);
var permChange = Assert.Single(changes.OfType<FollowerPermissionChange>());
var script = Assert.Single(permChange.Scripts).Script!.Text;
Assert.Equal(".drop follower database DDoSNeuralAnalysis admins (\"aadapp=1;tenant\")", script);
}
}
}