mirror of
https://github.com/coder/coder.git
synced 2025-07-06 15:41:45 +00:00
* Initial agent * fix: Use buffered reader in peer to fix ShortBuffer This prevents a io.ErrShortBuffer from occurring when the byte slice being read is smaller than the chunks sent from the opposite pipe. This makes sense for unordered connections, where transmission is not guarunteed, but does not make sense for TCP-like connections. We use a bufio.Reader when ordered to ensure data isn't lost. * SSH server works! * Start Windows support * Something works * Refactor pty package to support Windows spawn * SSH server now works on Windows * Fix non-Windows * Fix Linux PTY render * FIx linux build tests * Remove agent and wintest * Add test for Windows resize * Fix linting errors * Add Windows environment variables * Add strings import * Add comment for attrs * Add goleak * Add require import
164 lines
5.5 KiB
Go
164 lines
5.5 KiB
Go
package coderd_test
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/coder/coder/coderd"
|
|
"github.com/coder/coder/coderd/coderdtest"
|
|
"github.com/coder/coder/codersdk"
|
|
"github.com/coder/coder/database"
|
|
"github.com/coder/coder/provisioner/echo"
|
|
"github.com/coder/coder/provisionersdk/proto"
|
|
)
|
|
|
|
func TestPostProjectImportByOrganization(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("FileNotFound", func(t *testing.T) {
|
|
t.Parallel()
|
|
client := coderdtest.New(t)
|
|
user := coderdtest.CreateInitialUser(t, client)
|
|
_, err := client.CreateProjectImportJob(context.Background(), user.Organization, coderd.CreateProjectImportJobRequest{
|
|
StorageMethod: database.ProvisionerStorageMethodFile,
|
|
StorageSource: "bananas",
|
|
Provisioner: database.ProvisionerTypeEcho,
|
|
})
|
|
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 TestProjectImportJobSchemasByID(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("ListRunning", 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.ProjectImportJobSchemas(context.Background(), user.Organization, job.ID)
|
|
var apiErr *codersdk.Error
|
|
require.ErrorAs(t, err, &apiErr)
|
|
require.Equal(t, http.StatusPreconditionFailed, apiErr.StatusCode())
|
|
})
|
|
t.Run("List", 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_Complete{
|
|
Complete: &proto.Parse_Complete{
|
|
ParameterSchemas: []*proto.ParameterSchema{{
|
|
Name: "example",
|
|
DefaultDestination: &proto.ParameterDestination{
|
|
Scheme: proto.ParameterDestination_PROVISIONER_VARIABLE,
|
|
},
|
|
}},
|
|
},
|
|
},
|
|
}},
|
|
Provision: echo.ProvisionComplete,
|
|
})
|
|
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)
|
|
schemas, err := client.ProjectImportJobSchemas(context.Background(), user.Organization, job.ID)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, schemas)
|
|
require.Len(t, schemas, 1)
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJobParametersByID(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("ListRunning", 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.ProjectImportJobSchemas(context.Background(), user.Organization, job.ID)
|
|
var apiErr *codersdk.Error
|
|
require.ErrorAs(t, err, &apiErr)
|
|
require.Equal(t, http.StatusPreconditionFailed, apiErr.StatusCode())
|
|
})
|
|
t.Run("List", 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_Complete{
|
|
Complete: &proto.Parse_Complete{
|
|
ParameterSchemas: []*proto.ParameterSchema{{
|
|
Name: "example",
|
|
RedisplayValue: true,
|
|
DefaultSource: &proto.ParameterSource{
|
|
Scheme: proto.ParameterSource_DATA,
|
|
Value: "hello",
|
|
},
|
|
DefaultDestination: &proto.ParameterDestination{
|
|
Scheme: proto.ParameterDestination_PROVISIONER_VARIABLE,
|
|
},
|
|
}},
|
|
},
|
|
},
|
|
}},
|
|
Provision: echo.ProvisionComplete,
|
|
})
|
|
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)
|
|
params, err := client.ProjectImportJobParameters(context.Background(), user.Organization, job.ID)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, params)
|
|
require.Len(t, params, 1)
|
|
require.Equal(t, "hello", params[0].SourceValue)
|
|
})
|
|
}
|
|
|
|
func TestProjectImportJobResourcesByID(t *testing.T) {
|
|
t.Parallel()
|
|
t.Run("ListRunning", 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.ProjectImportJobResources(context.Background(), user.Organization, job.ID)
|
|
var apiErr *codersdk.Error
|
|
require.ErrorAs(t, err, &apiErr)
|
|
require.Equal(t, http.StatusPreconditionFailed, apiErr.StatusCode())
|
|
})
|
|
t.Run("List", 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: echo.ParseComplete,
|
|
Provision: []*proto.Provision_Response{{
|
|
Type: &proto.Provision_Response_Complete{
|
|
Complete: &proto.Provision_Complete{
|
|
Resources: []*proto.Resource{{
|
|
Name: "some",
|
|
Type: "example",
|
|
}},
|
|
},
|
|
},
|
|
}},
|
|
})
|
|
coderdtest.AwaitProjectImportJob(t, client, user.Organization, job.ID)
|
|
resources, err := client.ProjectImportJobResources(context.Background(), user.Organization, job.ID)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, resources)
|
|
require.Len(t, resources, 2)
|
|
require.Equal(t, "some", resources[0].Name)
|
|
require.Equal(t, "example", resources[0].Type)
|
|
})
|
|
}
|