kuma
97 строк · 3.0 Кб
1package api
2
3import (
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
13func Api() {
14It("works with /policies", func() {
15r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress() + "/policies")
16Expect(err).ToNot(HaveOccurred())
17defer r.Body.Close()
18
19res := map[string][]interface{}{}
20Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
21Expect(len(res["policies"])).To(BeNumerically(">", 2))
22})
23
24It("works with /", func() {
25r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress())
26Expect(err).ToNot(HaveOccurred())
27defer r.Body.Close()
28
29res := map[string]interface{}{}
30Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
31Expect(res["version"]).ToNot(BeEmpty())
32})
33
34It("get k8s version of default mesh", func() {
35r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress() + "/meshes/default?format=k8s")
36Expect(err).ToNot(HaveOccurred())
37defer r.Body.Close()
38
39res := map[string]interface{}{}
40Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
41Expect(res).To(HaveKey("kind"))
42Expect(res["kind"]).To(Equal("Mesh"))
43Expect(res).To(HaveKey("apiVersion"))
44Expect(res["apiVersion"]).To(Equal("kuma.io/v1alpha1"))
45})
46
47It("get kubernetes version of default mesh", func() {
48r, err := http.Get(kubernetes.Cluster.GetKuma().GetAPIServerAddress() + "/meshes/default")
49Expect(err).ToNot(HaveOccurred())
50defer r.Body.Close()
51
52res := map[string]interface{}{}
53Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
54Expect(res).To(HaveKey("type"))
55Expect(res["type"]).To(Equal("Mesh"))
56})
57
58type testCase struct {
59path string
60k8sSecType string
61}
62DescribeTable("gets secret",
63func(given testCase) {
64token, err := kubernetes.Cluster.GetKumactlOptions().RunKumactlAndGetOutput("generate", "user-token",
65"--name", "mesh-system:admin",
66"--group", "mesh-system:admin",
67"--valid-for", "24h",
68)
69Expect(err).ToNot(HaveOccurred())
70
71Eventually(func(g Gomega) {
72req, err := http.NewRequest("GET", kubernetes.Cluster.GetKuma().GetAPIServerAddress()+given.path, nil)
73g.Expect(err).ToNot(HaveOccurred())
74req.Header.Add("authorization", "Bearer "+token)
75r, err := http.DefaultClient.Do(req)
76g.Expect(err).ToNot(HaveOccurred())
77defer r.Body.Close()
78
79res := map[string]interface{}{}
80g.Expect(json.NewDecoder(r.Body).Decode(&res)).To(Succeed())
81g.Expect(res).To(HaveKey("kind"))
82g.Expect(res["kind"]).To(Equal("Secret"))
83g.Expect(res).To(HaveKey("apiVersion"))
84g.Expect(res["apiVersion"]).To(Equal("v1"))
85g.Expect(res["type"]).To(Equal(given.k8sSecType))
86}, "30s", "1s").Should(Succeed())
87},
88Entry("global secret", testCase{
89path: "/global-secrets/inter-cp-ca?format=k8s",
90k8sSecType: "system.kuma.io/global-secret",
91}),
92Entry("mesh secret", testCase{
93path: "/meshes/default/secrets/dataplane-token-signing-key-default-1?format=k8s",
94k8sSecType: "system.kuma.io/secret",
95}),
96)
97}
98