package plugin import ( "testing" "github.com/moby/moby/api/types/plugin" ) func TestValidatePrivileges(t *testing.T) { testData := map[string]struct { requiredPrivileges plugin.Privileges privileges plugin.Privileges result bool }{ "diff-len": { requiredPrivileges: []plugin.Privilege{ {Name: "Privilege1", Description: "Description", Value: []string{"abc", "def", "ghi"}}, }, privileges: []plugin.Privilege{ {Name: "Privilege1", Description: "Description", Value: []string{"abc", "def", "ghi"}}, {Name: "Privilege2", Description: "Description", Value: []string{"123", "456", "789"}}, }, result: false, }, "diff-value": { requiredPrivileges: []plugin.Privilege{ {Name: "Privilege1", Description: "Description", Value: []string{"abc", "def", "GHI"}}, {Name: "Privilege2", Description: "Description", Value: []string{"123", "456", "***"}}, }, privileges: []plugin.Privilege{ {Name: "Privilege1", Description: "Description", Value: []string{"abc", "def", "ghi"}}, {Name: "Privilege2", Description: "Description", Value: []string{"123", "456", "789"}}, }, result: false, }, "diff-order-but-same-value": { requiredPrivileges: []plugin.Privilege{ {Name: "Privilege1", Description: "Description", Value: []string{"abc", "def", "GHI"}}, {Name: "Privilege2", Description: "Description", Value: []string{"123", "456", "789"}}, }, privileges: []plugin.Privilege{ {Name: "Privilege2", Description: "Description", Value: []string{"123", "456", "789"}}, {Name: "Privilege1", Description: "Description", Value: []string{"GHI", "abc", "def"}}, }, result: true, }, "single-element-same": { requiredPrivileges: []plugin.Privilege{ {Name: "allow-all-devices", Description: "Description", Value: []string{"true"}}, }, privileges: []plugin.Privilege{ {Name: "allow-all-devices", Description: "Description", Value: []string{"true"}}, }, result: true, }, "single-element-diff-value": { requiredPrivileges: []plugin.Privilege{ {Name: "allow-all-devices", Description: "Description", Value: []string{"false"}}, }, privileges: []plugin.Privilege{ {Name: "allow-all-devices", Description: "Description", Value: []string{"true"}}, }, result: false, }, "first-sorted-element-diff-value": { requiredPrivileges: []plugin.Privilege{ {Name: "allow-all-devices", Description: "Description", Value: []string{"false"}}, {Name: "network", Description: "Description", Value: []string{"host"}}, }, privileges: []plugin.Privilege{ {Name: "allow-all-devices", Description: "Description", Value: []string{"true"}}, {Name: "network", Description: "Description", Value: []string{"host"}}, }, result: false, }, "empty-privileges": { requiredPrivileges: []plugin.Privilege{}, privileges: []plugin.Privilege{}, result: true, }, } for key, data := range testData { t.Run(key, func(t *testing.T) { err := validatePrivileges(data.requiredPrivileges, data.privileges) if (err == nil) != data.result { t.Fatalf("expected result to be %t, got %t", data.result, (err == nil)) } }) } }