package broker_test import ( "slices" "testing" "github.com/novox/mesh-controller/internal/broker" "github.com/novox/mesh-controller/internal/link" ) // The facts the control plane states are named twice — in the grant that permits them and in the code // that states them — because `link` imports `broker` and the dependency cannot go the other way. So a // test keeps them agreeing: a subject the grant omits is refused at the moment the mesh has something // to say, and one the grant adds that nothing states is authority nobody uses. // // An external test package, because it may import both while neither imports the other. func TestTheFactsTheGrantPermitsAreTheFactsTheMeshStates(t *testing.T) { if broker.ControllerSeat != link.MeshControllerSeat { t.Fatalf("the grant is written for the %q seat and the mesh states its facts under %q", broker.ControllerSeat, link.MeshControllerSeat) } for _, event := range []string{link.KeyApplied, link.KeyRefused, link.KeyBuiltBefore} { if !slices.Contains(broker.ControllerStates, event) { t.Errorf("the mesh states %q and its account may not publish it", event) } } if len(broker.ControllerStates) != 3 { t.Errorf("the grant permits %v, which is more than the mesh states", broker.ControllerStates) } }