feat: add support for optional external auth providers (#12021)

This commit is contained in:
Kayla Washburn-Love
2024-02-21 11:18:38 -07:00
committed by GitHub
parent 78c9f82719
commit 475c3650ca
39 changed files with 1495 additions and 727 deletions

View File

@ -26,9 +26,9 @@ import (
"github.com/coder/coder/v2/enterprise/coderd/license"
"github.com/coder/coder/v2/provisioner/echo"
"github.com/coder/coder/v2/provisionerd"
provisionerdproto "github.com/coder/coder/v2/provisionerd/proto"
"github.com/coder/coder/v2/provisionerd/proto"
"github.com/coder/coder/v2/provisionersdk"
"github.com/coder/coder/v2/provisionersdk/proto"
sdkproto "github.com/coder/coder/v2/provisionersdk/proto"
"github.com/coder/coder/v2/testutil"
)
@ -62,7 +62,7 @@ func TestProvisionerDaemonServe(t *testing.T) {
if assert.Len(t, daemons, 1) {
assert.Equal(t, daemonName, daemons[0].Name)
assert.Equal(t, buildinfo.Version(), daemons[0].Version)
assert.Equal(t, provisionerdproto.VersionCurrent.String(), daemons[0].APIVersion)
assert.Equal(t, proto.CurrentVersion.String(), daemons[0].APIVersion)
}
})
@ -149,7 +149,7 @@ func TestProvisionerDaemonServe(t *testing.T) {
q.Add("provisioner", "echo")
// Set a different (newer) version than the current.
v := apiversion.New(provisionerdproto.CurrentMajor+1, provisionerdproto.CurrentMinor+1)
v := apiversion.New(proto.CurrentMajor+1, proto.CurrentMinor+1)
q.Add("version", v.String())
srvURL.RawQuery = q.Encode()
@ -165,7 +165,7 @@ func TestProvisionerDaemonServe(t *testing.T) {
b, err := io.ReadAll(resp.Body)
require.NoError(t, err)
// The below means that provisionerd tried to serve us, checked our api version, and said nope.
require.Contains(t, string(b), "server is at version 1.0, behind requested major version 2.1")
require.Contains(t, string(b), fmt.Sprintf("server is at version %s, behind requested major version %s", proto.CurrentVersion.String(), v.String()))
})
t.Run("NoLicense", func(t *testing.T) {
@ -259,13 +259,13 @@ func TestProvisionerDaemonServe(t *testing.T) {
authToken := uuid.NewString()
data, err := echo.Tar(&echo.Responses{
Parse: echo.ParseComplete,
ProvisionPlan: []*proto.Response{{
Type: &proto.Response_Plan{
Plan: &proto.PlanComplete{
Resources: []*proto.Resource{{
ProvisionPlan: []*sdkproto.Response{{
Type: &sdkproto.Response_Plan{
Plan: &sdkproto.PlanComplete{
Resources: []*sdkproto.Resource{{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
Agents: []*sdkproto.Agent{{
Id: uuid.NewString(),
Name: "example",
}},
@ -383,10 +383,10 @@ func TestProvisionerDaemonServe(t *testing.T) {
}()
connector := provisionerd.LocalProvisioners{
string(database.ProvisionerTypeEcho): proto.NewDRPCProvisionerClient(terraformClient),
string(database.ProvisionerTypeEcho): sdkproto.NewDRPCProvisionerClient(terraformClient),
}
another := codersdk.New(client.URL)
pd := provisionerd.New(func(ctx context.Context) (provisionerdproto.DRPCProvisionerDaemonClient, error) {
pd := provisionerd.New(func(ctx context.Context) (proto.DRPCProvisionerDaemonClient, error) {
return another.ServeProvisionerDaemon(ctx, codersdk.ServeProvisionerDaemonRequest{
ID: uuid.New(),
Name: testutil.MustRandString(t, 63),
@ -415,17 +415,17 @@ func TestProvisionerDaemonServe(t *testing.T) {
authToken := uuid.NewString()
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
Parse: echo.ParseComplete,
ProvisionApply: []*proto.Response{{
Type: &proto.Response_Apply{
Apply: &proto.ApplyComplete{
Resources: []*proto.Resource{{
ProvisionApply: []*sdkproto.Response{{
Type: &sdkproto.Response_Apply{
Apply: &sdkproto.ApplyComplete{
Resources: []*sdkproto.Resource{{
Name: "example",
Type: "aws_instance",
DailyCost: 1,
Agents: []*proto.Agent{{
Agents: []*sdkproto.Agent{{
Id: uuid.NewString(),
Name: "example",
Auth: &proto.Agent_Token{
Auth: &sdkproto.Agent_Token{
Token: authToken,
},
}},