@@ -10,6 +10,8 @@ import (
1010 "testing"
1111
1212 v1Models "github.com/communitybridge/easycla/cla-backend-go/gen/v1/models"
13+ "github.com/communitybridge/easycla/cla-backend-go/gen/v2/models"
14+
1315 // mock_signatures "github.com/communitybridge/easycla/cla-backend-go/v2/signatures/mock_v1_signatures"
1416 mock_company "github.com/communitybridge/easycla/cla-backend-go/company/mocks"
1517 ini "github.com/communitybridge/easycla/cla-backend-go/init"
@@ -20,36 +22,14 @@ import (
2022 "github.com/stretchr/testify/assert"
2123)
2224
23- func TestService_IsUserAuthorized_User_Not_Found (t * testing.T ) {
24- // TestIsUserAuthorized test case
25- lfid := "foolfid"
26- projectID := "project-1234"
27-
28- ctrl := gomock .NewController (t )
29- defer ctrl .Finish ()
30-
31- awsSession , err := ini .GetAWSSession ()
32- if err != nil {
33- assert .Fail (t , "unable to create AWS session" )
34- }
35-
36- mockUserService := mock_users .NewMockService (ctrl )
37- mockUserService .EXPECT ().GetUserByLFUserName (lfid ).Return (nil , nil )
38-
39- service := NewService (awsSession , "" , nil , nil , nil , nil , nil , mockUserService , nil )
40-
41- result , err := service .IsUserAuthorized (context .Background (), lfid , projectID )
42-
43- assert .Nil (t , err )
44- assert .False (t , result .Authorized )
45- }
46-
47- func TestService_IsUserAuthorized_CCLA_Requires_ICLA (t * testing.T ) {
25+ func TestService_IsUserAuthorized (t * testing.T ) {
4826 type testCase struct {
4927 lfid string
5028 projectID string
5129 userID string
5230 companyID string
31+ getUserByLFUsernameResult * v1Models.User
32+ getUserByLFUsernameError error
5333 claGroupRequiresICLA bool
5434 getIndividualSignatureResult * v1Models.Signature
5535 getIndividualSignatureError error
@@ -69,6 +49,12 @@ func TestService_IsUserAuthorized_CCLA_Requires_ICLA(t *testing.T) {
6949 userID : "user-123" ,
7050 companyID : "company-123" ,
7151 claGroupRequiresICLA : true ,
52+ getUserByLFUsernameResult : & v1Models.User {
53+ UserID : "user-123" ,
54+ CompanyID : "company-123" ,
55+ LfUsername : "foobar_1" ,
56+ },
57+ getUserByLFUsernameError : nil ,
7258 getIndividualSignatureResult : & v1Models.Signature {
7359 SignatureID : "signature-123" ,
7460 },
@@ -87,6 +73,12 @@ func TestService_IsUserAuthorized_CCLA_Requires_ICLA(t *testing.T) {
8773 userID : "user-123" ,
8874 companyID : "company-123" ,
8975 claGroupRequiresICLA : false ,
76+ getUserByLFUsernameResult : & v1Models.User {
77+ UserID : "user-123" ,
78+ CompanyID : "company-123" ,
79+ LfUsername : "foobar_2" ,
80+ },
81+ getUserByLFUsernameError : nil ,
9082 getIndividualSignatureResult : & v1Models.Signature {
9183 SignatureID : "signature-123" ,
9284 },
@@ -100,11 +92,17 @@ func TestService_IsUserAuthorized_CCLA_Requires_ICLA(t *testing.T) {
10092 expectedCompanyAffiliation : true ,
10193 },
10294 {
103- lfid : "foobar_3" ,
104- projectID : "project-123" ,
105- userID : "user-123" ,
106- companyID : "company-123" ,
107- claGroupRequiresICLA : true ,
95+ lfid : "foobar_3" ,
96+ projectID : "project-123" ,
97+ userID : "user-123" ,
98+ companyID : "company-123" ,
99+ getUserByLFUsernameResult : & v1Models.User {
100+ UserID : "user-123" ,
101+ CompanyID : "company-123" ,
102+ LfUsername : "foobar_3" ,
103+ },
104+ getUserByLFUsernameError : nil ,
105+ claGroupRequiresICLA : true ,
108106 getIndividualSignatureResult : & v1Models.Signature {
109107 SignatureID : "signature-123" ,
110108 },
@@ -118,10 +116,16 @@ func TestService_IsUserAuthorized_CCLA_Requires_ICLA(t *testing.T) {
118116 expectedCompanyAffiliation : true ,
119117 },
120118 {
121- lfid : "foobar_4" ,
122- projectID : "project-123" ,
123- userID : "user-123" ,
124- companyID : "company-123" ,
119+ lfid : "foobar_4" ,
120+ projectID : "project-123" ,
121+ userID : "user-123" ,
122+ companyID : "company-123" ,
123+ getUserByLFUsernameResult : & v1Models.User {
124+ UserID : "user-123" ,
125+ CompanyID : "company-123" ,
126+ LfUsername : "foobar_4" ,
127+ },
128+ getUserByLFUsernameError : nil ,
125129 claGroupRequiresICLA : true ,
126130 getIndividualSignatureResult : nil ,
127131 getIndividualSignatureError : errors .New ("some error" ),
@@ -134,10 +138,15 @@ func TestService_IsUserAuthorized_CCLA_Requires_ICLA(t *testing.T) {
134138 expectedCompanyAffiliation : true ,
135139 },
136140 {
137- lfid : "foobar_5" ,
138- projectID : "project-123" ,
139- userID : "user-123" ,
140- companyID : "company-123" ,
141+ lfid : "foobar_5" ,
142+ projectID : "project-123" ,
143+ userID : "user-123" ,
144+ companyID : "company-123" ,
145+ getUserByLFUsernameResult : & v1Models.User {
146+ UserID : "user-123" ,
147+ CompanyID : "company-123" ,
148+ },
149+ getUserByLFUsernameError : nil ,
141150 claGroupRequiresICLA : true ,
142151 getIndividualSignatureResult : nil ,
143152 getIndividualSignatureError : errors .New ("some error" ),
@@ -149,47 +158,67 @@ func TestService_IsUserAuthorized_CCLA_Requires_ICLA(t *testing.T) {
149158 expectedCCLA : false ,
150159 expectedCompanyAffiliation : true ,
151160 },
161+ {
162+ lfid : "foobar_6" ,
163+ projectID : "project-123" ,
164+ userID : "user-123" ,
165+ companyID : "company-123" ,
166+ getUserByLFUsernameResult : nil ,
167+ getUserByLFUsernameError : nil ,
168+ claGroupRequiresICLA : true ,
169+ expectedAuthorized : false ,
170+ expectedCCLARequiresICLA : true ,
171+ expectedICLA : false ,
172+ expectedCCLA : false ,
173+ expectedCompanyAffiliation : false ,
174+ },
152175 }
153176
154177 for _ , tc := range cases {
155178 t .Run (fmt .Sprintf ("LFID=%s ProjectID=%s" , tc .lfid , tc .projectID ), func (t * testing.T ) {
156179 ctrl := gomock .NewController (t )
157180 defer ctrl .Finish ()
158181
182+ var err error
183+ var result * models.LfidAuthorizedResponse
184+
159185 awsSession , err := ini .GetAWSSession ()
160186 if err != nil {
161187 assert .Fail (t , "unable to create AWS session" )
162188 }
163189
164- mockUserService := mock_users .NewMockService (ctrl )
165- mockUserService .EXPECT ().GetUserByLFUserName (tc .lfid ).Return (& v1Models.User {
166- UserID : tc .userID ,
167- CompanyID : tc .companyID ,
168- }, nil )
169-
170190 mockProjectService := mock_project .NewMockService (ctrl )
171191 mockProjectService .EXPECT ().GetCLAGroupByID (context .Background (), tc .projectID ).Return (& v1Models.ClaGroup {
172192 ProjectID : tc .projectID ,
173193 ProjectCCLARequiresICLA : tc .claGroupRequiresICLA ,
174194 }, nil )
175195
176- mockSignatureService := mock_v1_signatures .NewMockSignatureService (ctrl )
196+ mockUserService := mock_users .NewMockService (ctrl )
197+ mockUserService .EXPECT ().GetUserByLFUserName (tc .lfid ).Return (tc .getUserByLFUsernameResult , tc .getUserByLFUsernameError )
177198
178- approved := true
179- signed := true
180- mockSignatureService .EXPECT ().GetIndividualSignature (context .Background (), tc .projectID , tc .userID , & approved , & signed ).Return (tc .getIndividualSignatureResult , tc .getIndividualSignatureError )
199+ if tc .getUserByLFUsernameResult != nil {
181200
182- mockSignatureService . EXPECT (). ProcessEmployeeSignature ( context . Background (), gomock . Any (), gomock . Any (), gomock . Any ()). Return ( tc . processEmployeeSignatureResult , tc . processEmployeeSignatureError )
201+ mockSignatureService := mock_v1_signatures . NewMockSignatureService ( ctrl )
183202
184- mockCompanyService := mock_company .NewMockIService (ctrl )
185- mockCompanyService .EXPECT ().GetCompany (context .Background (), tc .companyID ).Return (& v1Models.Company {
186- CompanyID : tc .companyID ,
187- }, nil )
203+ approved := true
204+ signed := true
205+ mockSignatureService .EXPECT ().GetIndividualSignature (context .Background (), tc .projectID , tc .userID , & approved , & signed ).Return (tc .getIndividualSignatureResult , tc .getIndividualSignatureError )
188206
189- service := NewService ( awsSession , "" , mockProjectService , mockCompanyService , mockSignatureService , nil , nil , mockUserService , nil )
207+ mockSignatureService . EXPECT (). ProcessEmployeeSignature ( context . Background (), gomock . Any (), gomock . Any (), gomock . Any ()). Return ( tc . processEmployeeSignatureResult , tc . processEmployeeSignatureError )
190208
191- result , err := service .IsUserAuthorized (context .Background (), tc .lfid , tc .projectID )
209+ mockCompanyService := mock_company .NewMockIService (ctrl )
210+ mockCompanyService .EXPECT ().GetCompany (context .Background (), tc .companyID ).Return (& v1Models.Company {
211+ CompanyID : tc .companyID ,
212+ }, nil )
192213
214+ service := NewService (awsSession , "" , mockProjectService , mockCompanyService , mockSignatureService , nil , nil , mockUserService , nil )
215+
216+ result , err = service .IsUserAuthorized (context .Background (), tc .lfid , tc .projectID )
217+
218+ } else {
219+ service := NewService (awsSession , "" , mockProjectService , nil , nil , nil , nil , mockUserService , nil )
220+ result , err = service .IsUserAuthorized (context .Background (), tc .lfid , tc .projectID )
221+ }
193222 assert .Nil (t , err )
194223 assert .Equal (t , tc .expectedAuthorized , result .Authorized )
195224 assert .Equal (t , tc .expectedCCLARequiresICLA , result .CCLARequiresICLA )
0 commit comments