Skip to content

Commit d258ab5

Browse files
authored
Convert 6 files to TypeScript (#58003)
1 parent 0087c57 commit d258ab5

File tree

8 files changed

+302
-149
lines changed

8 files changed

+302
-149
lines changed

src/github-apps/tests/metadata-permissions.js renamed to src/github-apps/tests/metadata-permissions.ts

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,38 @@
11
import { describe, expect, test } from 'vitest'
22
import { shouldFilterMetadataPermission, calculateAdditionalPermissions } from '../scripts/sync'
33

4+
type PermissionSet = Record<string, string>
5+
6+
interface Operation {
7+
operationId: string
8+
permissionSets: PermissionSet[]
9+
}
10+
11+
interface ProgAccessData {
12+
userToServerRest: boolean
13+
serverToServer: boolean
14+
permissions: PermissionSet[]
15+
}
16+
17+
interface ActorResource {
18+
title: string
19+
visibility: string
20+
}
21+
22+
interface FilteredOperation {
23+
operationId: string
24+
permission: string
25+
additionalPermissions: boolean
26+
}
27+
28+
interface MetadataPermission {
29+
operationId: string
30+
additionalPermissions: boolean
31+
}
32+
433
describe('metadata permissions filtering', () => {
534
// Mock data structure representing operations with metadata permissions
6-
const mockOperationsWithMetadata = [
35+
const mockOperationsWithMetadata: Operation[] = [
736
{
837
operationId: 'repos/enable-automated-security-fixes',
938
permissionSets: [{ metadata: 'read', administration: 'write' }],
@@ -23,7 +52,7 @@ describe('metadata permissions filtering', () => {
2352
]
2453

2554
// Mock programmatic access data
26-
const mockProgAccessData = {
55+
const mockProgAccessData: Record<string, ProgAccessData> = {
2756
'repos/enable-automated-security-fixes': {
2857
userToServerRest: true,
2958
serverToServer: true,
@@ -47,7 +76,7 @@ describe('metadata permissions filtering', () => {
4776
}
4877

4978
// Mock actor resources
50-
const mockProgActorResources = {
79+
const mockProgActorResources: Record<string, ActorResource> = {
5180
metadata: {
5281
title: 'Metadata',
5382
visibility: 'public',
@@ -95,8 +124,8 @@ describe('metadata permissions filtering', () => {
95124
})
96125

97126
test('filters metadata operations with additional permissions', () => {
98-
const filteredOperations = []
99-
const metadataPermissions = []
127+
const filteredOperations: FilteredOperation[] = []
128+
const metadataPermissions: MetadataPermission[] = []
100129

101130
for (const operation of mockOperationsWithMetadata) {
102131
const progData = mockProgAccessData[operation.operationId]
@@ -137,15 +166,15 @@ describe('metadata permissions filtering', () => {
137166
// Should have other permissions from operations with additional permissions
138167
const adminPermission = filteredOperations.find((op) => op.permission === 'administration')
139168
expect(adminPermission).toBeDefined()
140-
expect(adminPermission.operationId).toBe('repos/enable-automated-security-fixes')
141-
expect(adminPermission.additionalPermissions).toBe(true)
169+
expect(adminPermission!.operationId).toBe('repos/enable-automated-security-fixes')
170+
expect(adminPermission!.additionalPermissions).toBe(true)
142171

143172
const orgAdminPermission = filteredOperations.find(
144173
(op) => op.permission === 'organization_administration',
145174
)
146175
expect(orgAdminPermission).toBeDefined()
147-
expect(orgAdminPermission.operationId).toBe('orgs/update-webhook')
148-
expect(orgAdminPermission.additionalPermissions).toBe(true)
176+
expect(orgAdminPermission!.operationId).toBe('orgs/update-webhook')
177+
expect(orgAdminPermission!.additionalPermissions).toBe(true)
149178
})
150179

151180
test('preserves non-metadata permissions regardless of additional permissions', () => {
@@ -168,11 +197,11 @@ describe('metadata permissions filtering', () => {
168197
expect(shouldFilterMetadataPermission('metadata', [])).toBe(false)
169198

170199
// Permission set with empty object (edge case)
171-
const edgeCase1 = [{ metadata: 'read' }, {}]
200+
const edgeCase1: Record<string, string>[] = [{ metadata: 'read' }, {}]
172201
expect(shouldFilterMetadataPermission('metadata', edgeCase1)).toBe(true)
173202

174203
// Multiple permission sets with metadata in different sets
175-
const edgeCase2 = [{ metadata: 'read' }, { admin: 'write' }]
204+
const edgeCase2: Record<string, string>[] = [{ metadata: 'read' }, { admin: 'write' }]
176205
expect(shouldFilterMetadataPermission('metadata', edgeCase2)).toBe(true)
177206
})
178207

@@ -207,17 +236,23 @@ describe('metadata permissions filtering', () => {
207236

208237
test('handles complex permission structures from real data', () => {
209238
// Multiple permission sets (should filter metadata)
210-
const multiplePermissionSets = [{ metadata: 'read' }, { administration: 'write' }]
239+
const multiplePermissionSets: Record<string, string>[] = [
240+
{ metadata: 'read' },
241+
{ administration: 'write' },
242+
]
211243
expect(shouldFilterMetadataPermission('metadata', multiplePermissionSets)).toBe(true)
212244

213245
// Single permission set with multiple permissions (should filter metadata)
214-
const multiplePermissionsInSet = [
246+
const multiplePermissionsInSet: Record<string, string>[] = [
215247
{ metadata: 'read', contents: 'write', pull_requests: 'write' },
216248
]
217249
expect(shouldFilterMetadataPermission('metadata', multiplePermissionsInSet)).toBe(true)
218250

219251
// Multiple permission sets where metadata is not in the first set
220-
const metadataInSecondSet = [{ administration: 'write' }, { metadata: 'read' }]
252+
const metadataInSecondSet: Record<string, string>[] = [
253+
{ administration: 'write' },
254+
{ metadata: 'read' },
255+
]
221256
expect(shouldFilterMetadataPermission('metadata', metadataInSecondSet)).toBe(true)
222257
})
223258

@@ -250,7 +285,7 @@ describe('metadata permissions filtering', () => {
250285
})
251286

252287
test('verifies consistency with additional-permissions flag calculation', () => {
253-
const testCases = [
288+
const testCases: Array<{ permissionSets: Record<string, string>[]; expected: boolean }> = [
254289
// Single permission, single set - no additional permissions
255290
{ permissionSets: [{ metadata: 'read' }], expected: false },
256291

@@ -283,12 +318,7 @@ describe('metadata permissions filtering', () => {
283318
// - DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}
284319
// Because they have metadata + organization_administration permissions
285320

286-
const mockMutatingOperation = {
287-
operationId: 'actions/set-selected-repositories-enabled-github-actions-organization',
288-
permissionSets: [{ metadata: 'read', organization_administration: 'write' }],
289-
}
290-
291-
const progData = {
321+
const progData: ProgAccessData = {
292322
userToServerRest: true,
293323
serverToServer: true,
294324
permissions: [{ metadata: 'read', organization_administration: 'write' }],

0 commit comments

Comments
 (0)