1 package integration_test
2
3 import (
4 "edge-infra.dev/pkg/edge/api/graph/model"
5 testApi "edge-infra.dev/pkg/edge/api/graph/test"
6 "edge-infra.dev/test/framework/integration"
7
8 guuid "github.com/google/uuid"
9 "github.com/udacity/graphb"
10 )
11
12 func (s *Suite) TestCreateLabel() {
13 var response struct {
14 CreateLabel bool
15 }
16 bannerID := testApi.TestOrgEdgeID
17 org := testApi.TestOrgID
18 if integration.IsIntegrationTest() {
19 bannerID = s.testBannerEU.EdgeID
20 org = s.Config.TestTenant
21 }
22 randomID := guuid.New().String()
23 mutation := createLabelMutation(randomID, "purp", bannerID, "description", "type_test", true, true, true)
24
25 ResolverClient.MustPost(mutation, &response, WithAuth(s.Resolver, org, s.Config.TestUsername, s.Config.TestPassword, string(model.RoleEdgeBannerAdmin)))
26 s.NotNil(response.CreateLabel)
27 s.Equal(true, response.CreateLabel)
28 row := s.DB.QueryRow("SELECT label_key, label_edge_id FROM labels WHERE label_key = $1 AND banner_edge_id = $2", randomID, bannerID)
29 var labelID string
30 var key string
31 err = row.Scan(&key, &labelID)
32 s.NoError(err)
33 s.Equal(randomID, key)
34 if integration.IsIntegrationTest() {
35 _, err := s.DB.Exec("DELETE FROM labels WHERE label_edge_id = $1", labelID)
36 s.NoError(err)
37 }
38 }
39
40 func (s *Suite) TestClusterLabels() {
41 integration.SkipIf(s.Framework)
42 var response struct {
43 ClusterLabels []*model.ClusterLabel
44 }
45
46 query := clusterLabelsQuery("6e04c043-89ca-4dc2-a2ea-4605dbdd4c65", "")
47 ResolverClient.MustPost(query, &response)
48 s.NotNil(response.ClusterLabels)
49 s.Equal(0, len(response.ClusterLabels))
50
51 query = clusterLabelsQuery(testClusterEdgeID2, "")
52 ResolverClient.MustPost(query, &response)
53 s.NotNil(response.ClusterLabels)
54 s.Equal(4, len(response.ClusterLabels))
55 for _, res := range response.ClusterLabels {
56 s.Equal(testClusterEdgeID2, res.ClusterEdgeID)
57 }
58
59 testLabelEdgeID := "442f2e77-279d-45af-acae-4ec5458b7e00"
60 query = clusterLabelsQuery(testClusterEdgeID2, testLabelEdgeID)
61 ResolverClient.MustPost(query, &response)
62 s.NotNil(response.ClusterLabels)
63 s.Equal(1, len(response.ClusterLabels))
64 s.Equal(testClusterEdgeID2, response.ClusterLabels[0].ClusterEdgeID)
65 s.Equal(testLabelEdgeID, response.ClusterLabels[0].LabelEdgeID)
66 }
67
68 func (s *Suite) TestAddClusterLabels() {
69 integration.SkipIf(s.Framework)
70 var response struct {
71 AddClusterLabels bool
72 }
73 mutation := addClusterLabelsMutation(testClusterEdgeID, []string{"bbb5a40b-65d1-4092-ab5f-e35d7c2482dc"})
74 ResolverClient.MustPost(mutation, &response)
75 s.NotNil(response.AddClusterLabels)
76 s.Equal(true, response.AddClusterLabels)
77 }
78
79 func (s *Suite) TestAddClusterLabelsError() {
80 integration.SkipIf(s.Framework)
81 var response struct {
82 AddClusterLabels bool
83 }
84
85
86 mutation := addClusterLabelsMutation(testClusterEdgeID, []string{"ca18bfab-091b-4a7f-9db6-011d2603b949", "label-not-exist"})
87 err := ResolverClient.Post(mutation, &response)
88 s.Error(err)
89
90
91 mutation = addClusterLabelsMutation(testClusterEdgeID, []string{"ca18bfab-091b-4a7f-9db6-011d2603b949"})
92 err = ResolverClient.Post(mutation, &response)
93 s.NoError(err)
94 s.Equal(true, response.AddClusterLabels)
95
96
97 mutation = addClusterLabelsMutation(testClusterEdgeID, []string{"ca18bfab-091b-4a7f-9db6-011d2603b949"})
98 err = ResolverClient.Post(mutation, &response)
99 s.Error(err)
100 }
101
102 func createLabelMutation(key, color, bannerEdgeID, description, labelType string, visible, editable, unique bool) string {
103 return MustParse(graphb.Query{
104 Type: graphb.TypeMutation,
105 Fields: []*graphb.Field{
106 {
107 Name: "createLabel",
108 Arguments: []graphb.Argument{
109 graphb.ArgumentCustomType("newLabel",
110 graphb.ArgumentString("key", key),
111 graphb.ArgumentString("color", color),
112 graphb.ArgumentString("bannerEdgeId", bannerEdgeID),
113 graphb.ArgumentString("description", description),
114 graphb.ArgumentString("type", labelType),
115 graphb.ArgumentBool("visible", visible),
116 graphb.ArgumentBool("editable", editable),
117 graphb.ArgumentBool("unique", unique),
118 ),
119 },
120 },
121 },
122 })
123 }
124
125 func addClusterLabelsMutation(clusterEdgeID string, labelEdgeIDs []string) string {
126 return MustParse(graphb.Query{
127 Type: graphb.TypeMutation,
128 Fields: []*graphb.Field{
129 {
130 Name: "addClusterLabels",
131 Arguments: []graphb.Argument{
132 graphb.ArgumentString("clusterEdgeId", clusterEdgeID),
133 graphb.ArgumentStringSlice("labelEdgeIds", labelEdgeIDs...),
134 },
135 },
136 },
137 })
138 }
139
140 func clusterLabelsQuery(clusterEdgeID string, labelEdgeID string) string {
141 payloadArgs := []graphb.Argument{}
142 if clusterEdgeID != "" {
143 payloadArgs = append(payloadArgs, graphb.ArgumentString("clusterEdgeId", clusterEdgeID))
144 }
145 if labelEdgeID != "" {
146 payloadArgs = append(payloadArgs, graphb.ArgumentString("labelEdgeId", labelEdgeID))
147 }
148
149 return MustParse(graphb.Query{
150 Type: graphb.TypeQuery,
151 Fields: []*graphb.Field{
152 {
153 Name: "clusterLabels",
154 Arguments: []graphb.Argument{
155 graphb.ArgumentCustomType("clusterLabelParameters", payloadArgs...),
156 },
157 Fields: graphb.Fields("clusterEdgeId", "labelEdgeId"),
158 },
159 },
160 })
161 }
162
View as plain text