-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathorgConfig.test.ts
More file actions
138 lines (122 loc) · 4.62 KB
/
orgConfig.test.ts
File metadata and controls
138 lines (122 loc) · 4.62 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
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import {describe, expect, test} from '@jest/globals';
import { ManagedGitHubTeam, OrgConfig, OrgConfigurationOptions } from '../src/services/orgConfig.ts';
describe('OrgConfigClass', () => {
test('Sets proper defaults', () => {
// Arrange
const rawConfig = {};
const emptyStringArray:string[] = [];
const emptyMap:Map<string,string> = new Map();
// Act
const config = new OrgConfig(rawConfig);
// Assert
expect(config.AdditionalSecurityManagerGroups).toStrictEqual(emptyStringArray);
expect(config.AssumeMembershipViaTeams).toBeFalsy();
expect(config.CopilotTeams).toStrictEqual(emptyStringArray);
expect(config.DisplayNameToSourceMap).toStrictEqual(emptyMap);
expect(config.OrgMembersGroupName).toBeUndefined();
expect(config.OrgOwnersGroupName).toBeUndefined();
expect(config.TeamsToManage).toStrictEqual(emptyStringArray);
});
test('Sets GitHubTeamNames to display name groups properly', () => {
// Arrange
const teamNames = [
"team1",
"team2"
]
const rawConfig:OrgConfigurationOptions = {
GitHubTeamNames:teamNames
};
// Act
const config = new OrgConfig(rawConfig);
// Assert
const expectedTeamsToManage = teamNames;
const displayNameMap = new Map<string,string>();
displayNameMap.set(teamNames[0], teamNames[0]);
displayNameMap.set(teamNames[1], teamNames[1]);
expect(config.DisplayNameToSourceMap).toStrictEqual(displayNameMap);
expect(config.TeamsToManage).toStrictEqual(expectedTeamsToManage);
expect(config.TeamsToManage).toHaveLength(2);
});
test('Creates proper name to display name map', () => {
// Arrange
const team1:ManagedGitHubTeam = {
Name: "SomeCopilotTeam",
DisplayName: "Some Copilot Team"
};
const team2:ManagedGitHubTeam = {
Name: "SomeName"
}
const orgOwnersTeam:ManagedGitHubTeam = {
Name: "SomeOrgOwner",
DisplayName: "Some Org Owner"
}
const securityManagerTeam:ManagedGitHubTeam = {
Name: "SomeSecurityManagerTeam",
DisplayName: "Some Security Manager Team"
}
const orgMembersTeam:ManagedGitHubTeam = {
Name: "SomeMembersGroup",
DisplayName: "Some Members Group"
}
const rawConfig:OrgConfigurationOptions = {
Teams:[
team1,
team2
],
OrganizationOwnersGroup: orgOwnersTeam,
OrganizationMembersGroup: orgMembersTeam,
AdditionalSecurityManagerGroups: [securityManagerTeam]
};
// Act
const config = new OrgConfig(rawConfig);
// Assert
const expectedTeamsToManage = [
team1.DisplayName,
team2.Name,
securityManagerTeam.DisplayName,
orgOwnersTeam.DisplayName,
orgMembersTeam.DisplayName
];
const displayNameMap = new Map<string,string>();
displayNameMap.set(team1.DisplayName!, team1.Name);
displayNameMap.set(team2.Name, team2.Name);
displayNameMap.set(orgOwnersTeam.DisplayName!, orgOwnersTeam.Name);
displayNameMap.set(securityManagerTeam.DisplayName!, securityManagerTeam.Name);
displayNameMap.set(orgMembersTeam.DisplayName!, orgMembersTeam.Name);
expect(config.DisplayNameToSourceMap).toStrictEqual(displayNameMap);
expect(config.TeamsToManage).toStrictEqual(expectedTeamsToManage);
expect(config.TeamsToManage).toHaveLength(5);
});
test('Handles OrgOwnersGroup being a string', () => {
// Arrange
const orgOwnersGroup = "SomeGroup";
const rawConfig:OrgConfigurationOptions = {
OrganizationOwnersGroup: orgOwnersGroup
};
// Act
const config = new OrgConfig(rawConfig);
// Assert
const expectedTeamsToManage = [orgOwnersGroup];
const displayNameMap = new Map<string,string>();
displayNameMap.set(orgOwnersGroup, orgOwnersGroup);
expect(config.OrgOwnersGroupName).toStrictEqual(orgOwnersGroup);
expect(config.TeamsToManage).toStrictEqual(expectedTeamsToManage);
expect(config.TeamsToManage).toHaveLength(1);
});
test('Handles OrgMembersGroup being a string', () => {
// Arrange
const orgMembersGroup = "SomeGroup";
const rawConfig:OrgConfigurationOptions = {
OrganizationMembersGroup: orgMembersGroup
};
// Act
const config = new OrgConfig(rawConfig);
// Assert
const expectedTeamsToManage = [orgMembersGroup];
const displayNameMap = new Map<string,string>();
displayNameMap.set(orgMembersGroup, orgMembersGroup);
expect(config.OrgMembersGroupName).toStrictEqual(orgMembersGroup);
expect(config.TeamsToManage).toStrictEqual(expectedTeamsToManage);
expect(config.TeamsToManage).toHaveLength(1);
});
});