1// +build e2e 2 3// Copyright 2020-2021 InfluxData, Inc. All rights reserved. 4// Use of this source code is governed by MIT 5// license that can be found in the LICENSE file. 6 7package api_test 8 9import ( 10 "context" 11 "testing" 12 13 influxdb2 "github.com/influxdata/influxdb-client-go/v2" 14 "github.com/influxdata/influxdb-client-go/v2/domain" 15 "github.com/stretchr/testify/assert" 16 "github.com/stretchr/testify/require" 17) 18 19func TestLabelsAPI(t *testing.T) { 20 client := influxdb2.NewClientWithOptions(serverURL, authToken, influxdb2.DefaultOptions().SetLogLevel(3)) 21 labelsAPI := client.LabelsAPI() 22 orgAPI := client.OrganizationsAPI() 23 24 ctx := context.Background() 25 26 myorg, err := orgAPI.FindOrganizationByName(ctx, "my-org") 27 require.Nil(t, err, err) 28 require.NotNil(t, myorg) 29 30 labels, err := labelsAPI.GetLabels(ctx) 31 require.Nil(t, err, err) 32 require.NotNil(t, labels) 33 assert.Len(t, *labels, 0) 34 35 labelName := "Active State" 36 props := map[string]string{"color": "#33ffddd", "description": "Marks org active"} 37 label, err := labelsAPI.CreateLabelWithName(ctx, myorg, labelName, props) 38 require.Nil(t, err, err) 39 require.NotNil(t, label) 40 assert.Equal(t, labelName, *label.Name) 41 require.NotNil(t, label.Properties) 42 assert.Equal(t, props, label.Properties.AdditionalProperties) 43 44 //remove properties 45 label.Properties.AdditionalProperties = map[string]string{"color": "", "description": ""} 46 label2, err := labelsAPI.UpdateLabel(ctx, label) 47 require.Nil(t, err, err) 48 require.NotNil(t, label2) 49 assert.Equal(t, labelName, *label2.Name) 50 assert.Nil(t, label2.Properties) 51 52 label2, err = labelsAPI.FindLabelByID(ctx, *label.Id) 53 require.Nil(t, err, err) 54 require.NotNil(t, label2) 55 assert.Equal(t, labelName, *label2.Name) 56 57 label2, err = labelsAPI.FindLabelByName(ctx, *myorg.Id, labelName) 58 require.Nil(t, err, err) 59 require.NotNil(t, label2) 60 assert.Equal(t, labelName, *label2.Name) 61 62 label2, err = labelsAPI.FindLabelByName(ctx, *myorg.Id, "wrong label") 63 assert.NotNil(t, err, err) 64 assert.Nil(t, label2) 65 66 labels, err = labelsAPI.GetLabels(ctx) 67 require.Nil(t, err, err) 68 require.NotNil(t, labels) 69 assert.Len(t, *labels, 1) 70 71 labels, err = labelsAPI.FindLabelsByOrg(ctx, myorg) 72 require.Nil(t, err, err) 73 require.NotNil(t, labels) 74 assert.Len(t, *labels, 1) 75 76 labels, err = labelsAPI.FindLabelsByOrgID(ctx, *myorg.Id) 77 require.Nil(t, err, err) 78 require.NotNil(t, labels) 79 assert.Len(t, *labels, 1) 80 81 // duplicate label 82 label2, err = labelsAPI.CreateLabelWithName(ctx, myorg, labelName, nil) 83 assert.NotNil(t, err) 84 assert.Nil(t, label2) 85 86 err = labelsAPI.DeleteLabel(ctx, label) 87 require.Nil(t, err, err) 88 // 89 err = labelsAPI.DeleteLabel(ctx, label) 90 assert.NotNil(t, err, err) 91} 92 93func TestLabelsAPI_failing(t *testing.T) { 94 client := influxdb2.NewClient(serverURL, authToken) 95 clientUnAuth := influxdb2.NewClient(serverURL, "invalid_token") 96 labelsAPI := client.LabelsAPI() 97 orgAPI := client.OrganizationsAPI() 98 ctx := context.Background() 99 100 invalidID := "xyz" 101 wrongID := "1000000000000000" 102 103 var label = &domain.Label{ 104 Id: &wrongID, 105 } 106 107 org, err := orgAPI.FindOrganizationByName(ctx, "my-org") 108 require.Nil(t, err, err) 109 require.NotNil(t, org) 110 111 label, err = labelsAPI.UpdateLabel(ctx, label) 112 assert.NotNil(t, err) 113 assert.Nil(t, label) 114 115 label, err = labelsAPI.FindLabelByID(ctx, wrongID) 116 assert.NotNil(t, err) 117 assert.Nil(t, label) 118 119 labels, err := clientUnAuth.LabelsAPI().FindLabelsByOrgID(ctx, invalidID) 120 assert.NotNil(t, err) 121 assert.Nil(t, labels) 122 123 err = labelsAPI.DeleteLabelWithID(ctx, invalidID) 124 assert.NotNil(t, err) 125} 126 127func TestLabelsAPI_requestFailing(t *testing.T) { 128 client := influxdb2.NewClient("serverURL", authToken) 129 labelsAPI := client.LabelsAPI() 130 ctx := context.Background() 131 132 anID := "1000000000000000" 133 134 label := &domain.Label{Id: &anID} 135 136 _, err := labelsAPI.GetLabels(ctx) 137 assert.NotNil(t, err) 138 139 _, err = labelsAPI.FindLabelByName(ctx, anID, "name") 140 assert.NotNil(t, err) 141 142 _, err = labelsAPI.FindLabelByID(ctx, anID) 143 assert.NotNil(t, err) 144 145 _, err = labelsAPI.CreateLabelWithNameWithID(ctx, anID, "name", nil) 146 assert.NotNil(t, err) 147 148 _, err = labelsAPI.UpdateLabel(ctx, label) 149 assert.NotNil(t, err) 150 151 err = labelsAPI.DeleteLabel(ctx, label) 152 assert.NotNil(t, err) 153} 154