Fixes multiple namespaces bug (#276)

* fix ns bug

* add tests

* rename some variables

* rename ns to namespace

* fix delete + correctly type

* add typing to input obj parser
This commit is contained in:
Oliver King
2023-02-06 13:42:55 -05:00
committed by GitHub
parent 756cc0a511
commit ecb488266d
14 changed files with 326 additions and 81 deletions
+176 -1
View File
@@ -3,7 +3,6 @@ import * as exec from '@actions/exec'
import * as io from '@actions/io'
import * as core from '@actions/core'
import * as toolCache from '@actions/tool-cache'
import {config} from 'process'
describe('Kubectl path', () => {
const version = '1.1'
@@ -38,6 +37,7 @@ describe('Kubectl path', () => {
const kubectlPath = 'kubectlPath'
const testNamespace = 'testNamespace'
const defaultNamespace = 'default'
const otherNamespace = 'otherns'
describe('Kubectl class', () => {
describe('default namespace behavior', () => {
const kubectl = new Kubectl(kubectlPath, defaultNamespace)
@@ -122,6 +122,26 @@ describe('Kubectl class', () => {
],
{silent: false}
)
// overrided ns
const silent = false
await kubectl.describe(
resourceType,
resourceName,
silent,
otherNamespace
)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'describe',
resourceType,
resourceName,
'--namespace',
otherNamespace
],
{silent}
)
})
it('describes a resource silently', async () => {
@@ -140,6 +160,26 @@ describe('Kubectl class', () => {
],
{silent: true}
)
// overrided ns
const silent = false
await kubectl.describe(
resourceType,
resourceName,
silent,
otherNamespace
)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'describe',
resourceType,
resourceName,
'--namespace',
otherNamespace
],
{silent}
)
})
it('annotates resource', async () => {
@@ -165,6 +205,27 @@ describe('Kubectl class', () => {
],
{silent: false}
)
// override ns
await kubectl.annotate(
resourceType,
resourceName,
annotation,
otherNamespace
)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'annotate',
resourceType,
resourceName,
annotation,
'--overwrite',
'--namespace',
otherNamespace
],
{silent: false}
)
})
it('annotates files with single file', async () => {
@@ -185,6 +246,22 @@ describe('Kubectl class', () => {
],
{silent: false}
)
// override ns
await kubectl.annotateFiles(file, annotation, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'annotate',
'-f',
file,
annotation,
'--overwrite',
'--namespace',
otherNamespace
],
{silent: false}
)
})
it('annotates files with mulitple files', async () => {
@@ -205,6 +282,22 @@ describe('Kubectl class', () => {
],
{silent: false}
)
// override ns
await kubectl.annotateFiles(files, annotation, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'annotate',
'-f',
files.join(','),
annotation,
'--overwrite',
'--namespace',
otherNamespace
],
{silent: false}
)
})
it('labels files with single file', async () => {
@@ -225,6 +318,21 @@ describe('Kubectl class', () => {
],
{silent: false}
)
await kubectl.labelFiles(file, labels, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'label',
'-f',
file,
...labels,
'--overwrite',
'--namespace',
otherNamespace
],
{silent: false}
)
})
it('labels files with multiple files', async () => {
@@ -245,6 +353,21 @@ describe('Kubectl class', () => {
],
{silent: false}
)
await kubectl.labelFiles(files, labels, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'label',
'-f',
files.join(','),
...labels,
'--overwrite',
'--namespace',
otherNamespace
],
{silent: false}
)
})
it('gets all pods', async () => {
@@ -273,6 +396,20 @@ describe('Kubectl class', () => {
],
{silent: false}
)
// override ns
await kubectl.checkRolloutStatus(resourceType, name, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'rollout',
'status',
`${resourceType}/${name}`,
'--namespace',
otherNamespace
],
{silent: false}
)
})
it('gets resource', async () => {
@@ -291,6 +428,22 @@ describe('Kubectl class', () => {
],
{silent: false}
)
// override ns
const silent = true
await kubectl.getResource(resourceType, name, silent, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
[
'get',
`${resourceType}/${name}`,
'-o',
'json',
'--namespace',
otherNamespace
],
{silent}
)
})
it('executes a command', async () => {
@@ -321,6 +474,14 @@ describe('Kubectl class', () => {
['delete', arg, '--namespace', testNamespace],
{silent: false}
)
// override ns
await kubectl.delete(arg, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
['delete', arg, '--namespace', otherNamespace],
{silent: false}
)
})
it('deletes with multiple arguments', async () => {
@@ -331,6 +492,14 @@ describe('Kubectl class', () => {
['delete', ...args, '--namespace', testNamespace],
{silent: false}
)
// override ns
await kubectl.delete(args, otherNamespace)
expect(exec.getExecOutput).toBeCalledWith(
kubectlPath,
['delete', ...args, '--namespace', otherNamespace],
{silent: false}
)
})
})
@@ -369,5 +538,11 @@ describe('Kubectl class', () => {
[command, '--insecure-skip-tls-verify', '--namespace', testNamespace],
{silent: false}
)
const kubectlNoFlags = new Kubectl(kubectlPath)
kubectlNoFlags.executeCommand(command)
expect(exec.getExecOutput).toBeCalledWith(kubectlPath, [command], {
silent: false
})
})
})