mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-12-14 10:24:24 -05:00
114 lines
2.3 KiB
Go
114 lines
2.3 KiB
Go
|
/*
|
||
|
Copyright (c) Edgeless Systems GmbH
|
||
|
|
||
|
SPDX-License-Identifier: AGPL-3.0-only
|
||
|
*/
|
||
|
|
||
|
package uri
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
"go.uber.org/goleak"
|
||
|
)
|
||
|
|
||
|
func TestMain(m *testing.M) {
|
||
|
goleak.VerifyTestMain(m)
|
||
|
}
|
||
|
|
||
|
func TestMasterSecretURI(t *testing.T) {
|
||
|
cfg := MasterSecret{
|
||
|
Key: []byte("key"),
|
||
|
Salt: []byte("salt"),
|
||
|
}
|
||
|
|
||
|
checkURI(t, cfg, DecodeMasterSecretFromURI)
|
||
|
}
|
||
|
|
||
|
func TestAWSURI(t *testing.T) {
|
||
|
cfg := AWSConfig{
|
||
|
KeyName: "key",
|
||
|
Region: "region",
|
||
|
AccessKeyID: "accessKeyID",
|
||
|
AccessKey: "accessKey",
|
||
|
}
|
||
|
|
||
|
checkURI(t, cfg, DecodeAWSConfigFromURI)
|
||
|
}
|
||
|
|
||
|
func TestAWSS3URI(t *testing.T) {
|
||
|
cfg := AWSS3Config{
|
||
|
Bucket: "bucket",
|
||
|
Region: "region",
|
||
|
AccessKeyID: "accessKeyID",
|
||
|
AccessKey: "accessKey",
|
||
|
}
|
||
|
|
||
|
checkURI(t, cfg, DecodeAWSS3ConfigFromURI)
|
||
|
}
|
||
|
|
||
|
func TestAzureURI(t *testing.T) {
|
||
|
cfg := AzureConfig{
|
||
|
KeyName: "key",
|
||
|
TenantID: "tenantID",
|
||
|
ClientID: "clientID",
|
||
|
ClientSecret: "clientSecret",
|
||
|
VaultName: "vaultName",
|
||
|
VaultType: DefaultCloud,
|
||
|
}
|
||
|
|
||
|
checkURI(t, cfg, DecodeAzureConfigFromURI)
|
||
|
}
|
||
|
|
||
|
func TestAzureBlobURI(t *testing.T) {
|
||
|
cfg := AzureBlobConfig{
|
||
|
StorageAccount: "accountName",
|
||
|
Container: "containerName",
|
||
|
TenantID: "tenantID",
|
||
|
ClientID: "clientID",
|
||
|
ClientSecret: "clientSecret",
|
||
|
}
|
||
|
|
||
|
checkURI(t, cfg, DecodeAzureBlobConfigFromURI)
|
||
|
}
|
||
|
|
||
|
func TestGCPURI(t *testing.T) {
|
||
|
cfg := GCPConfig{
|
||
|
KeyName: "key",
|
||
|
ProjectID: "project",
|
||
|
Location: "location",
|
||
|
KeyRing: "keyRing",
|
||
|
CredentialsPath: "/path/to/credentials",
|
||
|
}
|
||
|
|
||
|
checkURI(t, cfg, DecodeGCPConfigFromURI)
|
||
|
}
|
||
|
|
||
|
func TestGoogleCloudStorageURI(t *testing.T) {
|
||
|
cfg := GoogleCloudStorageConfig{
|
||
|
ProjectID: "project",
|
||
|
Bucket: "bucket",
|
||
|
CredentialsPath: "/path/to/credentials",
|
||
|
}
|
||
|
|
||
|
checkURI(t, cfg, DecodeGoogleCloudStorageConfigFromURI)
|
||
|
}
|
||
|
|
||
|
type cfgStruct interface {
|
||
|
EncodeToURI() string
|
||
|
}
|
||
|
|
||
|
func checkURI[T any](t *testing.T, cfg cfgStruct, decodeFunc func(string) (T, error)) {
|
||
|
t.Helper()
|
||
|
require := require.New(t)
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
uri := cfg.EncodeToURI()
|
||
|
decoded, err := decodeFunc(uri)
|
||
|
require.NoError(err, "failed to decode URI to config: %s", uri)
|
||
|
|
||
|
assert.Equal(cfg, decoded, "decoded config does not match original config")
|
||
|
}
|