Skip to content

Commit 333ff0e

Browse files
committed
Add a few more tests for failure cases
1 parent bc2d5aa commit 333ff0e

File tree

2 files changed

+92
-22
lines changed

2 files changed

+92
-22
lines changed

tests/integration/editor_test.go

Lines changed: 90 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,24 @@ import (
3131
func TestCreateFile(t *testing.T) {
3232
onGiteaRun(t, func(t *testing.T, u *url.URL) {
3333
session := loginUser(t, "user2")
34-
testCreateFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "test.txt", "Content")
34+
testCreateFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "test.txt", "Content", "")
35+
testCreateFile(
36+
t, session, "user2", "user2", "repo1", "master", "master", "direct", "test.txt", "Content",
37+
`A file named "test.txt" already exists in this repository.`)
38+
testCreateFile(t, session, "user2", "user2", "repo1", "master", "master", "commit-to-new-branch", "test2.txt", "Content",
39+
`Branch "master" already exists in this repository.`)
3540
})
3641
}
3742

3843
func TestCreateFileFork(t *testing.T) {
3944
onGiteaRun(t, func(t *testing.T, u *url.URL) {
4045
session := loginUser(t, "user4")
4146
forkToEdit(t, session, "user2", "repo1", "_new", "master", "test.txt")
42-
testCreateFile(t, session, "user4", "user2", "repo1", "master", "feature/test", "commit-to-new-branch", "test.txt", "Content")
47+
testCreateFile(t, session, "user4", "user2", "repo1", "master", "feature/test", "commit-to-new-branch", "test.txt", "Content", "")
4348
})
4449
}
4550

46-
func testCreateFile(t *testing.T, session *TestSession, user, owner, repo, branch, targetBranch, commitChoice, filePath, content string) {
51+
func testCreateFile(t *testing.T, session *TestSession, user, owner, repo, branch, targetBranch, commitChoice, filePath, content, expectedError string) {
4752
// Request editor page
4853
newURL := fmt.Sprintf("/%s/%s/_new/%s/", owner, repo, branch)
4954
req := NewRequest(t, "GET", newURL)
@@ -62,6 +67,16 @@ func testCreateFile(t *testing.T, session *TestSession, user, owner, repo, branc
6267
"commit_choice": commitChoice,
6368
"new_branch_name": targetBranch,
6469
})
70+
71+
if expectedError != "" {
72+
resp := session.MakeRequest(t, req, http.StatusOK)
73+
74+
// Check for expextecd error message
75+
htmlDoc := NewHTMLParser(t, resp.Body)
76+
assert.Contains(t, htmlDoc.doc.Find(".ui.flash-message").Text(), expectedError)
77+
return
78+
}
79+
6580
session.MakeRequest(t, req, http.StatusSeeOther)
6681

6782
// Check new file exists
@@ -222,40 +237,56 @@ func TestEditFileToNewBranchFork(t *testing.T) {
222237
func TestDeleteFile(t *testing.T) {
223238
onGiteaRun(t, func(t *testing.T, u *url.URL) {
224239
session := loginUser(t, "user2")
225-
testDeleteFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "README.md")
240+
testDeleteFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "README.md", "")
241+
testDeleteFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "MISSING.md",
242+
`The file being deleted, "MISSING.md", no longer exists in this repository.`)
226243
})
227244
}
228245

229246
func TestDeleteFileFork(t *testing.T) {
230247
onGiteaRun(t, func(t *testing.T, u *url.URL) {
231248
session := loginUser(t, "user4")
232249
forkToEdit(t, session, "user2", "repo1", "_delete", "master", "README.md")
233-
testDeleteFile(t, session, "user4", "user2", "repo1", "master", "feature/test", "commit-to-new-branch", "README.md")
250+
testDeleteFile(t, session, "user4", "user2", "repo1", "master", "feature/test", "commit-to-new-branch", "README.md", "")
251+
testDeleteFile(t, session, "user4", "user2", "repo1", "master", "feature/missing", "commit-to-new-branch", "MISSING.md",
252+
`The file being deleted, "MISSING.md", no longer exists in this repository.`)
234253
})
235254
}
236255

