...

Source file src/edge-infra.dev/pkg/edge/api/graph/integration/labels_queries_test.go

Documentation: edge-infra.dev/pkg/edge/api/graph/integration

     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  	//override auth token
    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  	//invalid label id
    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  	//test label being rolled back
    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  	//mapping already exist
    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 { //nolint: unparam
   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