Files
threshold-plugin-gcp/internal/credential/options_test.go
T
Elim Tsiagbey 89c8ee2d6d feat: Set default GCP Scope (#16)
* feat: Set default GCP Scope

Update the GCP credential configuration to include a default scope for GCP access. The default scope is set to `https://www.googleapis.com/auth/cloud-platform` as recommended by [GCP's Best Practice](https://cloud.google.com/compute/docs/access/service-accounts#scopes_best_practice). This allows controlling the service account's access by granting it IAM roles.
2024-10-30 13:58:45 -04:00

124 lines
3.3 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package credential
import (
"testing"
"time"
"github.com/stretchr/testify/require"
)
func Test_getOpts(t *testing.T) {
t.Parallel()
t.Run("WithCredentialsConfig", func(t *testing.T) {
c := &Config{
ProjectId: "test",
ClientEmail: "test",
}
opts, err := getOpts(WithCredentialsConfig(c))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithCredentialsConfig = c
require.Equal(t, opts, testOpts)
})
t.Run("WithCredsLastRotatedTime", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Empty(t, opts.WithCredsLastRotatedTime)
tm := time.Now()
opts, err = getOpts(WithCredsLastRotatedTime(tm))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithCredsLastRotatedTime = tm
require.Equal(t, opts, testOpts)
})
t.Run("WithClientEmail", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Empty(t, opts.WithClientEmail)
email := "test"
opts, err = getOpts(WithClientEmail(email))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithClientEmail = email
require.Equal(t, opts, testOpts)
})
t.Run("WithProjectId", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Empty(t, opts.WithProjectId)
projectID := "test"
opts, err = getOpts(WithProjectId(projectID))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithProjectId = projectID
require.Equal(t, opts, testOpts)
})
t.Run("WithTargetServiceAccountId", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Empty(t, opts.WithTargetServiceAccountId)
serviceAccountID := "test"
opts, err = getOpts(WithTargetServiceAccountId(serviceAccountID))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithTargetServiceAccountId = serviceAccountID
require.Equal(t, opts, testOpts)
})
t.Run("WithZone", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Empty(t, opts.WithZone)
zone := "test"
opts, err = getOpts(WithZone(zone))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithZone = zone
require.Equal(t, opts, testOpts)
})
t.Run("WithPrivateKey", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Empty(t, opts.WithPrivateKey)
privateKey := "test"
opts, err = getOpts(WithPrivateKey(privateKey))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithPrivateKey = privateKey
require.Equal(t, opts, testOpts)
})
t.Run("WithPrivateKeyId", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Empty(t, opts.WithPrivateKeyId)
privateKeyID := "test"
opts, err = getOpts(WithPrivateKeyId(privateKeyID))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithPrivateKeyId = privateKeyID
require.Equal(t, opts, testOpts)
})
t.Run("WithScopes", func(t *testing.T) {
opts, err := getOpts()
require.NoError(t, err)
require.Equal(t, []string{defaultGCPScope}, opts.WithScopes)
scopes := []string{"test"}
opts, err = getOpts(WithScopes(scopes))
require.NoError(t, err)
testOpts := getDefaultOptions()
testOpts.WithScopes = scopes
require.Equal(t, opts, testOpts)
})
}