mirror of https://github.com/status-im/consul.git
58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
|
package connect
|
||
|
|
||
|
import (
|
||
|
"net/url"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
// testSpiffeIDCases contains the test cases for parsing and encoding
|
||
|
// the SPIFFE IDs. This is a global since it is used in multiple test functions.
|
||
|
var testSpiffeIDCases = []struct {
|
||
|
Name string
|
||
|
URI string
|
||
|
Struct interface{}
|
||
|
ParseError string
|
||
|
}{
|
||
|
{
|
||
|
"invalid scheme",
|
||
|
"http://google.com/",
|
||
|
nil,
|
||
|
"scheme",
|
||
|
},
|
||
|
|
||
|
{
|
||
|
"basic service ID",
|
||
|
"spiffe://1234.consul/ns/default/dc/dc01/svc/web",
|
||
|
&SpiffeIDService{
|
||
|
Host: "1234.consul",
|
||
|
Namespace: "default",
|
||
|
Datacenter: "dc01",
|
||
|
Service: "web",
|
||
|
},
|
||
|
"",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func TestParseSpiffeID(t *testing.T) {
|
||
|
for _, tc := range testSpiffeIDCases {
|
||
|
t.Run(tc.Name, func(t *testing.T) {
|
||
|
assert := assert.New(t)
|
||
|
|
||
|
// Parse the URI, should always be valid
|
||
|
uri, err := url.Parse(tc.URI)
|
||
|
assert.Nil(err)
|
||
|
|
||
|
// Parse the ID and check the error/return value
|
||
|
actual, err := ParseSpiffeID(uri)
|
||
|
assert.Equal(tc.ParseError != "", err != nil, "error value")
|
||
|
if err != nil {
|
||
|
assert.Contains(err.Error(), tc.ParseError)
|
||
|
return
|
||
|
}
|
||
|
assert.Equal(tc.Struct, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|