Files
portainer/api/kubernetes/cli/resize_test.go
2026-04-18 01:53:10 -03:00

64 lines
1.3 KiB
Go

package cli
import (
"testing"
"github.com/stretchr/testify/require"
"k8s.io/client-go/tools/remotecommand"
)
func Test_TerminalSizeQueue(t *testing.T) {
t.Parallel()
t.Run("Next returns pushed size", func(t *testing.T) {
q := NewTerminalSizeQueue()
defer q.Close()
go q.Push(80, 24)
size := q.Next()
require.NotNil(t, size)
require.Equal(t, uint16(80), size.Width)
require.Equal(t, uint16(24), size.Height)
})
t.Run("Next returns sizes in push order", func(t *testing.T) {
q := NewTerminalSizeQueue()
defer q.Close()
go q.Push(80, 24)
size := q.Next()
require.NotNil(t, size)
require.Equal(t, uint16(80), size.Width)
require.Equal(t, uint16(24), size.Height)
go q.Push(120, 40)
size = q.Next()
require.NotNil(t, size)
require.Equal(t, uint16(120), size.Width)
require.Equal(t, uint16(40), size.Height)
})
t.Run("Close causes Next to return nil", func(t *testing.T) {
q := NewTerminalSizeQueue()
q.Close()
size := q.Next()
require.Nil(t, size)
})
t.Run("Next unblocks when queue is closed", func(t *testing.T) {
q := NewTerminalSizeQueue()
result := make(chan *remotecommand.TerminalSize, 1)
go func() { result <- q.Next() }()
q.Close()
require.Nil(t, <-result)
})
t.Run("Close is idempotent", func(t *testing.T) {
q := NewTerminalSizeQueue()
q.Close()
q.Close()
})
}