237-
func testDeleteFile(t *testing.T, session *TestSession, user, owner, repo, branch, targetBranch, commitChoice, filePath string) {
238-
// Check file exists
239-
req := NewRequestf(t, "GET", "/%s/%s/src/branch/%s/%s", owner, repo, branch, filePath)
240-
session.MakeRequest(t, req, http.StatusOK)
256+
func testDeleteFile(t *testing.T, session *TestSession, user, owner, repo, branch, targetBranch, commitChoice, filePath, expectedError string) {
257+
if expectedError == "" {
258+
// Check file exists
259+
req := NewRequestf(t, "GET", "/%s/%s/src/branch/%s/%s", owner, repo, branch, filePath)
260+
session.MakeRequest(t, req, http.StatusOK)
261+
}
241262

242263
// Request editor page
243264
newURL := fmt.Sprintf("/%s/%s/_delete/%s/%s", owner, repo, branch, filePath)
244-
req = NewRequest(t, "GET", newURL)
265+
req := NewRequest(t, "GET", newURL)
245266
resp := session.MakeRequest(t, req, http.StatusOK)
246267

247268
doc := NewHTMLParser(t, resp.Body)
248269
lastCommit := doc.GetInputValueByName("last_commit")
249270
assert.NotEmpty(t, lastCommit)
250271

251-
// Save new file to master branch
272+
// Save deleted file to target branch
252273
req = NewRequestWithValues(t, "POST", newURL, map[string]string{
253274
"_csrf": doc.GetCSRF(),
254275
"last_commit": lastCommit,
255276
"tree_path": filePath,
256277
"commit_choice": commitChoice,
257278
"new_branch_name": targetBranch,
258279
})
280+
281+
if expectedError != "" {
282+
resp := session.MakeRequest(t, req, http.StatusOK)
283+
284+
// Check for expextecd error message
285+
htmlDoc := NewHTMLParser(t, resp.Body)
286+
assert.Contains(t, htmlDoc.doc.Find(".ui.flash-message").Text(), expectedError)
287+
return
288+
}
289+
259290
session.MakeRequest(t, req, http.StatusSeeOther)
260291

261292
// Check file was deleted
@@ -266,19 +297,23 @@ func testDeleteFile(t *testing.T, session *TestSession, user, owner, repo, branc
266297
func TestPatchFile(t *testing.T) {
267298
onGiteaRun(t, func(t *testing.T, u *url.URL) {
268299
session := loginUser(t, "user2")
269-
testPatchFile(t, session, "user2", "user2", "repo1", "master", "feature/test")
300+
testPatchFile(t, session, "user2", "user2", "repo1", "master", "feature/test", "Contents", "")
301+
testPatchFile(t, session, "user2", "user2", "repo1", "master", "feature/test", "Contents",
302+
`Branch "feature/test" already exists in this repository.`)
303+
testPatchFile(t, session, "user2", "user2", "repo1", "feature/test", "feature/again", "Conflict",
304+
`Unable to apply patch`)
270305
})
271306
}
272307

273308
func TestPatchFileFork(t *testing.T) {
274309
onGiteaRun(t, func(t *testing.T, u *url.URL) {
275310
session := loginUser(t, "user4")
276311
forkToEdit(t, session, "user2", "repo1", "_diffpatch", "master", "README.md")
277-
testPatchFile(t, session, "user4", "user2", "repo1", "master", "feature/test")
312+
testPatchFile(t, session, "user4", "user2", "repo1", "master", "feature/test", "Contents", "")
278313
})
279314
}
280315

281-
func testPatchFile(t *testing.T, session *TestSession, user, owner, repo, branch, targetBranch string) {
316+
func testPatchFile(t *testing.T, session *TestSession, user, owner, repo, branch, targetBranch, contents, expectedError string) {
282317
// Request editor page
283318
newURL := fmt.Sprintf("/%s/%s/_diffpatch/%s/", owner, repo, branch)
284319
req := NewRequest(t, "GET", newURL)
@@ -293,17 +328,27 @@ func testPatchFile(t *testing.T, session *TestSession, user, owner, repo, branch
293328
"_csrf": doc.GetCSRF(),
294329
"last_commit": lastCommit,
295330
"tree_path": "__dummy__",
296-
"content": `diff --git a/patch-file-1.txt b/patch-file-1.txt
331+
"content": fmt.Sprintf(`diff --git a/patch-file-1.txt b/patch-file-1.txt
297332
new file mode 100644
298333
index 0000000000..aaaaaaaaaa
299334
--- /dev/null
300335
+++ b/patch-file-1.txt
301336
@@ -0,0 +1 @@
302-
+File 1
303-
`,
337+
+%s
338+
`, contents),
304339
"commit_choice": "commit-to-new-branch",
305340
"new_branch_name": targetBranch,
306341
})
342+
343+
if expectedError != "" {
344+
resp := session.MakeRequest(t, req, http.StatusOK)
345+
346+
// Check for expextecd error message
347+
htmlDoc := NewHTMLParser(t, resp.Body)
348+
assert.Contains(t, htmlDoc.doc.Find(".ui.flash-message").Text(), expectedError)
349+
return
350+
}
351+
307352
session.MakeRequest(t, req, http.StatusSeeOther)
308353

309354
// Check new file exists
@@ -482,7 +527,7 @@ func forkToEdit(t *testing.T, session *TestSession, owner, repo, operation, bran
482527
assert.Equal(t, "/"+path.Join(owner, repo, operation, branch, filePath), test.RedirectURL(resp))
483528
}
484529

485-
func testForkToEdit(t *testing.T, session *TestSession, user, owner, repo, branch, filePath string) {
530+
func testForkToEditFile(t *testing.T, session *TestSession, user, owner, repo, branch, filePath string) {
486531
// Fork repository because we can't edit it
487532
forkToEdit(t, session, owner, repo, "_edit", branch, filePath)
488533

@@ -524,9 +569,34 @@ func testForkToEdit(t *testing.T, session *TestSession, user, owner, repo, branc
524569
session.MakeRequest(t, req, http.StatusOK)
525570
}
526571

527-
func TestForkToEdit(t *testing.T) {
572+
func TestForkToEditFile(t *testing.T) {
573+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
574+
session := loginUser(t, "user4")
575+
testForkToEditFile(t, session, "user4", "user2", "repo1", "master", "README.md")
576+
})
577+
}
578+
579+
func TestEditFileNotAllowed(t *testing.T) {
528580
onGiteaRun(t, func(t *testing.T, u *url.URL) {
529581
session := loginUser(t, "user4")
530-
testForkToEdit(t, session, "user4", "user2", "repo1", "master", "README.md")
582+
583+
operations := []string{"_new", "_edit", "_delete", "_upload", "_diffpatch", "_cherrypick"}
584+
585+
for _, operation := range operations {
586+
// Branch does not exist
587+
url := path.Join("user2", "repo1", operation, "missing", "README.md")
588+
req := NewRequest(t, "GET", url)
589+
session.MakeRequest(t, req, http.StatusNotFound)
590+
591+
// Private repository
592+
url = path.Join("user2", "repo2", operation, "master", "Home.md")
593+
req = NewRequest(t, "GET", url)
594+
session.MakeRequest(t, req, http.StatusNotFound)
595+
596+
// Empty repository
597+
url = path.Join("org41", "repo61", operation, "master", "README.md")
598+
req = NewRequest(t, "GET", url)
599+
session.MakeRequest(t, req, http.StatusNotFound)
600+
}
531601
})
532602
}

tests/integration/repo_webhook_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ func Test_WebhookPush(t *testing.T) {
310310
testAPICreateWebhookForRepo(t, session, "user2", "repo1", provider.URL(), "push")
311311

312312
// 2. trigger the webhook
313-
testCreateFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "test_webhook_push.md", "# a test file for webhook push")
313+
testCreateFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "test_webhook_push.md", "# a test file for webhook push", "")
314314

315315
// 3. validate the webhook is triggered
316316
assert.Equal(t, "push", triggeredEvent)
@@ -602,7 +602,7 @@ func Test_WebhookStatus_NoWrongTrigger(t *testing.T) {
602602
testCreateWebhookForRepo(t, session, "gitea", "user2", "repo1", provider.URL(), "push_only")
603603

604604
// 2. trigger the webhook with a push action
605-
testCreateFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "test_webhook_push.md", "# a test file for webhook push")
605+
testCreateFile(t, session, "user2", "user2", "repo1", "master", "master", "direct", "test_webhook_push.md", "# a test file for webhook push", "")
606606

607607
// 3. validate the webhook is triggered with right event
608608
assert.Equal(t, "push", trigger)

0 commit comments

Comments
 (0)