@@ -3,16 +3,84 @@ package gcp
33import (
44 "context"
55 "testing"
6- )
76
8- func TestProjectValidator (t * testing.T ) {
9- validator := & ProjectValidator {ProjectIDs : []string {"allowed-1" , "allowed-2" }}
7+ "github.com/stretchr/testify/assert"
8+ "google.golang.org/api/cloudresourcemanager/v1"
9+ )
1010
11- if err := validator .ValidateProject (context .Background (), "not-allowed" ); err == nil {
12- t .Errorf ("ProjectValidator.ValidateProject() = nil, want err" )
11+ func TestProjectValidator_ValidateProject (t * testing.T ) {
12+ ctx := context .Background ()
13+ type fields struct {
14+ ProjectIDs []string
15+ }
16+ type args struct {
17+ in0 context.Context
18+ projectID string
1319 }
20+ tests := []struct {
21+ name string
22+ fields fields
23+ args args
24+ assertion assert.ErrorAssertionFunc
25+ }{
26+ {"allowed-1" , fields {[]string {"allowed-1" , "allowed-2" }}, args {ctx , "allowed-1" }, assert .NoError },
27+ {"allowed-2" , fields {[]string {"allowed-1" , "allowed-2" }}, args {ctx , "allowed-2" }, assert .NoError },
28+ {"empty" , fields {nil }, args {ctx , "allowed-1" }, assert .NoError },
29+ {"not allowed" , fields {[]string {"allowed-1" , "allowed-2" }}, args {ctx , "not-allowed" }, assert .Error },
30+ }
31+ for _ , tt := range tests {
32+ t .Run (tt .name , func (t * testing.T ) {
33+ p := & ProjectValidator {
34+ ProjectIDs : tt .fields .ProjectIDs ,
35+ }
36+ tt .assertion (t , p .ValidateProject (tt .args .in0 , tt .args .projectID ))
37+ })
38+ }
39+ }
1440
15- if err := validator .ValidateProject (context .Background (), "allowed-2" ); err != nil {
16- t .Errorf ("ProjectValidator.ValidateProject() = %v, want nil" , err )
41+ func TestNewOrganizationValidator (t * testing.T ) {
42+ got := NewOrganizationValidator ([]string {"project-1" , "project-2" }, "organization" )
43+ assert .Equal (t , & OrganizationValidator {
44+ ProjectValidator : & ProjectValidator {ProjectIDs : []string {"project-1" , "project-2" }},
45+ OrganizationID : "organization" ,
46+ }, got )
47+ }
48+
49+ func TestOrganizationValidator_ValidateProject (t * testing.T ) {
50+ ctx := context .Background ()
51+ _ , err := cloudresourcemanager .NewService (ctx )
52+ skip := (err != nil )
53+
54+ type fields struct {
55+ ProjectValidator * ProjectValidator
56+ OrganizationID string
57+ }
58+ type args struct {
59+ ctx context.Context
60+ projectID string
61+ }
62+ tests := []struct {
63+ name string
64+ skip bool
65+ fields fields
66+ args args
67+ assertion assert.ErrorAssertionFunc
68+ }{
69+ {"ok projects" , false , fields {& ProjectValidator {ProjectIDs : []string {"allowed" }}, "" }, args {ctx , "allowed" }, assert .NoError },
70+ {"fail projects" , false , fields {& ProjectValidator {ProjectIDs : []string {"allowed" }}, "organization" }, args {ctx , "not-allowed" }, assert .Error },
71+ {"fail organization" , skip , fields {& ProjectValidator {ProjectIDs : []string {"allowed" }}, "fake-organization" }, args {ctx , "allowed" }, assert .Error },
72+ }
73+ for _ , tt := range tests {
74+ t .Run (tt .name , func (t * testing.T ) {
75+ p := & OrganizationValidator {
76+ ProjectValidator : tt .fields .ProjectValidator ,
77+ OrganizationID : tt .fields .OrganizationID ,
78+ }
79+ if tt .skip {
80+ t .SkipNow ()
81+ return
82+ }
83+ tt .assertion (t , p .ValidateProject (tt .args .ctx , tt .args .projectID ))
84+ })
1785 }
1886}
0 commit comments