This commit is contained in:
Wenkai Yin 2017-08-22 15:22:25 +08:00
parent ffb2f4201b
commit 599d94be0c
6 changed files with 27 additions and 6 deletions

View File

@ -19,8 +19,8 @@ import (
"fmt" "fmt"
) )
// DupProjectErr is the error returned when creating a duplicate project // ErrDupProject is the error returned when creating a duplicate project
var DupProjectErr = errors.New("duplicate project") var ErrDupProject = errors.New("duplicate project")
// HTTPError : if response is returned but the status code is not 200, an Error instance will be returned // HTTPError : if response is returned but the status code is not 200, an Error instance will be returned
type HTTPError struct { type HTTPError struct {

View File

@ -130,7 +130,7 @@ func (p *ProjectAPI) Post() {
AutomaticallyScanImagesOnPush: pro.AutomaticallyScanImagesOnPush, AutomaticallyScanImagesOnPush: pro.AutomaticallyScanImagesOnPush,
}) })
if err != nil { if err != nil {
if err == errutil.DupProjectErr { if err == errutil.ErrDupProject {
log.Debugf("conflict %s", pro.Name) log.Debugf("conflict %s", pro.Name)
p.RenderError(http.StatusConflict, "") p.RenderError(http.StatusConflict, "")
} else { } else {

View File

@ -118,7 +118,7 @@ func (p *ProjectManager) Create(project *models.Project) (int64, error) {
} }
if dup { if dup {
err = errutil.DupProjectErr err = errutil.ErrDupProject
} }
return 0, err return 0, err

View File

@ -22,6 +22,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/vmware/harbor/src/common/dao" "github.com/vmware/harbor/src/common/dao"
"github.com/vmware/harbor/src/common/models" "github.com/vmware/harbor/src/common/models"
errutil "github.com/vmware/harbor/src/common/utils/error"
"github.com/vmware/harbor/src/common/utils/log" "github.com/vmware/harbor/src/common/utils/log"
) )
@ -166,6 +167,19 @@ func TestCreateAndDelete(t *testing.T) {
}) })
assert.Nil(t, err) assert.Nil(t, err)
assert.Nil(t, pm.Delete(id)) assert.Nil(t, pm.Delete(id))
// duplicate project name
id, err = pm.Create(&models.Project{
Name: "test",
OwnerName: "admin",
})
assert.Nil(t, err)
defer pm.Delete(id)
_, err = pm.Create(&models.Project{
Name: "test",
OwnerName: "admin",
})
assert.Equal(t, errutil.ErrDupProject, err)
} }
func TestUpdate(t *testing.T) { func TestUpdate(t *testing.T) {

View File

@ -380,7 +380,7 @@ func (p *ProjectManager) Create(pro *models.Project) (int64, error) {
} }
if httpErr.StatusCode == http.StatusConflict { if httpErr.StatusCode == http.StatusConflict {
return 0, er.DupProjectErr return 0, er.ErrDupProject
} }
if httpErr.StatusCode != http.StatusInternalServerError { if httpErr.StatusCode != http.StatusInternalServerError {
@ -393,7 +393,7 @@ func (p *ProjectManager) Create(pro *models.Project) (int64, error) {
} }
if match { if match {
err = er.DupProjectErr err = er.ErrDupProject
} }
return 0, err return 0, err

View File

@ -22,6 +22,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/vmware/harbor/src/common/models" "github.com/vmware/harbor/src/common/models"
errutil "github.com/vmware/harbor/src/common/utils/error"
) )
var ( var (
@ -344,6 +345,12 @@ func TestCreate(t *testing.T) {
assert.True(t, project.PreventVulnerableImagesFromRunning) assert.True(t, project.PreventVulnerableImagesFromRunning)
assert.Equal(t, "medium", project.PreventVulnerableImagesFromRunningSeverity) assert.Equal(t, "medium", project.PreventVulnerableImagesFromRunningSeverity)
assert.True(t, project.AutomaticallyScanImagesOnPush) assert.True(t, project.AutomaticallyScanImagesOnPush)
// duplicate project name
_, err = pm.Create(&models.Project{
Name: name,
})
assert.Equal(t, errutil.ErrDupProject, err)
} }
func TestDelete(t *testing.T) { func TestDelete(t *testing.T) {