mirror of https://github.com/status-im/consul.git
75 lines
2.7 KiB
Go
75 lines
2.7 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package peering
|
|
|
|
import (
|
|
"github.com/hashicorp/consul/acl"
|
|
"github.com/hashicorp/consul/agent/structs"
|
|
"github.com/hashicorp/consul/proto/private/pbpeering"
|
|
)
|
|
|
|
// same certificate that appears in our connect tests
|
|
var validCA = `
|
|
-----BEGIN CERTIFICATE-----
|
|
MIICmDCCAj6gAwIBAgIBBzAKBggqhkjOPQQDAjAWMRQwEgYDVQQDEwtDb25zdWwg
|
|
Q0EgNzAeFw0xODA1MjExNjMzMjhaFw0yODA1MTgxNjMzMjhaMBYxFDASBgNVBAMT
|
|
C0NvbnN1bCBDQSA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAER0qlxjnRcMEr
|
|
iSGlH7G7dYU7lzBEmLUSMZkyBbClmyV8+e8WANemjn+PLnCr40If9cmpr7RnC9Qk
|
|
GTaLnLiF16OCAXswggF3MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/
|
|
MGgGA1UdDgRhBF8xZjo5MTpjYTo0MTo4ZjphYzo2NzpiZjo1OTpjMjpmYTo0ZTo3
|
|
NTo1YzpkODpmMDo1NTpkZTpiZTo3NTpiODozMzozMTpkNToyNDpiMDowNDpiMzpl
|
|
ODo5Nzo1Yjo3ZTBqBgNVHSMEYzBhgF8xZjo5MTpjYTo0MTo4ZjphYzo2NzpiZjo1
|
|
OTpjMjpmYTo0ZTo3NTo1YzpkODpmMDo1NTpkZTpiZTo3NTpiODozMzozMTpkNToy
|
|
NDpiMDowNDpiMzplODo5Nzo1Yjo3ZTA/BgNVHREEODA2hjRzcGlmZmU6Ly8xMjRk
|
|
ZjVhMC05ODIwLTc2YzMtOWFhOS02ZjYyMTY0YmExYzIuY29uc3VsMD0GA1UdHgEB
|
|
/wQzMDGgLzAtgisxMjRkZjVhMC05ODIwLTc2YzMtOWFhOS02ZjYyMTY0YmExYzIu
|
|
Y29uc3VsMAoGCCqGSM49BAMCA0gAMEUCIQDzkkI7R+0U12a+zq2EQhP/n2mHmta+
|
|
fs2hBxWIELGwTAIgLdO7RRw+z9nnxCIA6kNl//mIQb+PGItespiHZKAz74Q=
|
|
-----END CERTIFICATE-----
|
|
`
|
|
var invalidCA = `
|
|
-----BEGIN CERTIFICATE-----
|
|
not valid
|
|
-----END CERTIFICATE-----
|
|
`
|
|
|
|
var validAddress = "1.2.3.4:80"
|
|
var validHostnameAddress = "foo.bar.baz:80"
|
|
|
|
var validServerName = "server.consul"
|
|
|
|
var validPeerID = "peer1"
|
|
|
|
// TODO(peering): the test methods below are exposed to prevent duplication,
|
|
// these should be removed at same time tests in peering_test get refactored.
|
|
// XXX: we can't put the existing tests in service_test.go into the peering
|
|
// package because it causes an import cycle by importing the top-level consul
|
|
// package (which correctly imports the agent/rpc/peering package)
|
|
|
|
// TestPeering is a test utility for generating a pbpeering.Peering with valid
|
|
// data along with the peerName, state and index.
|
|
func TestPeering(peerName string, state pbpeering.PeeringState, meta map[string]string) *pbpeering.Peering {
|
|
return &pbpeering.Peering{
|
|
Name: peerName,
|
|
PeerCAPems: []string{validCA},
|
|
PeerServerAddresses: []string{validAddress},
|
|
PeerServerName: validServerName,
|
|
State: state,
|
|
PeerID: validPeerID,
|
|
Meta: meta,
|
|
Partition: acl.DefaultPartitionName,
|
|
}
|
|
}
|
|
|
|
// TestPeeringToken is a test utility for generating a valid peering token
|
|
// with the given peerID for use in test cases
|
|
func TestPeeringToken(peerID string) structs.PeeringToken {
|
|
return structs.PeeringToken{
|
|
CA: []string{validCA},
|
|
ServerAddresses: []string{validAddress},
|
|
ServerName: validServerName,
|
|
PeerID: peerID,
|
|
}
|
|
}
|