Ctrl K
ComunidadGuías…

cli/oauth2provider_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package cli_test

import (
	"bytes"
	"net/http"
	"testing"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"

	"github.com/coder/coder/v2/cli/clitest"
	"github.com/coder/coder/v2/coderd/coderdtest"
	"github.com/coder/coder/v2/codersdk"
	"github.com/coder/coder/v2/testutil"
)

func TestOAuth2ProviderDCR(t *testing.T) {
	t.Parallel()

	tests := []struct {
		name        string
		command     string
		expectValue bool
		expectMsg   string
	}{
		{
			name:        "Enable",
			command:     "enable",
			expectValue: true,
			expectMsg:   "Dynamic client registration is now enabled.",
		},
		{
			name:        "Disable",
			command:     "disable",
			expectValue: false,
			expectMsg:   "Dynamic client registration is now disabled.",
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			t.Parallel()

			client := coderdtest.New(t, nil)
			_ = coderdtest.CreateFirstUser(t, client)

			inv, root := clitest.New(t, "oauth2-provider", "dcr", tt.command)
			clitest.SetupConfig(t, client, root)

			var buf bytes.Buffer
			inv.Stderr = &buf
			err := inv.Run()
			require.NoError(t, err)
			assert.Contains(t, buf.String(), tt.expectMsg)

			ctx := testutil.Context(t, testutil.WaitShort)
			settings, err := client.OAuth2ProviderSettings(ctx)
			require.NoError(t, err)
			require.NotNil(t, settings.DynamicClientRegistrationEnabled, "GET must always return a concrete value")
			require.Equal(t, tt.expectValue, *settings.DynamicClientRegistrationEnabled)
		})
	}
}

func TestOAuth2ProviderDCR_RegularUser(t *testing.T) {
	t.Parallel()

	client := coderdtest.New(t, nil)
	owner := coderdtest.CreateFirstUser(t, client)
	anotherClient, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)

	inv, root := clitest.New(t, "oauth2-provider", "dcr", "enable")
	clitest.SetupConfig(t, anotherClient, root)

	var buf bytes.Buffer
	inv.Stderr = &buf
	err := inv.Run()
	var sdkError *codersdk.Error
	require.Error(t, err)
	require.ErrorAsf(t, err, &sdkError, "error should be of type *codersdk.Error")
	assert.Equal(t, http.StatusForbidden, sdkError.StatusCode())
}