kuma

Форк
0
97 строк · 3.0 Кб
1
package api
2

3
import (
4
	"encoding/json"
5
	"net/http"
6

7
	. "github.com/onsi/ginkgo/v2"
8
	. "github.com/onsi/gomega"
9

10
	"github.com/kumahq/kuma/test/framework/envs/kubernetes"
11
)
12

13
func Api() {
14
	It("works with /policies", func() {
15
		r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress() + "/policies")
16
		Expect(err).ToNot(HaveOccurred())
17
		defer r.Body.Close()
18

19
		res := map[string][]interface{}{}
20
		Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
21
		Expect(len(res["policies"])).To(BeNumerically(">", 2))
22
	})
23

24
	It("works with /", func() {
25
		r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress())
26
		Expect(err).ToNot(HaveOccurred())
27
		defer r.Body.Close()
28

29
		res := map[string]interface{}{}
30
		Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
31
		Expect(res["version"]).ToNot(BeEmpty())
32
	})
33

34
	It("get k8s version of default mesh", func() {
35
		r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress() + "/meshes/default?format=k8s")
36
		Expect(err).ToNot(HaveOccurred())
37
		defer r.Body.Close()
38

39
		res := map[string]interface{}{}
40
		Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
41
		Expect(res).To(HaveKey("kind"))
42
		Expect(res["kind"]).To(Equal("Mesh"))
43
		Expect(res).To(HaveKey("apiVersion"))
44
		Expect(res["apiVersion"]).To(Equal("kuma.io/v1alpha1"))
45
	})
46

47
	It("get kubernetes version of default mesh", func() {
48
		r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress() + "/meshes/default")
49
		Expect(err).ToNot(HaveOccurred())
50
		defer r.Body.Close()
51

52
		res := map[string]interface{}{}
53
		Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
54
		Expect(res).To(HaveKey("type"))
55
		Expect(res["type"]).To(Equal("Mesh"))
56
	})
57

58
	type testCase struct {
59
		path       string
60
		k8sSecType string
61
	}
62
	DescribeTable("gets secret",
63
		func(given testCase) {
64
			token, err := kubernetes.Cluster.GetKumactlOptions().RunKumactlAndGetOutput("generate", "user-token",
65
				"--name", "mesh-system:admin",
66
				"--group", "mesh-system:admin",
67
				"--valid-for", "24h",
68
			)
69
			Expect(err).ToNot(HaveOccurred())
70

71
			Eventually(func(g Gomega) {
72
				req, err := http.NewRequest("GET", kubernetes.Cluster.GetKuma().GetAPIServerAddress()+given.path, nil)
73
				g.Expect(err).ToNot(HaveOccurred())
74
				req.Header.Add("authorization", "Bearer "+token)
75
				r, err := http.DefaultClient.Do(req)
76
				g.Expect(err).ToNot(HaveOccurred())
77
				defer r.Body.Close()
78

79
				res := map[string]interface{}{}
80
				g.Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
81
				g.Expect(res).To(HaveKey("kind"))
82
				g.Expect(res["kind"]).To(Equal("Secret"))
83
				g.Expect(res).To(HaveKey("apiVersion"))
84
				g.Expect(res["apiVersion"]).To(Equal("v1"))
85
				g.Expect(res["type"]).To(Equal(given.k8sSecType))
86
			}, "30s", "1s").Should(Succeed())
87
		},
88
		Entry("global secret", testCase{
89
			path:       "/global-secrets/inter-cp-ca?format=k8s",
90
			k8sSecType: "system.kuma.io/global-secret",
91
		}),
92
		Entry("mesh secret", testCase{
93
			path:       "/meshes/default/secrets/dataplane-token-signing-key-default-1?format=k8s",
94
			k8sSecType: "system.kuma.io/secret",
95
		}),
96
	)
97
}
98

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

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

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

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