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