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
This commit is contained in:
		
					parent
					
						
							
								2ef33b5338
							
						
					
				
			
			
				commit
				
					
						30787e48f2
					
				
			
		
					 7 changed files with 26 additions and 12 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
| } | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
|  | @ -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) { | ||||
|  |  | |||
|  | @ -208,12 +208,12 @@ func orgAssignment(args ...bool) macaron.Handler { | |||
| 
 | ||||
| 		var err error | ||||
| 		if assignOrg { | ||||
| 			ctx.Org.Organization, err = models.GetUserByName(ctx.Params(":orgname")) | ||||
| 			ctx.Org.Organization, err = models.GetOrgByName(ctx.Params(":orgname")) | ||||
| 			if err != nil { | ||||
| 				if models.IsErrUserNotExist(err) { | ||||
| 				if models.IsErrOrgNotExist(err) { | ||||
| 					ctx.Status(404) | ||||
| 				} else { | ||||
| 					ctx.Error(500, "GetUserByName", err) | ||||
| 					ctx.Error(500, "GetOrgByName", err) | ||||
| 				} | ||||
| 				return | ||||
| 			} | ||||
|  |  | |||
|  | @ -59,7 +59,7 @@ func CreateFork(ctx *context.APIContext, form api.CreateForkOption) { | |||
| 	} else { | ||||
| 		org, err := models.GetOrgByName(*form.Organization) | ||||
| 		if err != nil { | ||||
| 			if err == models.ErrOrgNotExist { | ||||
| 			if models.IsErrOrgNotExist(err) { | ||||
| 				ctx.Error(422, "", err) | ||||
| 			} else { | ||||
| 				ctx.Error(500, "GetOrgByName", err) | ||||
|  |  | |||
|  | @ -156,7 +156,7 @@ func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) { | |||
| 
 | ||||
| 	org, err := models.GetOrgByName(ctx.Params(":org")) | ||||
| 	if err != nil { | ||||
| 		if models.IsErrUserNotExist(err) { | ||||
| 		if models.IsErrOrgNotExist(err) { | ||||
| 			ctx.Error(422, "", err) | ||||
| 		} else { | ||||
| 			ctx.Error(500, "GetOrgByName", err) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Antoine GIRARD
				Antoine GIRARD