Files
kubescape/core/cautils/portforwarder_test.go
rcohencyberarmor 884af50c0b Support control cluster from cli (#1391)
* adding operator CLI to kubescape

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* support http requet for trigger in cluster operator

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* create interface for create request payload

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* logs + go mod update

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* docs

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* add relevant system tests

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* linter corrections

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* code review corrections

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* remove non relevant system tests - after code review corrections

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* PR corrections

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* PR corrections

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* change log

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* remove from examples

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* change log

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

* test correction

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>

---------

Signed-off-by: rcohencyberarmor <rcohen@armosec.io>
Co-authored-by: rcohencyberarmor <rcohen@armosec.io>
2023-09-27 16:31:04 +03:00

135 lines
3.0 KiB
Go

package cautils
import (
"context"
"testing"
"github.com/kubescape/k8s-interface/k8sinterface"
"github.com/stretchr/testify/assert"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/discovery"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/rest"
)
type FakeCachedDiscoveryClient struct {
discovery.DiscoveryInterface
Groups []*metav1.APIGroup
Resources []*metav1.APIResourceList
PreferredResources []*metav1.APIResourceList
Invalidations int
}
func Test_getPortForwardingPort(t *testing.T) {
testCases := []struct {
name string
createNewPort bool
port string
expectedPort string
}{
{
name: "test default port",
port: "",
expectedPort: DefaultPortForwardPortValue,
},
{
name: "test set port",
createNewPort: true,
port: "1234",
expectedPort: "1234",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
if tc.createNewPort {
t.Setenv(DefaultPortForwardPortEnv, tc.port)
}
assert.Equal(t, tc.expectedPort, getPortForwardingPort())
})
}
}
func Test_CreatePortForwarder(t *testing.T) {
testCases := []struct {
name string
expectedError error
}{
{
name: "test creation",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
k8sClient := k8sinterface.KubernetesApi{
KubernetesClient: fake.NewSimpleClientset(),
K8SConfig: &rest.Config{
Host: "any",
},
Context: context.TODO(),
}
operatorPod := v1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "first",
Labels: map[string]string{
"app": "operator",
},
},
}
createdOperatorPod, err := k8sClient.KubernetesClient.CoreV1().Pods(kubescapeNamespace).Create(k8sClient.Context, &operatorPod, metav1.CreateOptions{})
assert.Equal(t, nil, err)
_, err = CreatePortForwarder(&k8sClient, createdOperatorPod, "1234", "any")
assert.Equal(t, nil, err)
})
}
}
func Test_GetPortForwardLocalhost(t *testing.T) {
testCases := []struct {
name string
port string
result string
}{
{
name: "test creation",
port: "1234",
result: "localhost",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
k8sClient := k8sinterface.KubernetesApi{
KubernetesClient: fake.NewSimpleClientset(),
K8SConfig: &rest.Config{
Host: "any",
},
Context: context.TODO(),
}
operatorPod := v1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "first",
Labels: map[string]string{
"app": "operator",
},
},
}
createdOperatorPod, err := k8sClient.KubernetesClient.CoreV1().Pods(kubescapeNamespace).Create(k8sClient.Context, &operatorPod, metav1.CreateOptions{})
assert.Equal(t, nil, err)
t.Setenv(DefaultPortForwardPortEnv, tc.port)
pf, err := CreatePortForwarder(&k8sClient, createdOperatorPod, "1234", "any")
assert.Equal(t, nil, err)
result := pf.GetPortForwardLocalhost()
assert.Equal(t, tc.result+":"+getPortForwardingPort(), result)
})
}
}