|
@@ -306,3 +306,60 @@ class PagureFlaskApiProjectGitTagstests(tests.Modeltests):
|
|
|
self.assertEqual(data["tags"], ["test-tag-no-message"])
|
|
|
self.assertEqual(data["total_tags"], 1)
|
|
|
self.assertEqual(data["tag_created"], True)
|
|
|
+
|
|
|
+ def test_api_new_git_tag_forced(self):
|
|
|
+ """ Test the api_new_git_tags function. """
|
|
|
+
|
|
|
+ # Before
|
|
|
+ output = self.app.get("/api/0/test/git/tags")
|
|
|
+ self.assertEqual(output.status_code, 200)
|
|
|
+ data = json.loads(output.get_data(as_text=True))
|
|
|
+ self.assertEqual(sorted(data.keys()), ["tags", "total_tags"])
|
|
|
+ self.assertEqual(data["tags"], [])
|
|
|
+ self.assertEqual(data["total_tags"], 0)
|
|
|
+
|
|
|
+ # Add a tag so that we can list it
|
|
|
+ repo = pygit2.Repository(os.path.join(self.path, "repos", "test.git"))
|
|
|
+ latest_commit = repo.revparse_single("HEAD")
|
|
|
+ prev_commit = latest_commit.parents[0].oid.hex
|
|
|
+ data = {
|
|
|
+ "tagname": "test-tag-no-message",
|
|
|
+ "commit_hash": prev_commit,
|
|
|
+ "message": "This is a long annotation\nover multiple lines\n for testing",
|
|
|
+ "with_commits": True,
|
|
|
+ }
|
|
|
+
|
|
|
+ output = self.app.post(
|
|
|
+ "/api/0/test/git/tags", headers=self.headers, data=data
|
|
|
+ )
|
|
|
+ self.assertEqual(output.status_code, 200)
|
|
|
+ data = json.loads(output.get_data(as_text=True))
|
|
|
+ self.assertEqual(
|
|
|
+ sorted(data.keys()), ["tag_created", "tags", "total_tags"]
|
|
|
+ )
|
|
|
+ self.assertEqual(data["tags"], {"test-tag-no-message": prev_commit})
|
|
|
+ self.assertEqual(data["total_tags"], 1)
|
|
|
+ self.assertEqual(data["tag_created"], True)
|
|
|
+
|
|
|
+ # Submit the same request/tag a second time to the same commit
|
|
|
+ data = {
|
|
|
+ "tagname": "test-tag-no-message",
|
|
|
+ "commit_hash": latest_commit.oid.hex,
|
|
|
+ "message": "This is a long annotation\nover multiple lines\n for testing",
|
|
|
+ "with_commits": True,
|
|
|
+ "force": True,
|
|
|
+ }
|
|
|
+
|
|
|
+ output = self.app.post(
|
|
|
+ "/api/0/test/git/tags", headers=self.headers, data=data
|
|
|
+ )
|
|
|
+ self.assertEqual(output.status_code, 200)
|
|
|
+ data = json.loads(output.get_data(as_text=True))
|
|
|
+ self.assertEqual(
|
|
|
+ sorted(data.keys()), ["tag_created", "tags", "total_tags"]
|
|
|
+ )
|
|
|
+ self.assertEqual(
|
|
|
+ data["tags"], {"test-tag-no-message": latest_commit.oid.hex}
|
|
|
+ )
|
|
|
+ self.assertEqual(data["total_tags"], 1)
|
|
|
+ self.assertEqual(data["tag_created"], True)
|