Add github endpoint API endpoint and CLI code
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
This commit is contained in:
parent
257fb0b09a
commit
77ecb16166
27 changed files with 2807 additions and 73 deletions
|
|
@ -218,11 +218,11 @@ func (s *EnterpriseTestSuite) TestCreateEnterpriseDBCreateErr() {
|
|||
s.Fixtures.SQLMock.
|
||||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT 1")).
|
||||
WithArgs(s.Fixtures.Enterprises[0].CredentialsName).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).AddRow(s.testCreds.ID, s.testCreds.Endpoint))
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).AddRow(s.testCreds.ID, s.testCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.testCreds.Endpoint))
|
||||
AddRow(s.testCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.
|
||||
ExpectExec(regexp.QuoteMeta("INSERT INTO `enterprises`")).
|
||||
WillReturnError(fmt.Errorf("creating enterprise mock error"))
|
||||
|
|
@ -356,11 +356,11 @@ func (s *EnterpriseTestSuite) TestUpdateEnterpriseDBEncryptErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectRollback()
|
||||
|
||||
_, err := s.StoreSQLMocked.UpdateEnterprise(s.adminCtx, s.Fixtures.Enterprises[0].ID, s.Fixtures.UpdateRepoParams)
|
||||
|
|
@ -381,11 +381,11 @@ func (s *EnterpriseTestSuite) TestUpdateEnterpriseDBSaveErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.
|
||||
ExpectExec(("UPDATE `enterprises` SET")).
|
||||
WillReturnError(fmt.Errorf("saving enterprise mock error"))
|
||||
|
|
@ -412,11 +412,11 @@ func (s *EnterpriseTestSuite) TestUpdateEnterpriseDBDecryptingErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectRollback()
|
||||
|
||||
_, err := s.StoreSQLMocked.UpdateEnterprise(s.adminCtx, s.Fixtures.Enterprises[0].ID, s.Fixtures.UpdateRepoParams)
|
||||
|
|
|
|||
|
|
@ -36,6 +36,11 @@ func (s *sqlDatabase) sqlToCommonGithubCredentials(creds GithubCredentials) (par
|
|||
return params.GithubCredentials{}, errors.Wrap(err, "unsealing credentials")
|
||||
}
|
||||
|
||||
ep, err := s.sqlToCommonGithubEndpoint(creds.Endpoint)
|
||||
if err != nil {
|
||||
return params.GithubCredentials{}, errors.Wrap(err, "converting github endpoint")
|
||||
}
|
||||
|
||||
commonCreds := params.GithubCredentials{
|
||||
ID: creds.ID,
|
||||
Name: creds.Name,
|
||||
|
|
@ -45,7 +50,7 @@ func (s *sqlDatabase) sqlToCommonGithubCredentials(creds GithubCredentials) (par
|
|||
UploadBaseURL: creds.Endpoint.UploadBaseURL,
|
||||
CABundle: creds.Endpoint.CACertBundle,
|
||||
AuthType: creds.AuthType,
|
||||
Endpoint: creds.Endpoint.Name,
|
||||
Endpoint: ep,
|
||||
CredentialsPayload: data,
|
||||
}
|
||||
|
||||
|
|
@ -216,8 +221,29 @@ func (s *sqlDatabase) DeleteGithubEndpoint(_ context.Context, name string) error
|
|||
}
|
||||
}
|
||||
|
||||
if credsCount > 0 {
|
||||
return errors.New("cannot delete endpoint with credentials")
|
||||
var repoCnt int64
|
||||
if err := tx.Model(&Repository{}).Where("endpoint_name = ?", endpoint.Name).Count(&repoCnt).Error; err != nil {
|
||||
if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return errors.Wrap(err, "fetching github repositories")
|
||||
}
|
||||
}
|
||||
|
||||
var orgCnt int64
|
||||
if err := tx.Model(&Organization{}).Where("endpoint_name = ?", endpoint.Name).Count(&orgCnt).Error; err != nil {
|
||||
if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return errors.Wrap(err, "fetching github organizations")
|
||||
}
|
||||
}
|
||||
|
||||
var entCnt int64
|
||||
if err := tx.Model(&Enterprise{}).Where("endpoint_name = ?", endpoint.Name).Count(&entCnt).Error; err != nil {
|
||||
if !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return errors.Wrap(err, "fetching github enterprises")
|
||||
}
|
||||
}
|
||||
|
||||
if credsCount > 0 || repoCnt > 0 || orgCnt > 0 || entCnt > 0 {
|
||||
return errors.New("cannot delete endpoint with associated entities")
|
||||
}
|
||||
|
||||
if err := tx.Unscoped().Delete(&endpoint).Error; err != nil {
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ func (s *OrgTestSuite) TestCreateOrganizationDBCreateErr() {
|
|||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.testCreds.ID, s.githubEndpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.githubEndpoint.Name))
|
||||
s.Fixtures.SQLMock.
|
||||
|
|
@ -358,11 +358,11 @@ func (s *OrgTestSuite) TestUpdateOrganizationDBEncryptErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectRollback()
|
||||
|
||||
_, err := s.StoreSQLMocked.UpdateOrganization(s.adminCtx, s.Fixtures.Orgs[0].ID, s.Fixtures.UpdateRepoParams)
|
||||
|
|
@ -383,11 +383,11 @@ func (s *OrgTestSuite) TestUpdateOrganizationDBSaveErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.
|
||||
ExpectExec(("UPDATE `organizations` SET")).
|
||||
WillReturnError(fmt.Errorf("saving org mock error"))
|
||||
|
|
@ -414,11 +414,11 @@ func (s *OrgTestSuite) TestUpdateOrganizationDBDecryptingErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectRollback()
|
||||
|
||||
_, err := s.StoreSQLMocked.UpdateOrganization(s.adminCtx, s.Fixtures.Orgs[0].ID, s.Fixtures.UpdateRepoParams)
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ func (s *RepoTestSuite) TestCreateRepositoryInvalidDBCreateErr() {
|
|||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.testCreds.ID, s.githubEndpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.githubEndpoint.Name))
|
||||
s.Fixtures.SQLMock.
|
||||
|
|
@ -396,11 +396,11 @@ func (s *RepoTestSuite) TestUpdateRepositoryDBEncryptErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectRollback()
|
||||
|
||||
_, err := s.StoreSQLMocked.UpdateRepository(s.adminCtx, s.Fixtures.Repos[0].ID, s.Fixtures.UpdateRepoParams)
|
||||
|
|
@ -421,11 +421,11 @@ func (s *RepoTestSuite) TestUpdateRepositoryDBSaveErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.
|
||||
ExpectExec(("UPDATE `repositories` SET")).
|
||||
WillReturnError(fmt.Errorf("saving repo mock error"))
|
||||
|
|
@ -451,11 +451,11 @@ func (s *RepoTestSuite) TestUpdateRepositoryDBDecryptingErr() {
|
|||
ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_credentials` WHERE name = ? AND `github_credentials`.`deleted_at` IS NULL ORDER BY `github_credentials`.`id` LIMIT ?")).
|
||||
WithArgs(s.secondaryTestCreds.Name, 1).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"id", "endpoint_name"}).
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.ID, s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectQuery(regexp.QuoteMeta("SELECT * FROM `github_endpoints` WHERE `github_endpoints`.`name` = ? AND `github_endpoints`.`deleted_at` IS NULL")).
|
||||
WithArgs(s.testCreds.Endpoint).
|
||||
WithArgs(s.testCreds.Endpoint.Name).
|
||||
WillReturnRows(sqlmock.NewRows([]string{"name"}).
|
||||
AddRow(s.secondaryTestCreds.Endpoint))
|
||||
AddRow(s.secondaryTestCreds.Endpoint.Name))
|
||||
s.Fixtures.SQLMock.ExpectRollback()
|
||||
|
||||
_, err := s.StoreSQLMocked.UpdateRepository(s.adminCtx, s.Fixtures.Repos[0].ID, s.Fixtures.UpdateRepoParams)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue