88 "google.golang.org/api/cloudresourcemanager/v1"
99)
1010
11- type Binding []cloudresourcemanager.Binding
11+ type Binding []* cloudresourcemanager.Binding
1212
1313func (b Binding ) Len () int {
1414 return len (b )
@@ -22,13 +22,78 @@ func (b Binding) Less(i, j int) bool {
2222 return b [i ].Role < b [j ].Role
2323}
2424
25- func TestIamMapRolesToMembers (t * testing.T ) {
25+ func TestIamRolesToMembersBinding (t * testing.T ) {
2626 table := []struct {
27- input []cloudresourcemanager.Binding
27+ expect []* cloudresourcemanager.Binding
28+ input map [string ]map [string ]bool
29+ }{
30+ {
31+ expect : []* cloudresourcemanager.Binding {
32+ {
33+ Role : "role-1" ,
34+ Members : []string {
35+ "member-1" ,
36+ "member-2" ,
37+ },
38+ },
39+ },
40+ input : map [string ]map [string ]bool {
41+ "role-1" : map [string ]bool {
42+ "member-1" : true ,
43+ "member-2" : true ,
44+ },
45+ },
46+ },
47+ {
48+ expect : []* cloudresourcemanager.Binding {
49+ {
50+ Role : "role-1" ,
51+ Members : []string {
52+ "member-1" ,
53+ "member-2" ,
54+ },
55+ },
56+ },
57+ input : map [string ]map [string ]bool {
58+ "role-1" : map [string ]bool {
59+ "member-1" : true ,
60+ "member-2" : true ,
61+ },
62+ },
63+ },
64+ {
65+ expect : []* cloudresourcemanager.Binding {
66+ {
67+ Role : "role-1" ,
68+ Members : []string {},
69+ },
70+ },
71+ input : map [string ]map [string ]bool {
72+ "role-1" : map [string ]bool {},
73+ },
74+ },
75+ }
76+
77+ for _ , test := range table {
78+ got := rolesToMembersBinding (test .input )
79+
80+ sort .Sort (Binding (got ))
81+ for i , _ := range got {
82+ sort .Strings (got [i ].Members )
83+ }
84+
85+ if ! reflect .DeepEqual (derefBindings (got ), derefBindings (test .expect )) {
86+ t .Errorf ("got %+v, expected %+v" , derefBindings (got ), derefBindings (test .expect ))
87+ }
88+ }
89+ }
90+ func TestIamRolesToMembersMap (t * testing.T ) {
91+ table := []struct {
92+ input []* cloudresourcemanager.Binding
2893 expect map [string ]map [string ]bool
2994 }{
3095 {
31- input : []cloudresourcemanager.Binding {
96+ input : []* cloudresourcemanager.Binding {
3297 {
3398 Role : "role-1" ,
3499 Members : []string {
@@ -45,7 +110,7 @@ func TestIamMapRolesToMembers(t *testing.T) {
45110 },
46111 },
47112 {
48- input : []cloudresourcemanager.Binding {
113+ input : []* cloudresourcemanager.Binding {
49114 {
50115 Role : "role-1" ,
51116 Members : []string {
@@ -64,7 +129,7 @@ func TestIamMapRolesToMembers(t *testing.T) {
64129 },
65130 },
66131 {
67- input : []cloudresourcemanager.Binding {
132+ input : []* cloudresourcemanager.Binding {
68133 {
69134 Role : "role-1" ,
70135 },
@@ -76,20 +141,29 @@ func TestIamMapRolesToMembers(t *testing.T) {
76141 }
77142
78143 for _ , test := range table {
79- got := mapRolesToMembers (test .input )
144+ got := rolesToMembersMap (test .input )
80145 if ! reflect .DeepEqual (got , test .expect ) {
81146 t .Errorf ("got %+v, expected %+v" , got , test .expect )
82147 }
83148 }
84149}
85150
151+ func derefBindings (b []* cloudresourcemanager.Binding ) []cloudresourcemanager.Binding {
152+ db := make ([]cloudresourcemanager.Binding , len (b ))
153+
154+ for i , v := range b {
155+ db [i ] = * v
156+ }
157+ return db
158+ }
159+
86160func TestIamMergeBindings (t * testing.T ) {
87161 table := []struct {
88- input []cloudresourcemanager.Binding
162+ input []* cloudresourcemanager.Binding
89163 expect []cloudresourcemanager.Binding
90164 }{
91165 {
92- input : []cloudresourcemanager.Binding {
166+ input : []* cloudresourcemanager.Binding {
93167 {
94168 Role : "role-1" ,
95169 Members : []string {
@@ -116,7 +190,7 @@ func TestIamMergeBindings(t *testing.T) {
116190 },
117191 },
118192 {
119- input : []cloudresourcemanager.Binding {
193+ input : []* cloudresourcemanager.Binding {
120194 {
121195 Role : "role-1" ,
122196 Members : []string {
@@ -191,8 +265,8 @@ func TestIamMergeBindings(t *testing.T) {
191265 sort .Strings (got [i ].Members )
192266 }
193267
194- if ! reflect .DeepEqual (got , test .expect ) {
195- t .Errorf ("\n got %+v\n expected %+v" , got , test .expect )
268+ if ! reflect .DeepEqual (derefBindings ( got ) , test .expect ) {
269+ t .Errorf ("\n got %+v\n expected %+v" , derefBindings ( got ) , test .expect )
196270 }
197271 }
198272}
0 commit comments