Skip to content

Commit 232050c

Browse files
authored
Merge pull request #4365 from nickmango/bug/cla-authorized-test
Bug/Authorized API tests
2 parents bed19f1 + 1f4dba1 commit 232050c

2 files changed

Lines changed: 91 additions & 61 deletions

File tree

cla-backend-go/v2/signatures/service.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -447,12 +447,13 @@ func (s *Service) IsUserAuthorized(ctx context.Context, lfid, claGroupId string)
447447
hasSigned := false
448448

449449
response := models.LfidAuthorizedResponse{
450-
ClaGroupID: claGroupId,
451-
Lfid: lfid,
452-
Authorized: false,
453-
ICLA: false,
454-
CCLA: false,
455-
CCLARequiresICLA: false,
450+
ClaGroupID: claGroupId,
451+
Lfid: lfid,
452+
Authorized: false,
453+
ICLA: false,
454+
CCLA: false,
455+
CCLARequiresICLA: false,
456+
CompanyAffiliation: false,
456457
}
457458

458459
// fetch cla group

cla-backend-go/v2/signatures/service_test.go

Lines changed: 84 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)