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