The mesh runs on the seat's bus alone (novox/hq ADR 0131, design 28 task 5.5). The old transport's consume loop, build request, tool ask, management API and account scoping are deleted, and the bus switch with them; the controller connects to the broker seat and to nothing else. The store-window tests keep their assertions on a bus-less fake, and the tests that only made sense for the old transport's in-memory holding go with it.
29 lines
1.2 KiB
Go
29 lines
1.2 KiB
Go
package broker
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
// Which bus the mesh is on is one fact, and being told about both is refused.
|
|
//
|
|
|
|
// The controller's own credential arrives in its address, and has to be readable out of it — its user
|
|
// is created by the installer at a bootstrap password, before the controller exists to mint one.
|
|
func TestACredentialIsReadOutOfABusAddress(t *testing.T) {
|
|
for _, c := range []struct{ in, user, password, bare string }{
|
|
{"nats://controller:secret@127.0.0.1:4222", "controller", "secret", "nats://127.0.0.1:4222"},
|
|
{"controller:secret@127.0.0.1:4222", "controller", "secret", "127.0.0.1:4222"},
|
|
{"nats://127.0.0.1:4222", "", "", "nats://127.0.0.1:4222"},
|
|
{"127.0.0.1:4222", "", "", "127.0.0.1:4222"},
|
|
// A password containing an at-sign: split on the last one, or the address becomes part of the
|
|
// credential and the connection goes somewhere nobody named.
|
|
{"nats://controller:a@b@127.0.0.1:4222", "controller", "a@b", "nats://127.0.0.1:4222"},
|
|
} {
|
|
user, password, bare := CredentialIn(c.in)
|
|
if user != c.user || password != c.password || bare != c.bare {
|
|
t.Errorf("%q read as %q/%q at %q; wanted %q/%q at %q",
|
|
c.in, user, password, bare, c.user, c.password, c.bare)
|
|
}
|
|
}
|
|
}
|