mirror of https://github.com/coder/coder.git
101 lines
2.9 KiB
Go
101 lines
2.9 KiB
Go
package cliui_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/coder/coder/cli/cliui"
|
|
"github.com/coder/coder/coderd/database"
|
|
"github.com/coder/coder/codersdk"
|
|
"github.com/coder/coder/pty/ptytest"
|
|
)
|
|
|
|
func TestWorkspaceResources(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("SingleAgentSSH", func(t *testing.T) {
|
|
t.Parallel()
|
|
ptty := ptytest.New(t)
|
|
done := make(chan struct{})
|
|
go func() {
|
|
err := cliui.WorkspaceResources(ptty.Output(), []codersdk.WorkspaceResource{{
|
|
Type: "google_compute_instance",
|
|
Name: "dev",
|
|
Transition: codersdk.WorkspaceTransitionStart,
|
|
Agents: []codersdk.WorkspaceAgent{{
|
|
Name: "dev",
|
|
Status: codersdk.WorkspaceAgentConnected,
|
|
LifecycleState: codersdk.WorkspaceAgentLifecycleCreated,
|
|
Architecture: "amd64",
|
|
OperatingSystem: "linux",
|
|
}},
|
|
}}, cliui.WorkspaceResourcesOptions{
|
|
WorkspaceName: "example",
|
|
})
|
|
assert.NoError(t, err)
|
|
close(done)
|
|
}()
|
|
ptty.ExpectMatch("coder ssh example")
|
|
<-done
|
|
})
|
|
|
|
t.Run("MultipleStates", func(t *testing.T) {
|
|
t.Parallel()
|
|
ptty := ptytest.New(t)
|
|
disconnected := database.Now().Add(-4 * time.Second)
|
|
done := make(chan struct{})
|
|
go func() {
|
|
err := cliui.WorkspaceResources(ptty.Output(), []codersdk.WorkspaceResource{{
|
|
Transition: codersdk.WorkspaceTransitionStart,
|
|
Type: "google_compute_disk",
|
|
Name: "root",
|
|
}, {
|
|
Transition: codersdk.WorkspaceTransitionStop,
|
|
Type: "google_compute_disk",
|
|
Name: "root",
|
|
}, {
|
|
Transition: codersdk.WorkspaceTransitionStart,
|
|
Type: "google_compute_instance",
|
|
Name: "dev",
|
|
Agents: []codersdk.WorkspaceAgent{{
|
|
CreatedAt: database.Now().Add(-10 * time.Second),
|
|
Status: codersdk.WorkspaceAgentConnecting,
|
|
LifecycleState: codersdk.WorkspaceAgentLifecycleCreated,
|
|
Name: "dev",
|
|
OperatingSystem: "linux",
|
|
Architecture: "amd64",
|
|
}},
|
|
}, {
|
|
Transition: codersdk.WorkspaceTransitionStart,
|
|
Type: "kubernetes_pod",
|
|
Name: "dev",
|
|
Agents: []codersdk.WorkspaceAgent{{
|
|
Status: codersdk.WorkspaceAgentConnected,
|
|
LifecycleState: codersdk.WorkspaceAgentLifecycleReady,
|
|
Name: "go",
|
|
Architecture: "amd64",
|
|
OperatingSystem: "linux",
|
|
}, {
|
|
DisconnectedAt: &disconnected,
|
|
Status: codersdk.WorkspaceAgentDisconnected,
|
|
LifecycleState: codersdk.WorkspaceAgentLifecycleReady,
|
|
Name: "postgres",
|
|
Architecture: "amd64",
|
|
OperatingSystem: "linux",
|
|
}},
|
|
}}, cliui.WorkspaceResourcesOptions{
|
|
WorkspaceName: "dev",
|
|
HideAgentState: false,
|
|
HideAccess: false,
|
|
})
|
|
assert.NoError(t, err)
|
|
close(done)
|
|
}()
|
|
ptty.ExpectMatch("google_compute_disk.root")
|
|
ptty.ExpectMatch("google_compute_instance.dev")
|
|
ptty.ExpectMatch("coder ssh dev.postgres")
|
|
<-done
|
|
})
|
|
}
|