gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "fmt"
  6. "net/http"
  7. "testing"
  8. project_model "code.gitea.io/gitea/models/project"
  9. repo_model "code.gitea.io/gitea/models/repo"
  10. "code.gitea.io/gitea/models/unit"
  11. "code.gitea.io/gitea/models/unittest"
  12. "code.gitea.io/gitea/tests"
  13. "github.com/stretchr/testify/assert"
  14. )
  15. func TestPrivateRepoProject(t *testing.T) {
  16. defer tests.PrepareTestEnv(t)()
  17. // not logged in user
  18. req := NewRequest(t, "GET", "/user31/-/projects")
  19. MakeRequest(t, req, http.StatusNotFound)
  20. sess := loginUser(t, "user1")
  21. req = NewRequest(t, "GET", "/user31/-/projects")
  22. sess.MakeRequest(t, req, http.StatusOK)
  23. }
  24. func TestMoveRepoProjectColumns(t *testing.T) {
  25. defer tests.PrepareTestEnv(t)()
  26. repo2 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
  27. projectsUnit := repo2.MustGetUnit(t.Context(), unit.TypeProjects)
  28. assert.True(t, projectsUnit.ProjectsConfig().IsProjectsAllowed(repo_model.ProjectsModeRepo))
  29. project1 := project_model.Project{
  30. Title: "new created project",
  31. RepoID: repo2.ID,
  32. Type: project_model.TypeRepository,
  33. TemplateType: project_model.TemplateTypeNone,
  34. }
  35. err := project_model.NewProject(t.Context(), &project1)
  36. assert.NoError(t, err)
  37. for i := range 3 {
  38. err = project_model.NewColumn(t.Context(), &project_model.Column{
  39. Title: fmt.Sprintf("column %d", i+1),
  40. ProjectID: project1.ID,
  41. })
  42. assert.NoError(t, err)
  43. }
  44. columns, err := project1.GetColumns(t.Context())
  45. assert.NoError(t, err)
  46. assert.Len(t, columns, 3)
  47. assert.EqualValues(t, 0, columns[0].Sorting)
  48. assert.EqualValues(t, 1, columns[1].Sorting)
  49. assert.EqualValues(t, 2, columns[2].Sorting)
  50. sess := loginUser(t, "user1")
  51. req := NewRequest(t, "GET", fmt.Sprintf("/%s/projects/%d", repo2.FullName(), project1.ID))
  52. resp := sess.MakeRequest(t, req, http.StatusOK)
  53. htmlDoc := NewHTMLParser(t, resp.Body)
  54. req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/%s/projects/%d/move?_csrf="+htmlDoc.GetCSRF(), repo2.FullName(), project1.ID), map[string]any{
  55. "columns": []map[string]any{
  56. {"columnID": columns[1].ID, "sorting": 0},
  57. {"columnID": columns[2].ID, "sorting": 1},
  58. {"columnID": columns[0].ID, "sorting": 2},
  59. },
  60. })
  61. sess.MakeRequest(t, req, http.StatusOK)
  62. columnsAfter, err := project1.GetColumns(t.Context())
  63. assert.NoError(t, err)
  64. assert.Len(t, columnsAfter, 3)
  65. assert.Equal(t, columns[1].ID, columnsAfter[0].ID)
  66. assert.Equal(t, columns[2].ID, columnsAfter[1].ID)
  67. assert.Equal(t, columns[0].ID, columnsAfter[2].ID)
  68. assert.NoError(t, project_model.DeleteProjectByID(t.Context(), project1.ID))
  69. }