kuma

Форк
0
109 строк · 2.8 Кб
1
package meshtrafficpermission
2

3
import (
4
	"fmt"
5

6
	"github.com/gruntwork-io/terratest/modules/k8s"
7
	. "github.com/onsi/ginkgo/v2"
8
	. "github.com/onsi/gomega"
9

10
	"github.com/kumahq/kuma/pkg/plugins/policies/meshtrafficpermission/api/v1alpha1"
11
	. "github.com/kumahq/kuma/test/framework"
12
	"github.com/kumahq/kuma/test/framework/envs/kubernetes"
13
)
14

15
func API() {
16
	meshName := "meshtrafficpermission-api"
17

18
	BeforeAll(func() {
19
		err := NewClusterSetup().
20
			Install(MeshKubernetes(meshName)).
21
			Setup(kubernetes.Cluster)
22
		Expect(err).ToNot(HaveOccurred())
23
	})
24

25
	E2EAfterEach(func() {
26
		Expect(DeleteMeshResources(kubernetes.Cluster, meshName, v1alpha1.MeshTrafficPermissionResourceTypeDescriptor)).To(Succeed())
27
	})
28

29
	E2EAfterAll(func() {
30
		Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())
31
	})
32

33
	It("should create MeshTrafficPermission policy", func() {
34
		// given no MeshTrafficPermissions
35
		mtps, err := kubernetes.Cluster.GetKumactlOptions().KumactlList("meshtrafficpermissions", meshName)
36
		Expect(err).ToNot(HaveOccurred())
37
		Expect(mtps).To(BeEmpty())
38

39
		// when
40
		Expect(YamlK8s(fmt.Sprintf(`
41
apiVersion: kuma.io/v1alpha1
42
kind: MeshTrafficPermission
43
metadata:
44
  name: mtp1
45
  namespace: %s
46
  labels:
47
    kuma.io/mesh: meshtrafficpermission-api
48
spec:
49
  targetRef:
50
    kind: MeshService
51
    name: backend
52
  from:
53
    - targetRef:
54
        kind: Mesh
55
      default:
56
        action: Allow
57
    - targetRef:
58
        kind: MeshService
59
        name: backend
60
      default:
61
        action: AllowWithShadowDeny
62
    - targetRef:
63
        kind: MeshServiceSubset
64
        name: backend
65
        tags:
66
          version: v1
67
      default:
68
        action: Deny
69
`, Config.KumaNamespace))(kubernetes.Cluster)).To(Succeed())
70

71
		// then
72
		mtps, err = kubernetes.Cluster.GetKumactlOptions().KumactlList("meshtrafficpermissions", meshName)
73
		Expect(err).ToNot(HaveOccurred())
74
		Expect(mtps).To(HaveLen(1))
75
		Expect(mtps[0]).To(Equal(fmt.Sprintf("mtp1.%s", Config.KumaNamespace)))
76
	})
77

78
	It("should deny creating policy in the non-system namespace", func() {
79
		// given no MeshTrafficPermissions
80
		mtps, err := kubernetes.Cluster.GetKumactlOptions().KumactlList("meshtrafficpermissions", meshName)
81
		Expect(err).ToNot(HaveOccurred())
82
		Expect(mtps).To(BeEmpty())
83

84
		// when
85
		err = k8s.KubectlApplyFromStringE(
86
			kubernetes.Cluster.GetTesting(),
87
			kubernetes.Cluster.GetKubectlOptions(), `
88
apiVersion: kuma.io/v1alpha1
89
kind: MeshTrafficPermission
90
metadata:
91
  name: mtp1
92
  namespace: default
93
  labels:
94
    kuma.io/mesh: meshtrafficpermission-api
95
spec:
96
  targetRef:
97
    kind: MeshService
98
    name: backend
99
  from:
100
    - targetRef:
101
        kind: Mesh
102
      default:
103
        action: Allow
104
`)
105

106
		Expect(err).To(HaveOccurred())
107
		Expect(err.Error()).To(ContainSubstring(fmt.Sprintf("policy can only be created in the system namespace:%s", Config.KumaNamespace)))
108
	})
109
}
110

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.