mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 06:24:11 +01:00 
			
		
		
		
	fix webhook test (#2415)
* fix webhook test * fix error message * fix typo
This commit is contained in:
		
							parent
							
								
									491f0ebc58
								
							
						
					
					
						commit
						3e6fed368b
					
				@ -482,6 +482,57 @@ func UpdateHookTask(t *HookTask) error {
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PrepareWebhook adds special webhook to task queue for given payload.
 | 
			
		||||
func PrepareWebhook(w *Webhook, repo *Repository, event HookEventType, p api.Payloader) error {
 | 
			
		||||
	switch event {
 | 
			
		||||
	case HookEventCreate:
 | 
			
		||||
		if !w.HasCreateEvent() {
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
	case HookEventPush:
 | 
			
		||||
		if !w.HasPushEvent() {
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
	case HookEventPullRequest:
 | 
			
		||||
		if !w.HasPullRequestEvent() {
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var payloader api.Payloader
 | 
			
		||||
	var err error
 | 
			
		||||
	// Use separate objects so modifications won't be made on payload on non-Gogs/Gitea type hooks.
 | 
			
		||||
	switch w.HookTaskType {
 | 
			
		||||
	case SLACK:
 | 
			
		||||
		payloader, err = GetSlackPayload(p, event, w.Meta)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return fmt.Errorf("GetSlackPayload: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
	case DISCORD:
 | 
			
		||||
		payloader, err = GetDiscordPayload(p, event, w.Meta)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return fmt.Errorf("GetDiscordPayload: %v", err)
 | 
			
		||||
		}
 | 
			
		||||
	default:
 | 
			
		||||
		p.SetSecret(w.Secret)
 | 
			
		||||
		payloader = p
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err = CreateHookTask(&HookTask{
 | 
			
		||||
		RepoID:      repo.ID,
 | 
			
		||||
		HookID:      w.ID,
 | 
			
		||||
		Type:        w.HookTaskType,
 | 
			
		||||
		URL:         w.URL,
 | 
			
		||||
		Payloader:   payloader,
 | 
			
		||||
		ContentType: w.ContentType,
 | 
			
		||||
		EventType:   event,
 | 
			
		||||
		IsSSL:       w.IsSSL,
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
		return fmt.Errorf("CreateHookTask: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PrepareWebhooks adds new webhooks to task queue for given payload.
 | 
			
		||||
func PrepareWebhooks(repo *Repository, event HookEventType, p api.Payloader) error {
 | 
			
		||||
	ws, err := GetActiveWebhooksByRepoID(repo.ID)
 | 
			
		||||
@ -503,51 +554,9 @@ func PrepareWebhooks(repo *Repository, event HookEventType, p api.Payloader) err
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var payloader api.Payloader
 | 
			
		||||
	for _, w := range ws {
 | 
			
		||||
		switch event {
 | 
			
		||||
		case HookEventCreate:
 | 
			
		||||
			if !w.HasCreateEvent() {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
		case HookEventPush:
 | 
			
		||||
			if !w.HasPushEvent() {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
		case HookEventPullRequest:
 | 
			
		||||
			if !w.HasPullRequestEvent() {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Use separate objects so modifications won't be made on payload on non-Gogs/Gitea type hooks.
 | 
			
		||||
		switch w.HookTaskType {
 | 
			
		||||
		case SLACK:
 | 
			
		||||
			payloader, err = GetSlackPayload(p, event, w.Meta)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return fmt.Errorf("GetSlackPayload: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
		case DISCORD:
 | 
			
		||||
			payloader, err = GetDiscordPayload(p, event, w.Meta)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return fmt.Errorf("GetDiscordPayload: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
		default:
 | 
			
		||||
			p.SetSecret(w.Secret)
 | 
			
		||||
			payloader = p
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err = CreateHookTask(&HookTask{
 | 
			
		||||
			RepoID:      repo.ID,
 | 
			
		||||
			HookID:      w.ID,
 | 
			
		||||
			Type:        w.HookTaskType,
 | 
			
		||||
			URL:         w.URL,
 | 
			
		||||
			Payloader:   payloader,
 | 
			
		||||
			ContentType: w.ContentType,
 | 
			
		||||
			EventType:   event,
 | 
			
		||||
			IsSSL:       w.IsSSL,
 | 
			
		||||
		}); err != nil {
 | 
			
		||||
			return fmt.Errorf("CreateHookTask: %v", err)
 | 
			
		||||
		if err = PrepareWebhook(w, repo, event, p); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
 | 
			
		||||
@ -545,6 +545,14 @@ func DiscordHooksEditPost(ctx *context.Context, form auth.NewDiscordHookForm) {
 | 
			
		||||
 | 
			
		||||
// TestWebhook test if web hook is work fine
 | 
			
		||||
func TestWebhook(ctx *context.Context) {
 | 
			
		||||
	hookID := ctx.ParamsInt64(":id")
 | 
			
		||||
	w, err := models.GetWebhookByRepoID(ctx.Repo.Repository.ID, hookID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.Flash.Error("GetWebhookByID: " + err.Error())
 | 
			
		||||
		ctx.Status(500)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Grab latest commit or fake one if it's empty repository.
 | 
			
		||||
	commit := ctx.Repo.Commit
 | 
			
		||||
	if commit == nil {
 | 
			
		||||
@ -581,8 +589,8 @@ func TestWebhook(ctx *context.Context) {
 | 
			
		||||
		Pusher: apiUser,
 | 
			
		||||
		Sender: apiUser,
 | 
			
		||||
	}
 | 
			
		||||
	if err := models.PrepareWebhooks(ctx.Repo.Repository, models.HookEventPush, p); err != nil {
 | 
			
		||||
		ctx.Flash.Error("PrepareWebhooks: " + err.Error())
 | 
			
		||||
	if err := models.PrepareWebhook(w, ctx.Repo.Repository, models.HookEventPush, p); err != nil {
 | 
			
		||||
		ctx.Flash.Error("PrepareWebhook: " + err.Error())
 | 
			
		||||
		ctx.Status(500)
 | 
			
		||||
	} else {
 | 
			
		||||
		go models.HookQueue.Add(ctx.Repo.Repository.ID)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user