github.com/vmware/govmomi@v0.51.0/simulator/user_directory_test.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package simulator 6 7 import ( 8 "context" 9 "testing" 10 11 "github.com/vmware/govmomi" 12 "github.com/vmware/govmomi/simulator/esx" 13 "github.com/vmware/govmomi/vim25/methods" 14 "github.com/vmware/govmomi/vim25/types" 15 ) 16 17 func TestUserDirectory(t *testing.T) { 18 s := New(NewServiceInstance(NewContext(), esx.ServiceContent, esx.RootFolder)) 19 20 ts := s.NewServer() 21 defer ts.Close() 22 23 ctx := context.Background() 24 25 c, err := govmomi.NewClient(ctx, ts.URL, true) 26 if err != nil { 27 t.Fatal(err) 28 } 29 30 var tests = []struct { 31 findUsers bool 32 findGroups bool 33 }{ 34 {true, true}, 35 {true, false}, 36 {false, true}, 37 {false, false}, 38 } 39 40 ref := *c.ServiceContent.UserDirectory 41 42 for _, test := range tests { 43 req := types.RetrieveUserGroups{ 44 This: ref, 45 SearchStr: "root", 46 ExactMatch: true, 47 FindUsers: test.findUsers, 48 FindGroups: test.findGroups, 49 } 50 51 result, err := methods.RetrieveUserGroups(ctx, c.Client, &req) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 expectedSize := 0 57 if test.findGroups { 58 expectedSize++ 59 } 60 if test.findUsers { 61 expectedSize++ 62 } 63 64 if len(result.Returnval) != expectedSize { 65 t.Fatalf("expect search result for root is %d; got %d", expectedSize, len(result.Returnval)) 66 } 67 68 for _, u := range result.Returnval { 69 if u.GetUserSearchResult().Principal != "root" { 70 t.Fatalf("expect principal to be root; got %s", u.GetUserSearchResult().Principal) 71 } 72 if !test.findGroups && u.GetUserSearchResult().Group { 73 t.Fatal("expect search result is non-group; got group") 74 } 75 if !test.findUsers && !u.GetUserSearchResult().Group { 76 t.Fatal("expect search result is non-user; got user") 77 } 78 } 79 } 80 } 81 82 func TestUserDirectoryExactlyMatch(t *testing.T) { 83 s := New(NewServiceInstance(NewContext(), esx.ServiceContent, esx.RootFolder)) 84 85 ts := s.NewServer() 86 defer ts.Close() 87 88 ctx := context.Background() 89 90 c, err := govmomi.NewClient(ctx, ts.URL, true) 91 if err != nil { 92 t.Fatal(err) 93 } 94 95 var tests = []struct { 96 exactly bool 97 search string 98 expectedSize int 99 }{ 100 {true, "root", 2}, 101 {false, "ROO", 2}, 102 } 103 104 ref := *c.ServiceContent.UserDirectory 105 106 for _, test := range tests { 107 req := types.RetrieveUserGroups{ 108 This: ref, 109 SearchStr: test.search, 110 ExactMatch: test.exactly, 111 FindUsers: true, 112 FindGroups: true, 113 } 114 115 result, err := methods.RetrieveUserGroups(ctx, c.Client, &req) 116 if err != nil { 117 t.Fatal(err) 118 } 119 120 if err != nil { 121 t.Fatal(err) 122 } 123 124 if len(result.Returnval) != test.expectedSize { 125 t.Fatalf("expect result contains %d results; got %d", test.expectedSize, len(result.Returnval)) 126 } 127 } 128 }