Skip to content

Commit bf6bc86

Browse files
committed
Add tests for selective ownership override
Signed-off-by: Soumik Majumder <[email protected]>
1 parent 02c7f3b commit bf6bc86

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// Copyright 2024 The Carvel Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package e2e
5+
6+
import (
7+
"fmt"
8+
"strings"
9+
"testing"
10+
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func TestSelectiveOwnershipOverride(t *testing.T) {
15+
env := BuildEnv(t)
16+
logger := Logger{}
17+
kapp := Kapp{t, env.Namespace, env.KappBinaryPath, logger}
18+
19+
const existingAppName1 = "existing-app-1"
20+
const existingAppName2 = "existing-app-2"
21+
const newAppName = "new-app"
22+
23+
resourceYAML := `
24+
---
25+
apiVersion: v1
26+
kind: ConfigMap
27+
metadata:
28+
name: cm-%s
29+
data:
30+
foo: bar
31+
`
32+
33+
cleanUp := func() {
34+
kapp.Run([]string{"delete", "-a", existingAppName1})
35+
kapp.Run([]string{"delete", "-a", existingAppName2})
36+
kapp.Run([]string{"delete", "-a", newAppName})
37+
}
38+
cleanUp()
39+
defer cleanUp()
40+
41+
logger.Section("deploy existing apps", func() {
42+
kapp.RunWithOpts([]string{"deploy", "-a", existingAppName1, "-f", "-"}, RunOpts{StdinReader: strings.NewReader(fmt.Sprintf(resourceYAML, "1"))})
43+
kapp.RunWithOpts([]string{"deploy", "-a", existingAppName2, "-f", "-"}, RunOpts{StdinReader: strings.NewReader(fmt.Sprintf(resourceYAML, "2"))})
44+
})
45+
46+
logger.Section("deploy new app with selective overrides", func() {
47+
resourcesString := fmt.Sprintf("%s%s", fmt.Sprintf(resourceYAML, "1"), fmt.Sprintf(resourceYAML, "2"))
48+
// Overrides disallowed
49+
_, err := kapp.RunWithOpts([]string{"deploy", "-a", newAppName, "-f", "-"}, RunOpts{StdinReader: strings.NewReader(resourcesString), AllowError: true})
50+
require.Error(t, err)
51+
require.Contains(t, err.Error(), existingAppName1)
52+
require.Contains(t, err.Error(), existingAppName2)
53+
54+
// Test with override scoped while override is disallowed
55+
_, err = kapp.RunWithOpts([]string{"deploy", "-a", newAppName, "-f", "-", "--ownership-override-app-filter", existingAppName1},
56+
RunOpts{StdinReader: strings.NewReader(resourcesString), AllowError: true})
57+
require.Error(t, err)
58+
require.Contains(t, err.Error(), existingAppName1)
59+
require.Contains(t, err.Error(), existingAppName2)
60+
61+
// Test with override scoped to single existing app
62+
_, err = kapp.RunWithOpts([]string{"deploy", "-a", newAppName, "-f", "-", "--dangerous-override-ownership-of-existing-resources", "--ownership-override-app-filter", existingAppName1},
63+
RunOpts{StdinReader: strings.NewReader(resourcesString), AllowError: true})
64+
require.Error(t, err)
65+
require.NotContains(t, err.Error(), existingAppName1)
66+
require.Contains(t, err.Error(), existingAppName2)
67+
68+
// Test with override scoped to both existing app
69+
kapp.RunWithOpts([]string{"deploy", "-a", newAppName, "-f", "-", "--dangerous-override-ownership-of-existing-resources", "--ownership-override-app-filter", fmt.Sprintf("%s,%s", existingAppName1, existingAppName2)},
70+
RunOpts{StdinReader: strings.NewReader(resourcesString)})
71+
})
72+
}

0 commit comments

Comments
 (0)