53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package structs
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestStructs_ACL_IsSame(t *testing.T) {
|
|
acl := &ACL{
|
|
ID: "guid",
|
|
Name: "An ACL for testing",
|
|
Type: "client",
|
|
Rules: "service \"\" { policy = \"read\" }",
|
|
}
|
|
if !acl.IsSame(acl) {
|
|
t.Fatalf("should be equal to itself")
|
|
}
|
|
|
|
other := &ACL{
|
|
ID: "guid",
|
|
Name: "An ACL for testing",
|
|
Type: "client",
|
|
Rules: "service \"\" { policy = \"read\" }",
|
|
RaftIndex: RaftIndex{
|
|
CreateIndex: 1,
|
|
ModifyIndex: 2,
|
|
},
|
|
}
|
|
if !acl.IsSame(other) || !other.IsSame(acl) {
|
|
t.Fatalf("should not care about Raft fields")
|
|
}
|
|
|
|
check := func(twiddle, restore func()) {
|
|
if !acl.IsSame(other) || !other.IsSame(acl) {
|
|
t.Fatalf("should be the same")
|
|
}
|
|
|
|
twiddle()
|
|
if acl.IsSame(other) || other.IsSame(acl) {
|
|
t.Fatalf("should not be the same")
|
|
}
|
|
|
|
restore()
|
|
if !acl.IsSame(other) || !other.IsSame(acl) {
|
|
t.Fatalf("should be the same")
|
|
}
|
|
}
|
|
|
|
check(func() { other.ID = "nope" }, func() { other.ID = "guid" })
|
|
check(func() { other.Name = "nope" }, func() { other.Name = "An ACL for testing" })
|
|
check(func() { other.Type = "management" }, func() { other.Type = "client" })
|
|
check(func() { other.Rules = "" }, func() { other.Rules = "service \"\" { policy = \"read\" }" })
|
|
}
|