mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
* Refactor parameter parsing to return nil values if none computed * Refactor parameter to allow for hiding redisplay * Refactor parameters to enable schema matching * Refactor provisionerd to dynamically update parameter schemas * Refactor job update for provisionerd * Handle multiple states correctly when provisioning a project * Add project import job resource table * Basic creation flow works! * Create project fully works!!! * Only show job status if completed * Add create workspace support * Replace Netflix/go-expect with ActiveState * Fix linting errors * Use forked chzyer/readline * Add create workspace CLI * Add CLI test * Move jobs to their own APIs * Remove go-expect * Fix requested changes * Skip workspacecreate test on windows
147 lines
4.0 KiB
Go
147 lines
4.0 KiB
Go
package codersdk_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/coder/coder/coderd"
|
|
"github.com/coder/coder/coderd/coderdtest"
|
|
"github.com/coder/coder/provisioner/echo"
|
|
"github.com/coder/coder/provisionersdk/proto"
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCreateProjectImportJob(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Error", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
_, err := client.CreateProjectImportJob(context.Background(), "", coderd.CreateProjectImportJobRequest{})
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("Create", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
user := coderdtest.CreateInitialUser(t, client)
|
|
_ = coderdtest.CreateProjectImportJob(t, client, user.Organization, nil)
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJob(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Error", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
_, err := client.ProjectImportJob(context.Background(), "", uuid.New())
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("Get", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
user := coderdtest.CreateInitialUser(t, client)
|
|
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, nil)
|
|
_, err := client.ProjectImportJob(context.Background(), user.Organization, job.ID)
|
|
require.NoError(t, err)
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJobLogsBefore(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Error", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
_, err := client.ProjectImportJobLogsBefore(context.Background(), "", uuid.New(), time.Time{})
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("Get", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
user := coderdtest.CreateInitialUser(t, client)
|
|
coderdtest.NewProvisionerDaemon(t, client)
|
|
before := time.Now()
|
|
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, &echo.Responses{
|
|
Parse: []*proto.Parse_Response{{
|
|
Type: &proto.Parse_Response_Log{
|
|
Log: &proto.Log{
|
|
Output: "hello",
|
|
},
|
|
},
|
|
}},
|
|
Provision: echo.ProvisionComplete,
|
|
})
|
|
logs, err := client.ProjectImportJobLogsAfter(context.Background(), user.Organization, job.ID, before)
|
|
require.NoError(t, err)
|
|
<-logs
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJobLogsAfter(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Error", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
_, err := client.ProjectImportJobLogsAfter(context.Background(), "", uuid.New(), time.Time{})
|
|
require.Error(t, err)
|
|
})
|
|
|
|
t.Run("Get", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
user := coderdtest.CreateInitialUser(t, client)
|
|
coderdtest.NewProvisionerDaemon(t, client)
|
|
job := coderdtest.CreateProjectImportJob(t, client, user.Organization, &echo.Responses{
|
|
Parse: []*proto.Parse_Response{{
|
|
Type: &proto.Parse_Response_Log{
|
|
Log: &proto.Log{
|
|
Output: "hello",
|
|
},
|
|
},
|
|
}, {
|
|
Type: &proto.Parse_Response_Complete{
|
|
Complete: &proto.Parse_Complete{},
|
|
},
|
|
}},
|
|
Provision: echo.ProvisionComplete,
|
|
})
|
|
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)
|
|
logs, err := client.ProjectImportJobLogsBefore(context.Background(), user.Organization, job.ID, time.Time{})
|
|
require.NoError(t, err)
|
|
require.Len(t, logs, 1)
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJobSchemas(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Error", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
_, err := client.ProjectImportJobSchemas(context.Background(), "", uuid.New())
|
|
require.Error(t, err)
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJobParameters(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Error", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
_, err := client.ProjectImportJobParameters(context.Background(), "", uuid.New())
|
|
require.Error(t, err)
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJobResources(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("Error", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
_, err := client.ProjectImportJobResources(context.Background(), "", uuid.New())
|
|
require.Error(t, err)
|
|
})
|
|
}
|