94 lines
2.1 KiB
Go
94 lines
2.1 KiB
Go
package port_test
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/derailed/k9s/internal/port"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestPreferredPorts(t *testing.T) {
|
|
uu := map[string]struct {
|
|
anns port.Annotations
|
|
specs port.ContainerPortSpecs
|
|
err error
|
|
e string
|
|
}{
|
|
"no-ports": {
|
|
anns: port.Annotations{
|
|
port.K9sPortForwardsKey: "c1::4321:p1",
|
|
},
|
|
err: errors.New("no exposed ports"),
|
|
},
|
|
"no-annotations": {
|
|
specs: port.ContainerPortSpecs{
|
|
{Container: "c1", PortName: "p1", PortNum: "1234"},
|
|
},
|
|
e: "c1::1234:p1",
|
|
},
|
|
"single-numb": {
|
|
anns: port.Annotations{
|
|
port.K9sPortForwardsKey: "c1::4321:1234",
|
|
},
|
|
specs: port.ContainerPortSpecs{
|
|
{Container: "c1", PortName: "p1", PortNum: "1234"},
|
|
},
|
|
e: "c1::4321:1234/1234",
|
|
},
|
|
"single-same": {
|
|
anns: port.Annotations{
|
|
port.K9sPortForwardsKey: "c1::1234",
|
|
},
|
|
specs: port.ContainerPortSpecs{
|
|
{Container: "c1", PortName: "p1", PortNum: "1234"},
|
|
},
|
|
e: "c1::1234:1234/1234",
|
|
},
|
|
"single-mismatch": {
|
|
anns: port.Annotations{
|
|
port.K9sPortForwardsKey: "c2::4321:p1",
|
|
},
|
|
specs: port.ContainerPortSpecs{
|
|
{Container: "c1", PortName: "p1", PortNum: "1234"},
|
|
},
|
|
},
|
|
"multi": {
|
|
anns: port.Annotations{
|
|
port.K9sPortForwardsKey: "c1::4321:1234,c1::5432:2345",
|
|
},
|
|
specs: port.ContainerPortSpecs{
|
|
{Container: "c1", PortName: "p1", PortNum: "1234"},
|
|
{Container: "c1", PortName: "p2", PortNum: "2345"},
|
|
},
|
|
e: "c1::4321:1234/1234,c1::5432:2345/2345",
|
|
},
|
|
"multi-mismatch": {
|
|
anns: port.Annotations{
|
|
port.K9sPortForwardsKey: "c1::4321:1234,c1::5432:2345",
|
|
},
|
|
specs: port.ContainerPortSpecs{
|
|
{Container: "c1", PortName: "p1", PortNum: "1234"},
|
|
{Container: "c2", PortName: "p3", PortNum: "2345"},
|
|
},
|
|
e: "c1::4321:1234/1234",
|
|
},
|
|
}
|
|
|
|
for k := range uu {
|
|
u := uu[k]
|
|
t.Run(k, func(t *testing.T) {
|
|
anns, err := u.anns.PreferredPorts(u.specs)
|
|
assert.Equal(t, u.err, err)
|
|
if err != nil {
|
|
return
|
|
}
|
|
pfs, err := port.ParsePFs(u.e)
|
|
if err != nil {
|
|
pfs = port.PFAnns{}
|
|
}
|
|
assert.Equal(t, pfs, anns)
|
|
})
|
|
}
|
|
}
|