1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00
sap-jenkins-library/pkg/sonar/componentService_test.go
Marc Bormeth b213af1089
Add Coverage Info to sonarscan.json (#3262)
* Add coverage metrics to report + influx

* Write unit tests

* Add integration test for Sonar Measures Component Service
2021-12-08 09:02:12 +01:00

96 lines
2.6 KiB
Go

package sonar
import (
"net/http"
"testing"
"github.com/jarcoal/httpmock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
piperhttp "github.com/SAP/jenkins-library/pkg/http"
)
func TestComponentService(t *testing.T) {
testURL := "https://example.org"
t.Run("success", func(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
sender := &piperhttp.Client{}
sender.SetOptions(piperhttp.ClientOptions{MaxRetries: -1, UseDefaultTransport: true})
// add response handler
httpmock.RegisterResponder(http.MethodGet, testURL+"/api/"+EndpointMeasuresComponent+"", httpmock.NewStringResponder(http.StatusOK, responseCoverage))
// create service instance
serviceUnderTest := NewMeasuresComponentService(testURL, mock.Anything, mock.Anything, mock.Anything, sender)
// test
cov, err := serviceUnderTest.GetCoverage()
// assert
assert.NoError(t, err)
assert.Equal(t, float32(81), cov.BranchCoverage)
assert.Equal(t, 1, httpmock.GetTotalCallCount(), "unexpected number of requests")
})
t.Run("invalid metric value", func(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
sender := &piperhttp.Client{}
sender.SetOptions(piperhttp.ClientOptions{MaxRetries: -1, UseDefaultTransport: true})
// add response handler
httpmock.RegisterResponder(http.MethodGet, testURL+"/api/"+EndpointMeasuresComponent+"", httpmock.NewStringResponder(http.StatusOK, responseCoverageInvalidValue))
// create service instance
serviceUnderTest := NewMeasuresComponentService(testURL, mock.Anything, mock.Anything, mock.Anything, sender)
// test
cov, err := serviceUnderTest.GetCoverage()
// assert
assert.Error(t, err)
assert.Nil(t, cov)
assert.Equal(t, 1, httpmock.GetTotalCallCount(), "unexpected number of requests")
})
}
const responseCoverage = `{
"component": {
"key": "com.sap.piper.test",
"name": "com.sap.piper.test",
"qualifier": "TRK",
"measures": [
{
"metric": "line_coverage",
"value": "80.4",
"bestValue": false
},
{
"metric": "branch_coverage",
"value": "81.0",
"bestValue": false
},
{
"metric": "coverage",
"value": "80.7",
"bestValue": false
},
{
"metric": "extra_valie",
"value": "42.7",
"bestValue": false
}
]
}
}`
const responseCoverageInvalidValue = `{
"component": {
"key": "com.sap.piper.test",
"name": "com.sap.piper.test",
"qualifier": "TRK",
"measures": [
{
"metric": "line_coverage",
"value": "xyz",
"bestValue": false
}
]
}
}`