return issue.Content
}
-func newRepoAction(e Engine, u *User, repo *Repository) (err error) {
- if err = notifyWatchers(e, &Action{
- ActUserID: u.ID,
- ActUser: u,
- OpType: ActionCreateRepo,
- RepoID: repo.ID,
- Repo: repo,
- IsPrivate: repo.IsPrivate,
- }); err != nil {
- return fmt.Errorf("notify watchers '%d/%d': %v", u.ID, repo.ID, err)
- }
-
- log.Trace("action.newRepoAction: %s/%s", u.Name, repo.Name)
- return err
-}
-
-// NewRepoAction adds new action for creating repository.
-func NewRepoAction(u *User, repo *Repository) (err error) {
- return newRepoAction(x, u, repo)
-}
-
-func renameRepoAction(e Engine, actUser *User, oldRepoName string, repo *Repository) (err error) {
- if err = notifyWatchers(e, &Action{
- ActUserID: actUser.ID,
- ActUser: actUser,
- OpType: ActionRenameRepo,
- RepoID: repo.ID,
- Repo: repo,
- IsPrivate: repo.IsPrivate,
- Content: oldRepoName,
- }); err != nil {
- return fmt.Errorf("notify watchers: %v", err)
- }
-
- log.Trace("action.renameRepoAction: %s/%s", actUser.Name, repo.Name)
- return nil
-}
-
-// RenameRepoAction adds new action for renaming a repository.
-func RenameRepoAction(actUser *User, oldRepoName string, repo *Repository) error {
- return renameRepoAction(x, actUser, oldRepoName, repo)
-}
-
// PushCommit represents a commit in a push operation.
type PushCommit struct {
Sha1 string
import (
"path"
- "strings"
"testing"
"code.gitea.io/gitea/modules/setting"
assert.Equal(t, expected, action.GetRepoLink())
}
-func TestNewRepoAction(t *testing.T) {
- assert.NoError(t, PrepareTestDatabase())
-
- user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
- repo := AssertExistsAndLoadBean(t, &Repository{OwnerID: user.ID}).(*Repository)
- repo.Owner = user
-
- actionBean := &Action{
- OpType: ActionCreateRepo,
- ActUserID: user.ID,
- RepoID: repo.ID,
- ActUser: user,
- Repo: repo,
- IsPrivate: repo.IsPrivate,
- }
-
- AssertNotExistsBean(t, actionBean)
- assert.NoError(t, NewRepoAction(user, repo))
- AssertExistsAndLoadBean(t, actionBean)
- CheckConsistencyFor(t, &Action{})
-}
-
-func TestRenameRepoAction(t *testing.T) {
- assert.NoError(t, PrepareTestDatabase())
-
- user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
- repo := AssertExistsAndLoadBean(t, &Repository{OwnerID: user.ID}).(*Repository)
- repo.Owner = user
-
- oldRepoName := repo.Name
- const newRepoName = "newRepoName"
- repo.Name = newRepoName
- repo.LowerName = strings.ToLower(newRepoName)
-
- actionBean := &Action{
- OpType: ActionRenameRepo,
- ActUserID: user.ID,
- ActUser: user,
- RepoID: repo.ID,
- Repo: repo,
- IsPrivate: repo.IsPrivate,
- Content: oldRepoName,
- }
- AssertNotExistsBean(t, actionBean)
- assert.NoError(t, RenameRepoAction(user, oldRepoName, repo))
- AssertExistsAndLoadBean(t, actionBean)
-
- _, err := x.ID(repo.ID).Cols("name", "lower_name").Update(repo)
- assert.NoError(t, err)
- CheckConsistencyFor(t, &Action{})
-}
-
func TestPushCommits_ToAPIPayloadCommits(t *testing.T) {
pushCommits := NewPushCommits()
pushCommits.Commits = []*PushCommit{
return fmt.Errorf("watchRepo: %v", err)
}
}
- if err = newRepoAction(e, doer, repo); err != nil {
- return fmt.Errorf("newRepoAction: %v", err)
+ if err = notifyWatchers(e, &Action{
+ ActUserID: doer.ID,
+ ActUser: doer,
+ OpType: ActionCreateRepo,
+ RepoID: repo.ID,
+ Repo: repo,
+ IsPrivate: repo.IsPrivate,
+ }); err != nil {
+ return fmt.Errorf("notify watchers '%d/%d': %v", doer.ID, repo.ID, err)
}
if err = copyDefaultWebhooksToRepo(e, repo.ID); err != nil {
_ base.Notifier = &actionNotifier{}
)
-// NewNotifier create a new webhookNotifier notifier
+// NewNotifier create a new actionNotifier notifier
func NewNotifier() base.Notifier {
return &actionNotifier{}
}
log.Error("NotifyWatchers: %v", err)
}
}
+
+func (a *actionNotifier) NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
+ if err := models.NotifyWatchers(&models.Action{
+ ActUserID: doer.ID,
+ ActUser: doer,
+ OpType: models.ActionRenameRepo,
+ RepoID: repo.ID,
+ Repo: repo,
+ IsPrivate: repo.IsPrivate,
+ Content: oldName,
+ }); err != nil {
+ log.Error("notify watchers: %v", err)
+ } else {
+ log.Trace("action.renameRepoAction: %s/%s", doer.Name, repo.Name)
+ }
+}
--- /dev/null
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package action
+
+import (
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "code.gitea.io/gitea/models"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestMain(m *testing.M) {
+ models.MainTest(m, filepath.Join("..", "..", ".."))
+}
+
+func TestRenameRepoAction(t *testing.T) {
+ assert.NoError(t, models.PrepareTestDatabase())
+
+ user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
+ repo := models.AssertExistsAndLoadBean(t, &models.Repository{OwnerID: user.ID}).(*models.Repository)
+ repo.Owner = user
+
+ oldRepoName := repo.Name
+ const newRepoName = "newRepoName"
+ repo.Name = newRepoName
+ repo.LowerName = strings.ToLower(newRepoName)
+
+ actionBean := &models.Action{
+ OpType: models.ActionRenameRepo,
+ ActUserID: user.ID,
+ ActUser: user,
+ RepoID: repo.ID,
+ Repo: repo,
+ IsPrivate: repo.IsPrivate,
+ Content: oldRepoName,
+ }
+ models.AssertNotExistsBean(t, actionBean)
+
+ NewNotifier().NotifyRenameRepository(user, repo, oldRepoName)
+
+ models.AssertExistsAndLoadBean(t, actionBean)
+ models.CheckConsistencyFor(t, &models.Action{})
+}
NotifyMigrateRepository(doer *models.User, u *models.User, repo *models.Repository)
NotifyDeleteRepository(doer *models.User, repo *models.Repository)
NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository)
+ NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string)
NotifyNewIssue(*models.Issue)
NotifyIssueChangeStatus(*models.User, *models.Issue, bool)
func (*NullNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
}
+// NotifyRenameRepository places a place holder function
+func (*NullNotifier) NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
+}
+
// NotifyNewRelease places a place holder function
func (*NullNotifier) NotifyNewRelease(rel *models.Release) {
}
}
}
+// NotifyRenameRepository notifies repository renamed
+func NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
+ for _, notifier := range notifiers {
+ notifier.NotifyRenameRepository(doer, repo, oldName)
+ }
+}
+
// NotifyNewRelease notifies new release to notifiers
func NotifyNewRelease(rel *models.Release) {
for _, notifier := range notifiers {
return err
}
- if err := models.RenameRepoAction(ctx.User, oldRepoName, repo); err != nil {
- log.Error("RenameRepoAction: %v", err)
- ctx.Error(http.StatusInternalServerError, "RenameRepoActions", err)
- return err
- }
+ notification.NotifyRenameRepository(ctx.User, repo, oldRepoName)
log.Trace("Repository name changed: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newRepoName)
}
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/notification"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/validation"
log.Trace("Repository basic settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)
if isNameChanged {
- if err := models.RenameRepoAction(ctx.User, oldRepoName, repo); err != nil {
- log.Error("RenameRepoAction: %v", err)
- }
+ notification.NotifyRenameRepository(ctx.User, repo, oldRepoName)
}
ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))