Add glob support to infra_auth_allowed

Bug: skia:12264
Change-Id: I6af8413accffda0100f66e01beabb18f587069de
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/432058
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
diff --git a/go/allowed/infra_auth_allowed.go b/go/allowed/infra_auth_allowed.go
index 8b29ef6..b71fa7b 100644
--- a/go/allowed/infra_auth_allowed.go
+++ b/go/allowed/infra_auth_allowed.go
@@ -25,6 +25,7 @@
 type Group struct {
 	Members []string `json:"members"`
 	Nested  []string `json:"nested"`
+	Globs   []string `json:"globs"`
 }
 
 // Response represents the format returned from GROUP_URL_TEMPLATE.
@@ -114,6 +115,10 @@
 		}
 		members = append(members, indirectMembers...)
 	}
+	// Get all globs.
+	for _, glob := range r.Group.Globs {
+		members = append(members, glob)
+	}
 	return members, nil
 }
 
diff --git a/go/allowed/infra_auth_allowed_test.go b/go/allowed/infra_auth_allowed_test.go
index eab80ae..18284f7 100644
--- a/go/allowed/infra_auth_allowed_test.go
+++ b/go/allowed/infra_auth_allowed_test.go
@@ -39,6 +39,9 @@
     ],
     "nested": [
       "nested_group"
+    ],
+    "globs": [
+      "user:*@gotham.org"
     ]
   }
 }`
@@ -61,6 +64,7 @@
 	assert.True(t, i.Member("foo@chromium.org"))
 	assert.True(t, i.Member("test@example.org"))
 	assert.True(t, i.Member("nested-user@example.org"))
+	assert.True(t, i.Member("batman@gotham.org"))
 	assert.False(t, i.Member("example.org"))
 	assert.False(t, i.Member("bar@example.org"))
 }