test(utils): introduced internal/testutils package to factorize testing utilities

Signed-off-by: Frederic BIDON <fredbi@yahoo.com>
Signed-off-by: Matthias Bertschy <matthias.bertschy@gmail.com>

Conflicts:
	core/pkg/hostsensorutils/hostsensordeploy_test.go
This commit is contained in:
Frederic BIDON
2023-03-23 17:26:22 +01:00
committed by Matthias Bertschy
parent 9e3ac4b0f7
commit dee3a10bac
7 changed files with 25 additions and 29 deletions

View File

@@ -9,6 +9,7 @@ import (
"strings"
"testing"
"github.com/kubescape/kubescape/v2/internal/testutils"
jsoniter "github.com/json-iterator/go"
"github.com/stretchr/testify/require"
)
@@ -159,5 +160,5 @@ func hydrateReleasedPolicyFromMock(t testing.TB, p *DownloadReleasedPolicy) {
}
func testRegoFile(framework string) string {
return filepath.Join(currentDir(), "testdata", fmt.Sprintf("%s.json", framework))
return filepath.Join(testutils.CurrentDir(), "testdata", fmt.Sprintf("%s.json", framework))
}

View File

@@ -7,6 +7,7 @@ import (
"github.com/armosec/armoapi-go/armotypes"
jsoniter "github.com/json-iterator/go"
"github.com/kubescape/kubescape/v2/internal/testutils"
"github.com/kubescape/opa-utils/reporthandling"
"github.com/kubescape/opa-utils/reporthandling/attacktrack/v1alpha1"
"github.com/stretchr/testify/require"
@@ -279,7 +280,7 @@ func mockLoginResponse() *feLoginResponse {
}
func mockPostureReport(t testing.TB, reportID, cluster string) *PostureReport {
fixture := filepath.Join(currentDir(), "testdata", "mock_posture_report.json")
fixture := filepath.Join(testutils.CurrentDir(), "testdata", "mock_posture_report.json")
buf, err := os.ReadFile(fixture)
require.NoError(t, err)

View File

@@ -4,9 +4,9 @@ import (
"fmt"
"os"
"path/filepath"
"runtime"
"testing"
"github.com/kubescape/kubescape/v2/internal/testutils"
"github.com/stretchr/testify/require"
)
@@ -387,7 +387,7 @@ func TestLoadPolicy(t *testing.T) {
}
func testFrameworkFile(framework string) string {
return filepath.Join(currentDir(), "testdata", fmt.Sprintf("%s.json", framework))
return filepath.Join(testutils.CurrentDir(), "testdata", fmt.Sprintf("%s.json", framework))
}
func writeTempJSONControlInputs(t testing.TB) (string, map[string][]string) {
@@ -408,9 +408,3 @@ func writeTempJSONControlInputs(t testing.TB) (string, map[string][]string) {
return fileName, mock
}
func currentDir() string {
_, filename, _, _ := runtime.Caller(1)
return filepath.Dir(filename)
}

View File

@@ -8,6 +8,7 @@ import (
logger "github.com/kubescape/go-logger"
metav1 "github.com/kubescape/kubescape/v2/core/meta/datastructures/v1"
"github.com/kubescape/kubescape/v2/internal/testutils"
reporthandlingv2 "github.com/kubescape/opa-utils/reporthandling/v2"
"github.com/mikefarah/yq/v4/pkg/yqlib"
"github.com/stretchr/testify/assert"
@@ -172,9 +173,8 @@ func TestApplyFixKeepsFormatting(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.inputFile, func(t *testing.T) {
getTestDataPath := func(filename string) string {
currentDir, _ := os.Getwd()
currentFile := "testdata/" + filename
return filepath.Join(currentDir, currentFile)
return filepath.Join(testutils.CurrentDir(), currentFile)
}
input, _ := os.ReadFile(getTestDataPath(tc.inputFile))

View File

@@ -4,9 +4,9 @@ import (
"context"
"os"
"path/filepath"
"runtime"
"testing"
"github.com/kubescape/kubescape/v2/internal/testutils"
"github.com/kubescape/opa-utils/objectsenvelopes/hostsensor"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -190,7 +190,7 @@ func TestHostSensorHandler(t *testing.T) {
t.Run("with manifest from YAML file", func(t *testing.T) {
t.Run("should build host sensor", func(t *testing.T) {
k8s := NewKubernetesApiMock(WithNode(mockNode1()), WithPod(mockPod1()), WithPod(mockPod2()), WithResponses(mockResponses()))
h, err := NewHostSensorHandler(k8s, filepath.Join(currentDir(), "hostsensor.yaml"))
h, err := NewHostSensorHandler(k8s, filepath.Join(testutils.CurrentDir(), "hostsensor.yaml"))
require.NoError(t, err)
require.NotNil(t, h)
@@ -223,7 +223,7 @@ func TestHostSensorHandler(t *testing.T) {
})
k8s := NewKubernetesApiMock(WithNode(mockNode1()), WithPod(mockPod1()), WithPod(mockPod2()), WithResponses(mockResponses()))
_, err := NewHostSensorHandler(k8s, filepath.Join(currentDir(), invalid))
_, err := NewHostSensorHandler(k8s, filepath.Join(testutils.CurrentDir(), invalid))
require.Error(t, err)
})
})
@@ -241,9 +241,3 @@ func TestHostSensorHandler(t *testing.T) {
//
// Notice that the package doesn't current pass tests with the race detector enabled.
}
func currentDir() string {
_, filename, _, _ := runtime.Caller(1)
return filepath.Dir(filename)
}

View File

@@ -11,7 +11,6 @@ import (
"net/url"
"os"
"path/filepath"
"runtime"
"strings"
"testing"
@@ -19,6 +18,7 @@ import (
"github.com/kubescape/k8s-interface/workloadinterface"
"github.com/kubescape/kubescape/v2/core/cautils"
"github.com/kubescape/kubescape/v2/core/pkg/resultshandling/reporter"
"github.com/kubescape/kubescape/v2/internal/testutils"
"github.com/kubescape/opa-utils/reporthandling"
"github.com/kubescape/opa-utils/reporthandling/apis"
"github.com/kubescape/opa-utils/reporthandling/attacktrack/v1alpha1"
@@ -184,7 +184,7 @@ type (
// mockOPASessionObj builds an OPASessionObj from a JSON fixture.
func mockOPASessionObj(t testing.TB) *cautils.OPASessionObj {
buf, err := os.ReadFile(filepath.Join(currentDir(), "testdata", "mock_opasessionobj.json"))
buf, err := os.ReadFile(filepath.Join(testutils.CurrentDir(), "testdata", "mock_opasessionobj.json"))
require.NoError(t, err)
var v mockableOPASessionObj
@@ -349,9 +349,3 @@ func hijackedClient(t testing.TB, srv *testServer) *http.Client {
Transport: newInterceptor(transport, mockURL.Host),
}
}
func currentDir() string {
_, filename, _, _ := runtime.Caller(1)
return filepath.Dir(filename)
}

12
internal/testutils/dir.go Normal file
View File

@@ -0,0 +1,12 @@
package testutils
import (
"path/filepath"
"runtime"
)
func CurrentDir() string {
_, filename, _, _ := runtime.Caller(1)
return filepath.Dir(filename)
}