diff --git a/pkg/service/project_test.go b/pkg/service/project_test.go index 0fe8873..d333ec7 100644 --- a/pkg/service/project_test.go +++ b/pkg/service/project_test.go @@ -25,10 +25,8 @@ func TestCreateProject(t *testing.T) { ps := NewProjectService(db, &mazc, getLogger(), true) puuid := uuid.New().String() - ouuid := uuid.New().String() - mock.ExpectQuery(`SELECT "organization"."id", "organization"."name"`). - WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid)) + addFetchExpectation(mock, "organization") mock.ExpectBegin() mock.ExpectQuery(`INSERT INTO "authsrv_project"`). WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(puuid)) @@ -109,8 +107,7 @@ func TestProjectDeleteNonExist(t *testing.T) { puuid := uuid.New().String() - mock.ExpectQuery(`SELECT "project"."id", "project"."name", .* FROM "authsrv_project" AS "project" WHERE`). - WithArgs().WillReturnError(fmt.Errorf("no data available")) + addFailingFetchExpecteation(mock, "project") project := &systemv3.Project{ Metadata: &v3.Metadata{Id: puuid, Name: "project-" + puuid}, @@ -128,18 +125,10 @@ func TestProjectGetByName(t *testing.T) { mazc := mockAuthzClient{} ps := NewProjectService(db, &mazc, getLogger(), true) - partuuid := uuid.New().String() - ouuid := uuid.New().String() puuid := uuid.New().String() - - mock.ExpectQuery(`SELECT "project"."id", "project"."name"`). - WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "organization_id", "partner_id"}).AddRow(puuid, ouuid, partuuid)) - - mock.ExpectQuery(`SELECT "organization"."id", "organization"."name"`). - WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(ouuid)) - - mock.ExpectQuery(`SELECT "partner"."id", "partner"."name"`). - WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"}).AddRow(partuuid)) + addFetchExpectation(mock, "project") + addFetchExpectation(mock, "organization") + addFetchExpectation(mock, "partner") mock.ExpectQuery(`SELECT distinct authsrv_resourcerole.name as role, authsrv_project.name as project, authsrv_group.name as group FROM "authsrv_projectgrouprole" JOIN authsrv_resourcerole ON authsrv_resourcerole.id=authsrv_projectgrouprole.role_id @@ -176,10 +165,9 @@ func TestProjectGetById(t *testing.T) { mazc := mockAuthzClient{} ps := NewProjectService(db, &mazc, getLogger(), true) - puuid := uuid.New().String() + puuid := uuid.NewString() - mock.ExpectQuery(`SELECT "project"."id", "project"."name", .* FROM "authsrv_project" AS "project" WHERE .*id = '` + puuid + `'`). - WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(puuid, "project-"+puuid)) + addFetchByIdExpectation(mock, "project", puuid) project := &systemv3.Project{ Metadata: &v3.Metadata{Id: puuid, Name: "project-" + puuid}, @@ -198,10 +186,7 @@ func TestProjectUpdate(t *testing.T) { mazc := mockAuthzClient{} ps := NewProjectService(db, &mazc, getLogger(), true) - puuid := uuid.New().String() - - mock.ExpectQuery(`SELECT "project"."id", "project"."name", .* FROM "authsrv_project" AS "project" WHERE`). - WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(puuid, "project-"+puuid)) + puuid := addFetchExpectation(mock, "project") mock.ExpectBegin() mock.ExpectExec(`UPDATE "authsrv_projectgrouprole" AS "projectgrouprole" SET trash = TRUE WHERE`).WillReturnResult(sqlmock.NewResult(1, 1)) mock.ExpectQuery(`UPDATE "authsrv_projectgroupnamespacerole" AS "projectgroupnamespacerole" SET trash = TRUE WHERE ."project_id" = '` + puuid + `'. AND .trash = false. RETURNING *`). diff --git a/pkg/service/test_utils.go b/pkg/service/test_utils.go index ff2743d..63324e5 100644 --- a/pkg/service/test_utils.go +++ b/pkg/service/test_utils.go @@ -65,6 +65,16 @@ func idnamea(uid string, resource string) *string { return &name } +func addFetchEmptyExpecteation(mock sqlmock.Sqlmock, resource string) { + mock.ExpectQuery(`SELECT "` + resource + `"."id" FROM "authsrv_` + resource + `" AS "` + resource + `"`). + WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id"})) +} + +func addFailingFetchExpecteation(mock sqlmock.Sqlmock, resource string) { + mock.ExpectQuery(`SELECT "` + resource + `"."id" FROM "authsrv_` + resource + `" AS "` + resource + `"`). + WithArgs().WillReturnError(fmt.Errorf("no data available")) +} + func addFetchIdExpectation(mock sqlmock.Sqlmock, resource string) string { uid := uuid.New().String() mock.ExpectQuery(`SELECT "` + resource + `"."id" FROM "authsrv_` + resource + `" AS "` + resource + `"`). @@ -72,6 +82,11 @@ func addFetchIdExpectation(mock sqlmock.Sqlmock, resource string) string { return uid } +func addFetchByIdExpectation(mock sqlmock.Sqlmock, resource, uid string) { + mock.ExpectQuery(`SELECT "` + resource + `"."id".* FROM "authsrv_` + resource + `" AS "` + resource + `" WHERE .id = '` + uid + `'.`). + WithArgs().WillReturnRows(sqlmock.NewRows([]string{"id", "name"}).AddRow(uid, resource+"-"+uid)) +} + func addFetchIdByNameExpectation(mock sqlmock.Sqlmock, resource, name string) string { uid := uuid.New().String() mock.ExpectQuery(`SELECT "` + resource + `"."id" FROM "authsrv_` + resource + `" AS "` + resource + `" WHERE .name = '` + name + `'.`).