summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorAntoine GIRARD <sapk@users.noreply.github.com>2017-07-06 15:30:19 +0200
committerLunny Xiao <xiaolunwen@gmail.com>2017-07-06 21:30:19 +0800
commit30787e48f219b23701f660ba0b99b326ab82e997 (patch)
tree005dfef495149e81e78ad31c251cc3a3e2709870 /models
parent2ef33b53381f68dc2af88eabfe5f35c3dbc94412 (diff)
downloadgitea-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.go16
-rw-r--r--models/org.go6
-rw-r--r--models/org_team.go2
-rw-r--r--models/org_test.go4
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) {