143 lines
2.7 KiB
Go
143 lines
2.7 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
|
// Copyright Authors of K9s
|
|
|
|
package port_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/derailed/k9s/internal/port"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestContainerPortSpecMatch(t *testing.T) {
|
|
uu := map[string]struct {
|
|
ann string
|
|
spec port.ContainerPortSpec
|
|
e bool
|
|
}{
|
|
"full": {
|
|
ann: "c1::4321:1234",
|
|
spec: port.ContainerPortSpec{
|
|
Container: "c1",
|
|
PortNum: "1234",
|
|
},
|
|
e: true,
|
|
},
|
|
"no-port-name": {
|
|
ann: "c1::4321:p1/1234",
|
|
spec: port.ContainerPortSpec{
|
|
Container: "c1",
|
|
PortName: "p1",
|
|
PortNum: "1234",
|
|
},
|
|
e: true,
|
|
},
|
|
"port-name-hosed": {
|
|
ann: "c1::4321:blee/1234",
|
|
spec: port.ContainerPortSpec{
|
|
Container: "c1",
|
|
PortName: "fred",
|
|
PortNum: "1234",
|
|
},
|
|
},
|
|
"container-name-hosed": {
|
|
ann: "c2::4321:fred/1234",
|
|
spec: port.ContainerPortSpec{
|
|
Container: "c1",
|
|
PortName: "blee",
|
|
PortNum: "1234",
|
|
},
|
|
},
|
|
"port-num-hosed": {
|
|
ann: "c2::4321:1235",
|
|
spec: port.ContainerPortSpec{
|
|
Container: "c1",
|
|
PortNum: "1234",
|
|
},
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
pf, err := port.ParsePF(u.ann)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, u.e, u.spec.Match(pf))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestContainerPortSpecString(t *testing.T) {
|
|
uu := map[string]struct {
|
|
spec port.ContainerPortSpec
|
|
e string
|
|
}{
|
|
"full": {
|
|
spec: port.NewPortSpec("c1", "p1", 1234),
|
|
e: "c1::1234(p1)",
|
|
},
|
|
"no-name": {
|
|
spec: port.NewPortSpec("c1", "", 1234),
|
|
e: "c1::1234",
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
assert.Equal(t, u.e, u.spec.String())
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestContainerPortSpecsMatch(t *testing.T) {
|
|
uu := map[string]struct {
|
|
ann string
|
|
specs port.ContainerPortSpecs
|
|
e bool
|
|
}{
|
|
"full": {
|
|
ann: "c1::4321:p1",
|
|
specs: port.ContainerPortSpecs{
|
|
port.NewPortSpec("c1", "p1", 1234),
|
|
port.NewPortSpec("c2", "p2", 1235),
|
|
},
|
|
e: true,
|
|
},
|
|
"no-name": {
|
|
ann: "c1::4321",
|
|
specs: port.ContainerPortSpecs{
|
|
port.NewPortSpec("c1", "", 4321),
|
|
port.NewPortSpec("c2", "p2", 1235),
|
|
},
|
|
e: true,
|
|
},
|
|
"name-hosed": {
|
|
ann: "c1::4321:p4",
|
|
specs: port.ContainerPortSpecs{
|
|
port.NewPortSpec("c1", "p1", 1234),
|
|
port.NewPortSpec("c2", "p2", 1235),
|
|
},
|
|
},
|
|
"numb-hosed": {
|
|
ann: "c1::4321:1235",
|
|
specs: port.ContainerPortSpecs{
|
|
port.NewPortSpec("c1", "p1", 1234),
|
|
port.NewPortSpec("c2", "p2", 1236),
|
|
},
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
pf, err := port.ParsePF(u.ann)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, u.e, u.specs.Match(pf))
|
|
})
|
|
}
|
|
}
|