diff options
author | Antoine GIRARD <sapk@users.noreply.github.com> | 2017-07-06 15:30:19 +0200 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2017-07-06 21:30:19 +0800 |
commit | 30787e48f219b23701f660ba0b99b326ab82e997 (patch) | |
tree | 005dfef495149e81e78ad31c251cc3a3e2709870 /models | |
parent | 2ef33b53381f68dc2af88eabfe5f35c3dbc94412 (diff) | |
download | gitea-30787e48f219b23701f660ba0b99b326ab82e997.tar.gz gitea-30787e48f219b23701f660ba0b99b326ab82e997.zip |
Improve org error handling (#2117)
* Improve ErrOrgNotExist type
Return new error type
Use good error check
Use new method to check error
Update tests
* Fix unchanged method name report
Diffstat (limited to 'models')
-rw-r--r-- | models/error.go | 16 | ||||
-rw-r--r-- | models/org.go | 6 | ||||
-rw-r--r-- | models/org_team.go | 2 | ||||
-rw-r--r-- | models/org_test.go | 4 |
4 files changed, 21 insertions, 7 deletions
diff --git a/models/error.go b/models/error.go index 404939c58a..74551ad8f7 100644 --- a/models/error.go +++ b/models/error.go @@ -448,6 +448,22 @@ func (err ErrAccessTokenEmpty) Error() string { // \_______ /__| \___ (____ /___| /__/_____ \(____ /__| |__|\____/|___| / // \/ /_____/ \/ \/ \/ \/ \/ +// ErrOrgNotExist represents a "OrgNotExist" kind of error. +type ErrOrgNotExist struct { + ID int64 + Name string +} + +// IsErrOrgNotExist checks if an error is a ErrOrgNotExist. +func IsErrOrgNotExist(err error) bool { + _, ok := err.(ErrOrgNotExist) + return ok +} + +func (err ErrOrgNotExist) Error() string { + return fmt.Sprintf("org does not exist [id: %d, name: %s]", err.ID, err.Name) +} + // ErrLastOrgOwner represents a "LastOrgOwner" kind of error. type ErrLastOrgOwner struct { UID int64 diff --git a/models/org.go b/models/org.go index b4cbabcb53..d43f15f9aa 100644 --- a/models/org.go +++ b/models/org.go @@ -16,8 +16,6 @@ import ( ) var ( - // ErrOrgNotExist organization does not exist - ErrOrgNotExist = errors.New("Organization does not exist") // ErrTeamNotExist team does not exist ErrTeamNotExist = errors.New("Team does not exist") ) @@ -180,7 +178,7 @@ func CreateOrganization(org, owner *User) (err error) { // GetOrgByName returns organization by given name. func GetOrgByName(name string) (*User, error) { if len(name) == 0 { - return nil, ErrOrgNotExist + return nil, ErrOrgNotExist{0, name} } u := &User{ LowerName: strings.ToLower(name), @@ -190,7 +188,7 @@ func GetOrgByName(name string) (*User, error) { if err != nil { return nil, err } else if !has { - return nil, ErrOrgNotExist + return nil, ErrOrgNotExist{0, name} } return u, nil } diff --git a/models/org_team.go b/models/org_team.go index a7a1ba85d6..8508a176c1 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -230,7 +230,7 @@ func NewTeam(t *Team) (err error) { if err != nil { return err } else if !has { - return ErrOrgNotExist + return ErrOrgNotExist{t.OrgID, ""} } t.LowerName = strings.ToLower(t.Name) diff --git a/models/org_test.go b/models/org_test.go index 95698a58e9..801088c2e2 100644 --- a/models/org_test.go +++ b/models/org_test.go @@ -222,10 +222,10 @@ func TestGetOrgByName(t *testing.T) { assert.Equal(t, "user3", org.Name) org, err = GetOrgByName("user2") // user2 is an individual - assert.Equal(t, ErrOrgNotExist, err) + assert.True(t, IsErrOrgNotExist(err)) org, err = GetOrgByName("") // corner case - assert.Equal(t, ErrOrgNotExist, err) + assert.True(t, IsErrOrgNotExist(err)) } func TestCountOrganizations(t *testing.T) { |