github.com/SAP/jenkins-library@v1.362.0/cmd/influxWriteData_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package cmd 5 6 import ( 7 "errors" 8 "testing" 9 10 "github.com/SAP/jenkins-library/pkg/influx/mocks" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/mock" 13 ) 14 15 func TestWriteData(t *testing.T) { 16 options := &influxWriteDataOptions{ 17 ServerURL: "http://localhost:8086", 18 AuthToken: "authToken", 19 Bucket: "piper", 20 Organization: "org", 21 } 22 errString := "some error" 23 errWriteData := errors.New(errString) 24 tests := []struct { 25 name string 26 dataMap string 27 dataMapTags string 28 writeDataErr error 29 errExpected bool 30 errIncludeStr string 31 }{ 32 { 33 "Test writing metrics with correct json data - success", 34 `{"series_1": {"field_a": 11, "field_b": 12}, "series_2": {"field_c": 21, "field_d": 22}}`, 35 `{"series_1": {"tag_a": "a", "tag_b": "b"}, "series_2": {"tag_c": "c", "tag_d": "d"}}`, 36 nil, 37 false, 38 "", 39 }, 40 { 41 "Test writing metrics with invalid dataMap", 42 `"series_1": {"field_a": 11, "field_b": 12}, "series_2": {"field_c": 21, "field_d": 22}`, 43 `{"series_1": {"tag_a": "a", "tag_b": "b"}, "series_2": {"tag_c": "c", "tag_d": "d"}}`, 44 nil, 45 false, 46 "Failed to unmarshal dataMap:", 47 }, 48 { 49 "Test writing metrics with invalid dataMapTags", 50 `{"series_1": {"field_a": 11, "field_b": 12}, "series_2": {"field_c": 21, "field_d": 22}}`, 51 `{"series_1": {"tag_a": 2, "tag_b": "b"}, "series_2": {"tag_c": "c", "tag_d": "d"}}`, 52 nil, 53 false, 54 "Failed to unmarshal dataMapTags:", 55 }, 56 { 57 "Test writing metrics with correct json data - failed", 58 `{"series_1": {"field_a": 11, "field_b": 12}, "series_2": {"field_c": 21, "field_d": 22}}`, 59 `{"series_1": {"tag_a": "a", "tag_b": "b"}, "series_2": {"tag_c": "c", "tag_d": "d"}}`, 60 errWriteData, 61 true, 62 errString, 63 }, 64 } 65 66 for _, tt := range tests { 67 t.Run(tt.name, func(t *testing.T) { 68 influxClientMock := &mocks.Client{} 69 writeAPIBlockingMock := &mocks.WriteAPIBlocking{} 70 writeAPIBlockingMock.On("WritePoint", mock.Anything, mock.Anything).Return(tt.writeDataErr) 71 influxClientMock.On("WriteAPIBlocking", mock.Anything, mock.Anything).Return(writeAPIBlockingMock) 72 options.DataMap = tt.dataMap 73 options.DataMapTags = tt.dataMapTags 74 err := writeData(options, influxClientMock) 75 if err != nil { 76 assert.Contains(t, err.Error(), tt.errIncludeStr) 77 } 78 }) 79 } 80 }