Skip to content

Commit bb1deb9

Browse files
ElderMattsvcAPLBot
andauthored
fix: team name minimum added (#797)
* fix: added minimum team name * fix: team name to three * fix: added readable length errors for build netpol secret and service * fix: service name length message * fix: flatten if statement --------- Co-authored-by: svcAPLBot <[email protected]>
1 parent 1f8a7d0 commit bb1deb9

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/otomi-stack.test.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,23 @@ describe('Data validation', () => {
211211
createItemSpy.mockRestore()
212212
})
213213

214+
test('should throw ValidationError when team name is under 3 characters', async () => {
215+
const teamData: AplTeamSettingsRequest = {
216+
kind: 'AplTeamSettingSet',
217+
metadata: {
218+
name: 'ab',
219+
labels: {
220+
'apl.io/teamId': 'ab',
221+
},
222+
},
223+
spec: {},
224+
}
225+
226+
await expect(otomiStack.createAplTeam(teamData, false)).rejects.toThrow(
227+
new ValidationError('Team name must be at least 3 characters long'),
228+
)
229+
})
230+
214231
test('should throw ValidationError when team name exceeds 9 characters', async () => {
215232
const teamData: AplTeamSettingsRequest = {
216233
kind: 'AplTeamSettingSet',

src/otomi-stack.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CoreV1Api, KubeConfig, User as k8sUser, V1ObjectReference } from '@kubernetes/client-node'
1+
import { CoreV1Api, User as k8sUser, KubeConfig, V1ObjectReference } from '@kubernetes/client-node'
22
import Debug from 'debug'
33

44
import { getRegions, ObjectStorageKeyRegions } from '@linode/api-v4'
@@ -707,6 +707,7 @@ export default class OtomiStack {
707707

708708
async createAplTeam(data: AplTeamSettingsRequest, deploy = true): Promise<AplTeamSettingsResponse> {
709709
const teamName = data.metadata.name
710+
if (teamName.length < 3) throw new ValidationError('Team name must be at least 3 characters long')
710711
if (teamName.length > 9) throw new ValidationError('Team name must not exceed 9 characters')
711712

712713
if (isEmpty(data.spec.password)) {
@@ -977,6 +978,8 @@ export default class OtomiStack {
977978
}
978979

979980
async createAplNetpol(teamId: string, data: AplNetpolRequest): Promise<AplNetpolResponse> {
981+
if (data.metadata.name.length < 2)
982+
throw new ValidationError('Network policy name must be at least 2 characters long')
980983
try {
981984
const netpol = this.repoService.getTeamConfigService(teamId).createNetpol(data)
982985
await this.saveTeamConfigItem(netpol)
@@ -1423,6 +1426,8 @@ export default class OtomiStack {
14231426

14241427
async createAplBuild(teamId: string, data: AplBuildRequest): Promise<AplBuildResponse> {
14251428
const buildName = `${data?.spec?.imageName}-${data?.spec?.tag}`
1429+
if (data.spec.secretName && data.spec.secretName.length < 2)
1430+
throw new ValidationError('Secret name must be at least 2 characters long')
14261431
if (buildName.length > 128) {
14271432
throw new HttpError(
14281433
400,
@@ -1873,6 +1878,9 @@ export default class OtomiStack {
18731878
}
18741879

18751880
async createAplService(teamId: string, data: AplServiceRequest): Promise<AplServiceResponse> {
1881+
if (data.metadata.name.length < 2) throw new ValidationError('Service name must be at least 2 characters long')
1882+
if (data.spec.cname?.tlsSecretName && data.spec.cname?.tlsSecretName.length < 2)
1883+
throw new ValidationError('Secret name must be at least 2 characters long')
18761884
try {
18771885
const service = this.repoService.getTeamConfigService(teamId).createService(data)
18781886
await this.saveTeamConfigItem(service)
@@ -2206,6 +2214,7 @@ export default class OtomiStack {
22062214
}
22072215

22082216
async createAplSealedSecret(teamId: string, data: AplSecretRequest): Promise<AplSecretResponse> {
2217+
if (data.metadata.name.length < 2) throw new ValidationError('Secret name must be at least 2 characters long')
22092218
try {
22102219
const sealedSecret = this.repoService.getTeamConfigService(teamId).createSealedSecret(data)
22112220
await this.saveTeamSealedSecret(sealedSecret)

0 commit comments

Comments
 (0)