Skip to content

Commit 0d24812

Browse files
committed
Improve ErrOrgNotExist type
Return new error type Use good error check Use new method to check error Update tests
1 parent 2ef33b5 commit 0d24812

File tree

7 files changed

+25
-11
lines changed

7 files changed

+25
-11
lines changed

models/error.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,22 @@ func (err ErrAccessTokenEmpty) Error() string {
448448
// \_______ /__| \___ (____ /___| /__/_____ \(____ /__| |__|\____/|___| /
449449
// \/ /_____/ \/ \/ \/ \/ \/
450450

451+
// ErrOrgNotExist represents a "OrgNotExist" kind of error.
452+
type ErrOrgNotExist struct {
453+
ID int64
454+
Name string
455+
}
456+
457+
// IsErrOrgNotExist checks if an error is a ErrOrgNotExist.
458+
func IsErrOrgNotExist(err error) bool {
459+
_, ok := err.(ErrOrgNotExist)
460+
return ok
461+
}
462+
463+
func (err ErrOrgNotExist) Error() string {
464+
return fmt.Sprintf("org does not exist [id: %d, name: %s]", err.ID, err.Name)
465+
}
466+
451467
// ErrLastOrgOwner represents a "LastOrgOwner" kind of error.
452468
type ErrLastOrgOwner struct {
453469
UID int64

models/org.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ import (
1616
)
1717

1818
var (
19-
// ErrOrgNotExist organization does not exist
20-
ErrOrgNotExist = errors.New("Organization does not exist")
2119
// ErrTeamNotExist team does not exist
2220
ErrTeamNotExist = errors.New("Team does not exist")
2321
)
@@ -180,7 +178,7 @@ func CreateOrganization(org, owner *User) (err error) {
180178
// GetOrgByName returns organization by given name.
181179
func GetOrgByName(name string) (*User, error) {
182180
if len(name) == 0 {
183-
return nil, ErrOrgNotExist
181+
return nil, ErrOrgNotExist{0, name}
184182
}
185183
u := &User{
186184
LowerName: strings.ToLower(name),
@@ -190,7 +188,7 @@ func GetOrgByName(name string) (*User, error) {
190188
if err != nil {
191189
return nil, err
192190
} else if !has {
193-
return nil, ErrOrgNotExist
191+
return nil, ErrOrgNotExist{0, name}
194192
}
195193
return u, nil
196194
}

models/org_team.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ func NewTeam(t *Team) (err error) {
230230
if err != nil {
231231
return err
232232
} else if !has {
233-
return ErrOrgNotExist
233+
return ErrOrgNotExist{t.OrgID, ""}
234234
}
235235

236236
t.LowerName = strings.ToLower(t.Name)

models/org_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,10 @@ func TestGetOrgByName(t *testing.T) {
222222
assert.Equal(t, "user3", org.Name)
223223

224224
org, err = GetOrgByName("user2") // user2 is an individual
225-
assert.Equal(t, ErrOrgNotExist, err)
225+
assert.True(t, IsErrOrgNotExist(err))
226226

227227
org, err = GetOrgByName("") // corner case
228-
assert.Equal(t, ErrOrgNotExist, err)
228+
assert.True(t, IsErrOrgNotExist(err))
229229
}
230230

231231
func TestCountOrganizations(t *testing.T) {

routers/api/v1/api.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,9 @@ func orgAssignment(args ...bool) macaron.Handler {
208208

209209
var err error
210210
if assignOrg {
211-
ctx.Org.Organization, err = models.GetUserByName(ctx.Params(":orgname"))
211+
ctx.Org.Organization, err = models.GetOrgByName(ctx.Params(":orgname"))
212212
if err != nil {
213-
if models.IsErrUserNotExist(err) {
213+
if models.IsErrOrgNotExist(err) {
214214
ctx.Status(404)
215215
} else {
216216
ctx.Error(500, "GetUserByName", err)

routers/api/v1/repo/fork.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func CreateFork(ctx *context.APIContext, form api.CreateForkOption) {
5959
} else {
6060
org, err := models.GetOrgByName(*form.Organization)
6161
if err != nil {
62-
if err == models.ErrOrgNotExist {
62+
if models.IsErrOrgNotExist(err) {
6363
ctx.Error(422, "", err)
6464
} else {
6565
ctx.Error(500, "GetOrgByName", err)

routers/api/v1/repo/repo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) {
156156

157157
org, err := models.GetOrgByName(ctx.Params(":org"))
158158
if err != nil {
159-
if models.IsErrUserNotExist(err) {
159+
if models.IsErrOrgNotExist(err) {
160160
ctx.Error(422, "", err)
161161
} else {
162162
ctx.Error(500, "GetOrgByName", err)

0 commit comments

Comments
 (0)