Skip to content

Commit ee3b496

Browse files
committed
chore: add mock for image approval policy
1 parent 9695d47 commit ee3b496

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

src/Common/Common.service.ts

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import {
3232
CDMaterialFilterQuery,
3333
ImagePromotionMaterialInfo,
3434
EnvironmentListHelmResponse,
35+
UserGroupApproverType,
36+
UserGroupDataType,
3537
} from './Types'
3638
import { ApiResourceType } from '../Pages'
3739

@@ -169,19 +171,67 @@ const cdMaterialListModal = (artifacts: any[], offset: number, artifactId?: numb
169171
return materials
170172
}
171173

174+
const SPECIFIC_EMAILS = [
175+
'specific-email-1@devtron.ai',
176+
'specific-email-2@devtron.ai',
177+
'specific-email-3@devtron.ai',
178+
'specific-email-4@devtron.ai',
179+
]
180+
181+
const VALID_GROUPS = [
182+
'managers',
183+
'security',
184+
'devops',
185+
'developers',
186+
]
187+
172188
const processCDMaterialsApprovalInfo = (enableApproval: boolean, cdMaterialsResult): CDMaterialsApprovalInfo => {
173189
if (!enableApproval || !cdMaterialsResult) {
174190
return {
175191
approvalUsers: [],
176192
userApprovalConfig: null,
177193
canApproverDeploy: cdMaterialsResult?.canApproverDeploy ?? false,
194+
imageApprovalPolicyDetails: null,
178195
}
179196
}
180197

181198
return {
182199
approvalUsers: cdMaterialsResult.approvalUsers,
183200
userApprovalConfig: cdMaterialsResult.userApprovalConfig,
184201
canApproverDeploy: cdMaterialsResult.canApproverDeploy ?? false,
202+
imageApprovalPolicyDetails: {
203+
isPolicyConfigured: true,
204+
specificUsersData: {
205+
dataStore: SPECIFIC_EMAILS.reduce((acc, email, index) => {
206+
acc[email] = {
207+
email,
208+
hasAccess: index % 2 === 0,
209+
hasApproved: index % 2 !== 0,
210+
}
211+
return acc
212+
}, {} as Record<string, UserGroupApproverType>),
213+
requiredCount: SPECIFIC_EMAILS.length,
214+
emails: SPECIFIC_EMAILS,
215+
},
216+
userGroupData: VALID_GROUPS.reduce((acc, userGroup) => {
217+
const emails = [`${userGroup}-1@devtron.ai`, `${userGroup}-2@devtron.ai`, `${userGroup}-3@devtron.ai`]
218+
219+
acc[userGroup] = {
220+
dataStore: emails.reduce((acc, email, index) => {
221+
acc[email] = {
222+
email,
223+
hasAccess: index % 2 === 0,
224+
hasApproved: index % 2 !== 0,
225+
}
226+
return acc
227+
}, {} as Record<string, UserGroupApproverType>),
228+
requiredCount: emails.length,
229+
emails,
230+
}
231+
return acc
232+
}, {} as Record<string, UserGroupDataType>),
233+
validGroups: VALID_GROUPS,
234+
}
185235
}
186236
}
187237

src/Common/Types.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,28 @@ export interface UserApprovalConfigType {
323323
requiredCount: number
324324
}
325325

326+
export interface UserGroupApproverType {
327+
email: string
328+
// Will derive from approvedUsersData list
329+
hasApproved: boolean
330+
hasAccess: boolean
331+
}
332+
333+
export interface UserGroupDataType {
334+
// Mapping email to data
335+
dataStore: Record<string, UserGroupApproverType>
336+
requiredCount: number
337+
emails: string[]
338+
}
339+
340+
interface ImageApprovalPolicyType {
341+
isPolicyConfigured: boolean
342+
specificUsersData: UserGroupDataType
343+
userGroupData: Record<string, UserGroupDataType>
344+
// Assuming name of groups are unique
345+
validGroups: string[]
346+
}
347+
326348
interface ApprovalUserDataType {
327349
dataId: number
328350
userActionTime: string
@@ -617,6 +639,7 @@ export interface CDMaterialsApprovalInfo {
617639
approvalUsers: string[]
618640
userApprovalConfig: UserApprovalConfigType
619641
canApproverDeploy: boolean
642+
imageApprovalPolicyDetails: ImageApprovalPolicyType
620643
}
621644

622645
export interface CDMaterialsMetaInfo {

0 commit comments

Comments
 (0)