blob: 428c06fa051816da81dda77aa554b4b2bcfe26f0 [file] [log] [blame]
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package hcvault
import (
"testing"
)
func TestGetEndpointPaths(t *testing.T) {
for _, tc := range []struct {
desc string
uri string
enc string
dec string
err string
}{
{
desc: "simple",
uri: "hcvault://vault.example.com/transit/keys/foo",
enc: "transit/encrypt/foo",
dec: "transit/decrypt/foo",
},
{
desc: "escaped",
uri: "hcvault://vault.example.com/transit/keys/this%2Band+that",
enc: "transit/encrypt/this%2Band+that",
dec: "transit/decrypt/this%2Band+that",
},
{
desc: "sub-path",
uri: "hcvault://vault.example.com/teams/billing/something/transit/keys/pci-key",
enc: "teams/billing/something/transit/encrypt/pci-key",
dec: "teams/billing/something/transit/decrypt/pci-key",
},
{
desc: "transit-twice",
uri: "hcvault://vault.example.com/transit/keys/something/transit/keys/my-key",
enc: "transit/keys/something/transit/encrypt/my-key",
dec: "transit/keys/something/transit/decrypt/my-key",
},
{
desc: "hyphen-host",
uri: "hcvault://vault-prd.example.com/transit/keys/hi",
enc: "transit/encrypt/hi",
dec: "transit/decrypt/hi",
},
{
desc: "no-host",
uri: "hcvault:///transit/keys/hi",
enc: "transit/encrypt/hi",
dec: "transit/decrypt/hi",
},
{
desc: "mount-not-named-transit",
uri: "hcvault:///cipher/keys/hi",
enc: "cipher/encrypt/hi",
dec: "cipher/decrypt/hi",
},
{
desc: "http",
uri: "http://vault.com/hi",
err: "malformed keyURL",
},
{
desc: "no-path",
uri: "hcvault://vault.com",
err: "malformed keyURL",
},
{
desc: "slash-only",
uri: "hcvault://vault.com/",
err: "malformed keyURL",
},
{
desc: "not-transit",
uri: "hcvault://vault.example.com/foo/bar/baz",
err: "malformed keyURL",
},
{
desc: "not-end-of-path",
uri: "hcvault://vault.example.com/transit/keys/bar/baz",
err: "malformed keyURL",
},
} {
t.Run(tc.desc, func(t *testing.T) {
encPath, decPath, err := getEndpointPaths(tc.uri)
if err == nil {
if tc.err != "" {
t.Errorf("getEndpointPaths(%q) err is nil, want %q", tc.uri, tc.err)
}
} else {
if tc.err != err.Error() {
t.Errorf("getEndpointPaths(%q) err = %v; want %q", tc.uri, err, tc.err)
}
}
if encPath != tc.enc {
t.Errorf("getEndpointPaths(%q) encryptPath = %q, want %q", tc.uri, encPath, tc.enc)
}
if decPath != tc.dec {
t.Errorf("getEndpointPaths(%q) decryptPath = %q, want %q", tc.uri, decPath, tc.dec)
}
})
}
}
OSZAR »