You've already forked woodpecker
							
							
				mirror of
				https://github.com/woodpecker-ci/woodpecker.git
				synced 2025-10-30 23:27:39 +02:00 
			
		
		
		
	added commit and perm unit tests
This commit is contained in:
		| @@ -42,7 +42,7 @@ func (db *Commitstore) GetCommitLast(repo *model.Repo, branch string) (*model.Co | ||||
| // from the datastore for the specified repository. | ||||
| func (db *Commitstore) GetCommitList(repo *model.Repo) ([]*model.Commit, error) { | ||||
| 	var commits []*model.Commit | ||||
| 	var err = meddler.QueryAll(db, &commits, rebind(commitListQuery)) | ||||
| 	var err = meddler.QueryAll(db, &commits, rebind(commitListQuery), repo.ID) | ||||
| 	return commits, err | ||||
| } | ||||
|  | ||||
| @@ -115,9 +115,6 @@ LIMIT 1 | ||||
|  | ||||
| // SQL statement to cancel all running Commits. | ||||
| const commitKillStmt = ` | ||||
| UPDATE commits SET | ||||
| commit_status   = ?, | ||||
| commit_started  = ?, | ||||
| commit_finished = ? | ||||
| UPDATE commits SET commit_status = 'Killed' | ||||
| WHERE commit_status IN ('Started', 'Pending'); | ||||
| ` | ||||
|   | ||||
| @@ -1 +1,230 @@ | ||||
| package database | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/drone/drone/shared/model" | ||||
| 	"github.com/franela/goblin" | ||||
| ) | ||||
|  | ||||
| func TestCommitstore(t *testing.T) { | ||||
| 	db := mustConnectTest() | ||||
| 	cs := NewCommitstore(db) | ||||
| 	//ps := NewPermstore(db) | ||||
| 	defer db.Close() | ||||
|  | ||||
| 	g := goblin.Goblin(t) | ||||
| 	g.Describe("Commitstore", func() { | ||||
|  | ||||
| 		// before each test be sure to purge the package | ||||
| 		// table data from the database. | ||||
| 		g.BeforeEach(func() { | ||||
| 			db.Exec("DELETE FROM perms") | ||||
| 			db.Exec("DELETE FROM commits") | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Put a Commit", func() { | ||||
| 			commit := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 			} | ||||
| 			err := cs.PutCommit(&commit) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(commit.ID != 0).IsTrue() | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Post a Commit", func() { | ||||
| 			commit := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 			} | ||||
| 			err := cs.PostCommit(&commit) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(commit.ID != 0).IsTrue() | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Get a Commit by ID", func() { | ||||
| 			commit := model.Commit{ | ||||
| 				RepoID:  1, | ||||
| 				Branch:  "foo", | ||||
| 				Sha:     "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 				Status:  model.StatusSuccess, | ||||
| 				Created: 1398065343, | ||||
| 				Updated: 1398065344, | ||||
| 			} | ||||
| 			cs.PostCommit(&commit) | ||||
| 			getcommit, err := cs.GetCommit(commit.ID) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(commit.ID).Equal(getcommit.ID) | ||||
| 			g.Assert(commit.RepoID).Equal(getcommit.RepoID) | ||||
| 			g.Assert(commit.Branch).Equal(getcommit.Branch) | ||||
| 			g.Assert(commit.Sha).Equal(getcommit.Sha) | ||||
| 			g.Assert(commit.Status).Equal(getcommit.Status) | ||||
| 			g.Assert(commit.Created).Equal(getcommit.Created) | ||||
| 			g.Assert(commit.Updated).Equal(getcommit.Updated) | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Delete a Commit", func() { | ||||
| 			commit := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 			} | ||||
| 			cs.PostCommit(&commit) | ||||
| 			_, err1 := cs.GetCommit(commit.ID) | ||||
| 			err2 := cs.DelCommit(&commit) | ||||
| 			_, err3 := cs.GetCommit(commit.ID) | ||||
| 			g.Assert(err1 == nil).IsTrue() | ||||
| 			g.Assert(err2 == nil).IsTrue() | ||||
| 			g.Assert(err3 == nil).IsFalse() | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Kill Pending or Started Commits", func() { | ||||
| 			commit1 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 				Status: model.StatusEnqueue, | ||||
| 			} | ||||
| 			commit2 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "bar", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 				Status: model.StatusEnqueue, | ||||
| 			} | ||||
| 			cs.PutCommit(&commit1) | ||||
| 			cs.PutCommit(&commit2) | ||||
| 			err := cs.KillCommits() | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			getcommit1, _ := cs.GetCommit(commit1.ID) | ||||
| 			getcommit2, _ := cs.GetCommit(commit1.ID) | ||||
| 			g.Assert(getcommit1.Status).Equal(model.StatusKilled) | ||||
| 			g.Assert(getcommit2.Status).Equal(model.StatusKilled) | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Get a Commit by Sha", func() { | ||||
| 			commit := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 			} | ||||
| 			cs.PostCommit(&commit) | ||||
| 			getcommit, err := cs.GetCommitSha(&model.Repo{ID: 1}, commit.Branch, commit.Sha) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(commit.ID).Equal(getcommit.ID) | ||||
| 			g.Assert(commit.RepoID).Equal(getcommit.RepoID) | ||||
| 			g.Assert(commit.Branch).Equal(getcommit.Branch) | ||||
| 			g.Assert(commit.Sha).Equal(getcommit.Sha) | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should get the last Commit by Branch", func() { | ||||
| 			commit1 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 				Status: model.StatusFailure, | ||||
| 			} | ||||
| 			commit2 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "0a74b46d7d62b737b6906897f48dbeb72cfda222", | ||||
| 				Status: model.StatusSuccess, | ||||
| 			} | ||||
| 			cs.PutCommit(&commit1) | ||||
| 			cs.PutCommit(&commit2) | ||||
| 			lastcommit, err := cs.GetCommitLast(&model.Repo{ID: 1}, commit1.Branch) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(commit2.ID).Equal(lastcommit.ID) | ||||
| 			g.Assert(commit2.RepoID).Equal(lastcommit.RepoID) | ||||
| 			g.Assert(commit2.Branch).Equal(lastcommit.Branch) | ||||
| 			g.Assert(commit2.Sha).Equal(lastcommit.Sha) | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should get the recent Commit List for a Repo", func() { | ||||
| 			commit1 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 				Status: model.StatusFailure, | ||||
| 			} | ||||
| 			commit2 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "0a74b46d7d62b737b6906897f48dbeb72cfda222", | ||||
| 				Status: model.StatusSuccess, | ||||
| 			} | ||||
| 			cs.PutCommit(&commit1) | ||||
| 			cs.PutCommit(&commit2) | ||||
| 			commits, err := cs.GetCommitList(&model.Repo{ID: 1}) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(len(commits)).Equal(2) | ||||
| 			g.Assert(commits[0].ID).Equal(commit2.ID) | ||||
| 			g.Assert(commits[0].RepoID).Equal(commit2.RepoID) | ||||
| 			g.Assert(commits[0].Branch).Equal(commit2.Branch) | ||||
| 			g.Assert(commits[0].Sha).Equal(commit2.Sha) | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should get the recent Commit List for a User") | ||||
| 		/* | ||||
| 			g.It("Should get the recent Commit List for a User", func() { | ||||
| 				perm1 := model.Perm{ | ||||
| 					RepoID: 1, | ||||
| 					UserID: 1, | ||||
| 					Read:   true, | ||||
| 					Write:  true, | ||||
| 					Admin:  true, | ||||
| 				} | ||||
| 				commit1 := model.Commit{ | ||||
| 					RepoID: 1, | ||||
| 					Branch: "foo", | ||||
| 					Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 					Status: model.StatusFailure, | ||||
| 				} | ||||
| 				commit2 := model.Commit{ | ||||
| 					RepoID: 1, | ||||
| 					Branch: "foo", | ||||
| 					Sha:    "0a74b46d7d62b737b6906897f48dbeb72cfda222", | ||||
| 					Status: model.StatusSuccess, | ||||
| 				} | ||||
| 				commit3 := model.Commit{ | ||||
| 					RepoID: 2, | ||||
| 					Branch: "baz", | ||||
| 					Sha:    "0a74b46d7d62b737b6906897f48dbeb72cfda222", | ||||
| 					Status: model.StatusSuccess, | ||||
| 				} | ||||
| 				cs.PutCommit(&commit1) | ||||
| 				cs.PutCommit(&commit2) | ||||
| 				cs.PutCommit(&commit3) | ||||
| 				ps.PutPerm(&perm1) | ||||
| 				commits, err := cs.GetCommitListUser(&model.User{ID: 1}) | ||||
| 				g.Assert(err == nil).IsTrue() | ||||
| 				g.Assert(len(commits)).Equal(2) | ||||
| 				g.Assert(commits[0].ID).Equal(commit2.ID) | ||||
| 				g.Assert(commits[0].RepoID).Equal(commit2.RepoID) | ||||
| 				g.Assert(commits[0].Branch).Equal(commit2.Branch) | ||||
| 				g.Assert(commits[0].Sha).Equal(commit2.Sha) | ||||
| 			}) | ||||
| 		*/ | ||||
|  | ||||
| 		g.It("Should enforce unique Sha + Branch", func() { | ||||
| 			commit1 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 				Status: model.StatusEnqueue, | ||||
| 			} | ||||
| 			commit2 := model.Commit{ | ||||
| 				RepoID: 1, | ||||
| 				Branch: "foo", | ||||
| 				Sha:    "85f8c029b902ed9400bc600bac301a0aadb144ac", | ||||
| 				Status: model.StatusEnqueue, | ||||
| 			} | ||||
| 			err1 := cs.PutCommit(&commit1) | ||||
| 			err2 := cs.PutCommit(&commit2) | ||||
| 			g.Assert(err1 == nil).IsTrue() | ||||
| 			g.Assert(err2 == nil).IsFalse() | ||||
| 		}) | ||||
| 	}) | ||||
| } | ||||
|   | ||||
| @@ -1 +1,104 @@ | ||||
| package database | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/drone/drone/shared/model" | ||||
| 	"github.com/franela/goblin" | ||||
| ) | ||||
|  | ||||
| func TestPermstore(t *testing.T) { | ||||
| 	db := mustConnectTest() | ||||
| 	ps := NewPermstore(db) | ||||
| 	defer db.Close() | ||||
|  | ||||
| 	g := goblin.Goblin(t) | ||||
| 	g.Describe("Permstore", func() { | ||||
|  | ||||
| 		// before each test be sure to purge the package | ||||
| 		// table data from the database. | ||||
| 		g.BeforeEach(func() { | ||||
| 			db.Exec("DELETE FROM perms") | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Put a Perm", func() { | ||||
| 			perm1 := model.Perm{ | ||||
| 				UserID: 1, | ||||
| 				RepoID: 2, | ||||
| 				Read:   true, | ||||
| 				Write:  true, | ||||
| 				Admin:  true, | ||||
| 			} | ||||
| 			err := ps.PutPerm(&perm1) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(perm1.ID != 0).IsTrue() | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Post a Perm", func() { | ||||
| 			perm1 := model.Perm{ | ||||
| 				UserID: 1, | ||||
| 				RepoID: 2, | ||||
| 				Read:   true, | ||||
| 				Write:  true, | ||||
| 				Admin:  true, | ||||
| 			} | ||||
| 			err := ps.PostPerm(&perm1) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(perm1.ID != 0).IsTrue() | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Get a Perm", func() { | ||||
| 			ps.PostPerm(&model.Perm{ | ||||
| 				UserID: 1, | ||||
| 				RepoID: 2, | ||||
| 				Read:   true, | ||||
| 				Write:  true, | ||||
| 				Admin:  true, | ||||
| 			}) | ||||
| 			getperm, err := ps.GetPerm(&model.User{ID: 1}, &model.Repo{ID: 2}) | ||||
| 			g.Assert(err == nil).IsTrue() | ||||
| 			g.Assert(getperm.ID != 0).IsTrue() | ||||
| 			g.Assert(getperm.Admin).IsTrue() | ||||
| 			g.Assert(getperm.Write).IsTrue() | ||||
| 			g.Assert(getperm.Admin).IsTrue() | ||||
| 			g.Assert(getperm.UserID).Equal(int64(1)) | ||||
| 			g.Assert(getperm.RepoID).Equal(int64(2)) | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Del a Perm", func() { | ||||
| 			perm1 := model.Perm{ | ||||
| 				UserID: 1, | ||||
| 				RepoID: 2, | ||||
| 				Read:   true, | ||||
| 				Write:  true, | ||||
| 				Admin:  true, | ||||
| 			} | ||||
| 			ps.PostPerm(&perm1) | ||||
| 			_, err1 := ps.GetPerm(&model.User{ID: 1}, &model.Repo{ID: 2}) | ||||
| 			err2 := ps.DelPerm(&perm1) | ||||
| 			_, err3 := ps.GetPerm(&model.User{ID: 1}, &model.Repo{ID: 2}) | ||||
| 			g.Assert(err1 == nil).IsTrue() | ||||
| 			g.Assert(err2 == nil).IsTrue() | ||||
| 			g.Assert(err3 == nil).IsFalse() | ||||
| 		}) | ||||
|  | ||||
| 		g.It("Should Enforce Unique Perm", func() { | ||||
| 			err1 := ps.PostPerm(&model.Perm{ | ||||
| 				UserID: 1, | ||||
| 				RepoID: 2, | ||||
| 				Read:   true, | ||||
| 				Write:  true, | ||||
| 				Admin:  true, | ||||
| 			}) | ||||
| 			err2 := ps.PostPerm(&model.Perm{ | ||||
| 				UserID: 1, | ||||
| 				RepoID: 2, | ||||
| 				Read:   true, | ||||
| 				Write:  true, | ||||
| 				Admin:  true, | ||||
| 			}) | ||||
| 			g.Assert(err1 == nil).IsTrue() | ||||
| 			g.Assert(err2 == nil).IsFalse() | ||||
| 		}) | ||||
| 	}) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user