package main import "testing" // 1226/AC1: given a module whose process declares bus and has no issued account, when a machine is composed, the // push's warning names issue, and the machine's other modules are composed (AC4: nothing is refused). func TestAProcessAccountNobodyIssuedIsWarnedOfNamingIssue(t *testing.T) { m := mailSenderWithProcess() got := processAccountWarning(m, "laptop", "broker-send", nil) want := "laptop/mesh-mail process send: its bus account is not issued — mesh-controller.issue laptop mesh-mail" if got != want { t.Fatalf("1226/AC1: the warning is %q, want %q", got, want) } // Other names are not this rule's. if processAccountWarning(m, "laptop", "broker", nil) != "" || processAccountWarning(m, "laptop", "broker-other", nil) != "" || processAccountWarning(m, "laptop", "token", nil) != "" { t.Fatal("1226/AC1: a name that is no declared process's account was warned of") } if got := processAccountWarning(m, "laptop", "broker-send", []string{"laptop.mesh-mail.send"}); got != "" { t.Fatalf("1226/AC3: an issued account was warned of: %q", got) } } // 1226/AC3: an account already issued is not issued again by a later delivery or assignment. func TestAnIssuedProcessAccountIsNotIssuedAgain(t *testing.T) { m := mailSenderWithProcess() if got := processAccountsMissing(m, "laptop", nil); len(got) != 1 || got[0].Process != "send" { t.Fatalf("1226/AC3: an account not issued is not missing: %v", got) } if got := processAccountsMissing(m, "laptop", []string{"laptop.mesh-mail.send"}); len(got) != 0 { t.Fatalf("1226/AC3: an issued account would be issued again: %v", got) } if got := processAccountsMissing(m, "ace", []string{"laptop.mesh-mail.send"}); len(got) != 1 { t.Fatalf("1226/AC3: another machine's account stands in for this one's: %v", got) } }