test.py 98 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665
  1. #! /usr/bin/env python
  2. # -*- coding: utf8 -*-
  3. #
  4. # gitlab irc sender
  5. # Copyright (C) 2016-2017 Andrei Karas (4144)
  6. #
  7. # This program is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation; either version 3 of the License, or
  10. # any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. from code.apihandler import ApiHandler
  20. from code.configuration import Configuration
  21. from code.core import Core
  22. from code.logger import Logger
  23. from code.messagehandler import MessageHandler
  24. from code.project import ProjectClass
  25. from code.serverhandler import ServerHandler
  26. import logging
  27. import unittest
  28. import time
  29. def init_log():
  30. Core.log = logging.getLogger('log')
  31. Core.log.setLevel(logging.INFO)
  32. log_handler = logging.handlers.RotatingFileHandler(
  33. "test.log",
  34. maxBytes = 100000000,
  35. backupCount = 1)
  36. f = logging.Formatter("%(asctime)s %(message)s",
  37. "%B %d %H:%M:%S")
  38. log_handler.setFormatter(f)
  39. Core.log.addHandler(log_handler)
  40. class TestConfig1(unittest.TestCase):
  41. def setUp(self):
  42. global config
  43. config = Configuration()
  44. config.show_info = False
  45. config.loadConfiguration("test/config/config1.yaml")
  46. def tearDown(self):
  47. global config
  48. config = None
  49. def check_options_in(self, options):
  50. self.assertIn("show_commit_messages", options)
  51. self.assertIn("show_commits", options)
  52. self.assertIn("last_build_stage", options)
  53. def test_global(self):
  54. self.assertTrue(config.global_options.show_commits)
  55. self.assertEqual(config.global_options.listen_host, "127.0.0.1")
  56. self.assertEqual(config.global_options.listen_port, 8181)
  57. self.assertEqual(config.global_options.ii_server_directory, "irc.freenode.net")
  58. def test_projects(self):
  59. self.assertIn("/qqqqq/", config.projects)
  60. self.assertIn("/wwwwww/", config.projects)
  61. self.assertIsInstance(config.projects["/qqqqq/"], ProjectClass)
  62. self.assertIsInstance(config.projects["/wwwwww/"], ProjectClass)
  63. def test_actions(self):
  64. actions = config.projects["/qqqqq/"].actions
  65. self.assertIn("issue", actions)
  66. self.assertIn("push", actions)
  67. self.assertIn("tag_push", actions)
  68. self.assertIn("note", actions)
  69. self.assertIn("build", actions)
  70. self.assertIn("merge_request", actions)
  71. self.assertNotIn("show_commit_messages", actions)
  72. actions = config.projects["/wwwwww/"].actions
  73. self.assertIn("issue", actions)
  74. self.assertNotIn("build", actions)
  75. def test_channels(self):
  76. actions = config.projects["/qqqqq/"].actions
  77. self.assertEqual(actions["issue"], ["#channel1"])
  78. self.assertEqual(sorted(actions["push"]), sorted(["#channel1", "#channel2"]))
  79. self.assertEqual(actions["tag_push"], ["#channel1"])
  80. self.assertEqual(actions["note"], ["#channel1"])
  81. self.assertEqual(actions["build"], ["#channel1"])
  82. self.assertEqual(actions["merge_request"], ["#channel1"])
  83. actions = config.projects["/wwwwww/"].actions
  84. self.assertEqual(actions["issue"], ["#channel2"])
  85. def test_channels_order(self):
  86. actions = config.projects["/qqqqq/"].actions
  87. channels = actions["push"]
  88. it = iter(channels)
  89. channel = next(it)
  90. self.assertEqual(channel, "#channel1")
  91. channel = next(it)
  92. self.assertEqual(channel, "#channel2")
  93. def test_options_channels_list(self):
  94. options = config.projects["/qqqqq/"].channels
  95. self.assertIn("#channel1", options)
  96. self.assertIn("#channel2", options)
  97. options = config.projects["/wwwwww/"].channels
  98. self.assertIn("#channel2", options)
  99. def test_options_channels(self):
  100. options = config.projects["/qqqqq/"].channels
  101. chan = options["#channel1"]
  102. self.check_options_in(chan)
  103. self.assertTrue(chan.show_commit_messages)
  104. self.assertTrue(chan.show_commits)
  105. chan = options["#channel2"]
  106. self.check_options_in(chan)
  107. self.assertFalse(chan.show_commit_messages)
  108. self.assertTrue(chan.show_commits)
  109. options = config.projects["/wwwwww/"].channels
  110. chan = options["#channel2"]
  111. self.check_options_in(chan)
  112. self.assertTrue(chan.show_commit_messages)
  113. self.assertTrue(chan.show_commits)
  114. def test_options_project_properties(self):
  115. options = config.projects["/qqqqq/"].options
  116. self.assertEqual(options.ii_server_directory, "irc.freenode.net")
  117. self.assertEqual(options["ii_server_directory"], "irc.freenode.net")
  118. def test_default_service(self):
  119. self.assertEqual(config.global_options["service"], "gitlab")
  120. self.assertEqual(config.global_options.service, "gitlab")
  121. def test_service(self):
  122. options = config.projects["/qqqqq/"].options
  123. self.assertEqual(options["service"], "gitlab")
  124. self.assertEqual(options.service, "gitlab")
  125. class ApiResponseMock():
  126. pass
  127. class ApiHandlerMock(ApiHandler):
  128. def __init__(self):
  129. self.sent_requests = []
  130. self.mock_response = ApiResponseMock()
  131. self.mock_responses = []
  132. ApiHandler.__init__(self)
  133. def send_request(self, url, token, flag, cnt):
  134. self.sent_requests.append((url, token, flag, cnt))
  135. if len(self.mock_responses) == 0:
  136. return self.mock_response
  137. else:
  138. return self.mock_responses.pop()
  139. class TestApiHandler(unittest.TestCase):
  140. def setUp(self):
  141. global apiHandler
  142. # Core.log = logging.getLogger('log')
  143. Core.config = Configuration()
  144. Core.config.loadDefaultOptions()
  145. Core.config.global_options.gitlab_api_token = "testapitoken"
  146. Configuration.irc_message_pause = 0
  147. apiHandler = ApiHandlerMock()
  148. def tearDown(self):
  149. global apiHandler
  150. apiHandler = None
  151. # Core.log = None
  152. Core.config = None
  153. def test_ApiHandler_add1(self):
  154. global apiHandler
  155. self.assertEqual(len(apiHandler.requests), 0)
  156. apiHandler.add(("getlog", Core.config.global_options, 1, 2))
  157. self.assertEqual(len(apiHandler.requests), 1)
  158. self.assertEqual(apiHandler.requests[0], ("getlog", Core.config.global_options, 1, 2))
  159. def test_ApiHandler_add2(self):
  160. global apiHandler
  161. self.assertEqual(len(apiHandler.requests), 0)
  162. apiHandler.add(("getlog", Core.config.global_options, 1, 2))
  163. apiHandler.add(("getlog2", Core.config.global_options, 2, 3))
  164. self.assertEqual(len(apiHandler.requests), 2)
  165. self.assertEqual(apiHandler.requests[0], ("getlog2", Core.config.global_options, 2, 3))
  166. self.assertEqual(apiHandler.requests[1], ("getlog", Core.config.global_options, 1, 2))
  167. def test_ApiHandler_check_retry_build_count(self):
  168. global apiHandler
  169. self.assertEqual(len(apiHandler.retry_builds), 0)
  170. Core.config.global_options.build_retry_count = 0
  171. self.assertEqual(apiHandler.check_retry_build_count("1", Core.config.global_options), False)
  172. apiHandler.retry_builds["100"] = 1;
  173. self.assertEqual(apiHandler.check_retry_build_count("100", Core.config.global_options), False)
  174. Core.config.global_options.build_retry_count = 1
  175. self.assertEqual(apiHandler.check_retry_build_count("100", Core.config.global_options), False)
  176. apiHandler.retry_builds["100"] = 3;
  177. Core.config.global_options.build_retry_count = 10
  178. self.assertEqual(apiHandler.check_retry_build_count("100", Core.config.global_options), True)
  179. apiHandler.retry_builds["100"] = 0;
  180. Core.config.global_options.build_retry_count = 2
  181. self.assertEqual(apiHandler.check_retry_build_count("100", Core.config.global_options), True)
  182. apiHandler.retry_builds["100"] = 1;
  183. self.assertEqual(apiHandler.check_retry_build_count("100", Core.config.global_options), True)
  184. apiHandler.retry_builds["100"] = 2;
  185. self.assertEqual(apiHandler.check_retry_build_count("100", Core.config.global_options), False)
  186. def test_ApiHandler_send_request1(self):
  187. global apiHandler
  188. self.assertEqual(len(apiHandler.sent_requests), 0)
  189. self.assertEqual(len(apiHandler.requests), 0)
  190. apiHandler.send_request("http://qqqq", "12345", False, 10)
  191. self.assertEqual(len(apiHandler.requests), 0)
  192. self.assertEqual(apiHandler.sent_requests,
  193. [
  194. ("http://qqqq", "12345", False, 10)
  195. ])
  196. def test_ApiHandler_send_request2(self):
  197. global apiHandler
  198. self.assertEqual(len(apiHandler.sent_requests), 0)
  199. self.assertEqual(len(apiHandler.requests), 0)
  200. apiHandler.send_request("http://qqqq", "12345", False, 10)
  201. apiHandler.send_request("http://www/test/url", "112233", True, 1)
  202. self.assertEqual(len(apiHandler.requests), 0)
  203. self.assertEqual(apiHandler.sent_requests,
  204. [
  205. ("http://qqqq", "12345", False, 10),
  206. ("http://www/test/url", "112233", True, 1)
  207. ])
  208. def test_ApiHandler_retry_build1(self):
  209. global apiHandler
  210. Core.config.global_options.build_retry_count = 1
  211. self.assertEqual(len(apiHandler.requests), 0)
  212. apiHandler.retry_build(1, 2, "12345", Core.config.global_options)
  213. self.assertEqual(len(apiHandler.requests), 1)
  214. self.assertEqual(apiHandler.requests[0], ("getlog", Core.config.global_options, 1, 2, "12345"))
  215. apiHandler.retry_builds["12345"] = 1;
  216. apiHandler.retry_build(1, 2, "12345", Core.config.global_options)
  217. self.assertEqual(len(apiHandler.requests), 1)
  218. def test_ApiHandler_retry_build2(self):
  219. global apiHandler
  220. Core.config.global_options.build_retry_count = 2
  221. self.assertEqual(len(apiHandler.requests), 0)
  222. apiHandler.retry_build(1, 2, "12345", Core.config.global_options)
  223. self.assertEqual(len(apiHandler.requests), 1)
  224. self.assertEqual(apiHandler.requests[0], ("getlog", Core.config.global_options, 1, 2, "12345"))
  225. apiHandler.retry_builds["12345"] = 1;
  226. apiHandler.retry_build(1, 2, "12345", Core.config.global_options)
  227. self.assertEqual(len(apiHandler.requests), 2)
  228. self.assertEqual(apiHandler.requests[0], ("getlog", Core.config.global_options, 1, 2, "12345"))
  229. self.assertEqual(apiHandler.requests[1], ("getlog", Core.config.global_options, 1, 2, "12345"))
  230. def test_ApiHandler_request_build_log(self):
  231. global apiHandler
  232. self.assertEqual(len(apiHandler.sent_requests), 0)
  233. self.assertEqual(len(apiHandler.requests), 0)
  234. apiHandler.request_build_log(12, 34, Core.config.global_options)
  235. self.assertEqual(len(apiHandler.requests), 0)
  236. self.assertEqual(apiHandler.sent_requests,
  237. [
  238. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3)
  239. ])
  240. def test_ApiHandler_request_build_retry1(self):
  241. global apiHandler
  242. Core.config.global_options.build_retry_count = 1
  243. self.assertEqual(len(apiHandler.sent_requests), 0)
  244. self.assertEqual(len(apiHandler.requests), 0)
  245. apiHandler.request_build_retry(12, 34, "12345", Core.config.global_options)
  246. self.assertEqual(len(apiHandler.requests), 0)
  247. self.assertEqual(apiHandler.sent_requests,
  248. [
  249. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  250. ])
  251. def test_ApiHandler_request_build_retry2(self):
  252. global apiHandler
  253. Core.config.global_options.build_retry_count = 1
  254. self.assertEqual(len(apiHandler.sent_requests), 0)
  255. self.assertEqual(len(apiHandler.requests), 0)
  256. apiHandler.request_build_retry(12, 34, "12345", Core.config.global_options)
  257. self.assertEqual(len(apiHandler.requests), 0)
  258. self.assertEqual(apiHandler.sent_requests,
  259. [
  260. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  261. ])
  262. apiHandler.sent_requests = []
  263. apiHandler.request_build_retry(12, 34, "12345", Core.config.global_options)
  264. self.assertEqual(len(apiHandler.requests), 0)
  265. self.assertEqual(len(apiHandler.sent_requests), 0)
  266. def test_ApiHandler_request_build_retry3(self):
  267. global apiHandler
  268. Core.config.global_options.build_retry_count = 2
  269. self.assertEqual(len(apiHandler.sent_requests), 0)
  270. self.assertEqual(len(apiHandler.requests), 0)
  271. apiHandler.request_build_retry(12, 34, "12345", Core.config.global_options)
  272. self.assertEqual(apiHandler.sent_requests,
  273. [
  274. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  275. ])
  276. self.assertEqual(len(apiHandler.requests), 0)
  277. apiHandler.request_build_retry(12, 34, "12345", Core.config.global_options)
  278. self.assertEqual(apiHandler.sent_requests,
  279. [
  280. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3),
  281. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  282. ])
  283. self.assertEqual(len(apiHandler.requests), 0)
  284. apiHandler.sent_requests = []
  285. apiHandler.request_build_retry(12, 34, "12345", Core.config.global_options)
  286. self.assertEqual(len(apiHandler.sent_requests), 0)
  287. self.assertEqual(len(apiHandler.requests), 0)
  288. def test_ApiHandler_parse_command1(self):
  289. global apiHandler
  290. self.assertEqual(len(apiHandler.sent_requests), 0)
  291. self.assertEqual(len(apiHandler.requests), 0)
  292. apiHandler.mock_response.text = "normal response text\nERROR: Job failed"
  293. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  294. self.assertEqual(apiHandler.sent_requests,
  295. [
  296. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3)
  297. ])
  298. self.assertEqual(len(apiHandler.requests), 0)
  299. def test_ApiHandler_parse_command2(self):
  300. global apiHandler
  301. self.assertEqual(len(apiHandler.sent_requests), 0)
  302. self.assertEqual(len(apiHandler.requests), 0)
  303. apiHandler.mock_response.text = "normal response text\nERROR: Build failed (system failure): some kind of error"
  304. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  305. self.assertEqual(apiHandler.sent_requests,
  306. [
  307. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  308. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  309. ])
  310. self.assertEqual(len(apiHandler.requests), 0)
  311. def test_ApiHandler_parse_command3(self):
  312. global apiHandler
  313. self.assertEqual(len(apiHandler.sent_requests), 0)
  314. self.assertEqual(len(apiHandler.requests), 0)
  315. apiHandler.mock_response.text = "runner header\nUsing Shell executor...\nNo passwd entry for user 'gitlab-runner'\n"
  316. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  317. self.assertEqual(apiHandler.sent_requests,
  318. [
  319. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  320. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  321. ])
  322. self.assertEqual(len(apiHandler.requests), 0)
  323. def test_ApiHandler_parse_command4(self):
  324. global apiHandler
  325. self.assertEqual(len(apiHandler.sent_requests), 0)
  326. self.assertEqual(len(apiHandler.requests), 0)
  327. apiHandler.mock_response.text = "runner header\nsome test here\n\n\nFATAL: invalid argument  \nERROR: Build failed: exit code 1\n"
  328. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  329. self.assertEqual(apiHandler.sent_requests,
  330. [
  331. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  332. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  333. ])
  334. self.assertEqual(len(apiHandler.requests), 0)
  335. def test_ApiHandler_parse_command5(self):
  336. global apiHandler
  337. self.assertEqual(len(apiHandler.sent_requests), 0)
  338. self.assertEqual(len(apiHandler.requests), 0)
  339. apiHandler.mock_response.text = "runner header\nremote: GitLab is not responding\nfatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.com/"
  340. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  341. self.assertEqual(apiHandler.sent_requests,
  342. [
  343. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  344. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  345. ])
  346. self.assertEqual(len(apiHandler.requests), 0)
  347. def test_ApiHandler_parse_command6(self):
  348. global apiHandler
  349. self.assertEqual(len(apiHandler.sent_requests), 0)
  350. self.assertEqual(len(apiHandler.requests), 0)
  351. apiHandler.mock_response.text = "runner header\nFATAL: invalid argument  \nERROR: Job failed: exit code 1\n"
  352. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  353. self.assertEqual(apiHandler.sent_requests,
  354. [
  355. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  356. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  357. ])
  358. self.assertEqual(len(apiHandler.requests), 0)
  359. def test_ApiHandler_parse_command7(self):
  360. global apiHandler
  361. self.assertEqual(len(apiHandler.sent_requests), 0)
  362. self.assertEqual(len(apiHandler.requests), 0)
  363. apiHandler.mock_response.text = ""
  364. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  365. self.assertEqual(apiHandler.sent_requests,
  366. [
  367. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  368. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  369. ])
  370. self.assertEqual(len(apiHandler.requests), 0)
  371. def test_ApiHandler_parse_command8(self):
  372. global apiHandler
  373. self.assertEqual(len(apiHandler.sent_requests), 0)
  374. self.assertEqual(len(apiHandler.requests), 0)
  375. apiHandler.mock_response.text = "runner header\nERROR: Job failed (system failure):"
  376. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  377. self.assertEqual(apiHandler.sent_requests,
  378. [
  379. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  380. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  381. ])
  382. self.assertEqual(len(apiHandler.requests), 0)
  383. def test_ApiHandler_parse_command9(self):
  384. global apiHandler
  385. self.assertEqual(len(apiHandler.sent_requests), 0)
  386. self.assertEqual(len(apiHandler.requests), 0)
  387. apiHandler.mock_response.text = "runner header\nERROR: Job failed: canceled\n"
  388. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  389. self.assertEqual(apiHandler.sent_requests,
  390. [
  391. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  392. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  393. ])
  394. self.assertEqual(len(apiHandler.requests), 0)
  395. def test_ApiHandler_parse_command10(self):
  396. global apiHandler
  397. self.assertEqual(len(apiHandler.sent_requests), 0)
  398. self.assertEqual(len(apiHandler.requests), 0)
  399. apiHandler.mock_response.text = "runner header\nsome text\nsome text"
  400. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  401. self.assertEqual(apiHandler.sent_requests,
  402. [
  403. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  404. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  405. ])
  406. self.assertEqual(len(apiHandler.requests), 0)
  407. def test_ApiHandler_parse_command11(self):
  408. global apiHandler
  409. self.assertEqual(len(apiHandler.sent_requests), 0)
  410. self.assertEqual(len(apiHandler.requests), 0)
  411. apiHandler.mock_response.text = "Cloning into '/jobs/simplepackagemanager/spm'...\n" + \
  412. "fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@" + \
  413. "gitlab.com/simplepackagemanager/spm.git/': The requested URL returned error: 500\n" + \
  414. "/bin/bash: line 50: cd: /jobs/simplepackagemanager/spm: No such file or directory\n"
  415. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  416. self.assertEqual(apiHandler.sent_requests,
  417. [
  418. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  419. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  420. ])
  421. self.assertEqual(len(apiHandler.requests), 0)
  422. def test_ApiHandler_parse_command12(self):
  423. global apiHandler
  424. self.assertEqual(len(apiHandler.sent_requests), 0)
  425. self.assertEqual(len(apiHandler.requests), 0)
  426. apiHandler.mock_response.text = "some text here\n" + \
  427. "Uploading artifacts...\n" + \
  428. "logs: found 39 matching files  \n" + \
  429. "ERROR: Uploading artifacts to coordinator... error" + \
  430. " error=couldn't execute POST against " + \
  431. "https://gitlab.com/api/v4/jobs/12345667/artifacts?expire_in=3+week: " + \
  432. "Post https://gitlab.com/api/v4/jobs/12345678/artifacts?expire_in=3+week: " + \
  433. "EOF id=32838039 token=zzz1_-aa\n" + \
  434. "WARNING: Retrying... " + \
  435. " \n" + \
  436. "ERROR: Uploading artifacts to coordinator... error" + \
  437. " error=couldn't execute POST against " + \
  438. "https://gitlab.com/api/v4/jobs/12345678/artifacts?expire_in=3+week: " + \
  439. "Post https://gitlab.com/api/v4/jobs/12345678/artifacts?expire_in=3+week: " + \
  440. "dial tcp 52.167.219.168:443: getsockopt: connection refused " + \
  441. "id=32838039 token=zzz1_-aa\n" + \
  442. "FATAL: invalid argument " + \
  443. " \n" + \
  444. "ERROR: Job failed: exit code 1\n" + \
  445. "\n"
  446. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  447. self.assertEqual(apiHandler.sent_requests,
  448. [
  449. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  450. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  451. ])
  452. self.assertEqual(len(apiHandler.requests), 0)
  453. def test_ApiHandler_parse_command13(self):
  454. global apiHandler
  455. self.assertEqual(len(apiHandler.sent_requests), 0)
  456. self.assertEqual(len(apiHandler.requests), 0)
  457. apiHandler.mock_response.text = \
  458. "some text here\n" + \
  459. "Uploading artifacts...\n" + \
  460. "logs: found 3 matching files  \n" + \
  461. "ERROR: Uploading artifacts to coordinator... error" + \
  462. " error=couldn't execute POST against " + \
  463. "https://gitlab.com/api/v4/jobs/34276002/artifacts?expire_in=3+week: " + \
  464. "Post https://gitlab.com/api/v4/jobs/34276002/artifacts?expire_in=3+week: " + \
  465. "dial tcp: i/o timeout id=34276002 token=vpZsbcy8\n" + \
  466. "WARNING: Retrying... " + \
  467. " \n" + \
  468. "ERROR: Uploading artifacts to coordinator... error" + \
  469. " error=couldn't execute POST against " + \
  470. "https://gitlab.com/api/v4/jobs/34276002/artifacts?expire_in=3+week: " + \
  471. "Post https://gitlab.com/api/v4/jobs/34276002/artifacts?expire_in=3+week: " + \
  472. "dial tcp: i/o timeout id=34276002 token=vpZsbcy8\n" + \
  473. "WARNING: Retrying... " + \
  474. " \n" + \
  475. "ERROR: Uploading artifacts to coordinator... error" + \
  476. " error=couldn't execute POST against " + \
  477. "https://gitlab.com/api/v4/jobs/34276002/artifacts?expire_in=3+week: " + \
  478. "Post https://gitlab.com/api/v4/jobs/34276002/artifacts?expire_in=3+week: " + \
  479. "dial tcp: i/o timeout id=34276002 token=vpZsbcy8\n" + \
  480. "FATAL: invalid argument " + \
  481. " \n" + \
  482. "ERROR: Job failed: exit status 1\n" + \
  483. "\n"
  484. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  485. self.assertEqual(apiHandler.sent_requests,
  486. [
  487. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  488. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  489. ])
  490. self.assertEqual(len(apiHandler.requests), 0)
  491. def test_ApiHandler_parse_command14(self):
  492. global apiHandler
  493. self.assertEqual(len(apiHandler.sent_requests), 0)
  494. self.assertEqual(len(apiHandler.requests), 0)
  495. apiHandler.mock_response.text = """section_end:1509362288:build_script section_start:1509362288:after_script section_end:1509362288:after_script section_start:1509362288:upload_artifacts section_end:1509362288:upload_artifacts ERROR: Job failed: exit code 137
  496. 
  497. """
  498. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  499. self.assertEqual(apiHandler.sent_requests,
  500. [
  501. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  502. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  503. ])
  504. self.assertEqual(len(apiHandler.requests), 0)
  505. def test_ApiHandler_parse_command15(self):
  506. global apiHandler
  507. self.assertEqual(len(apiHandler.sent_requests), 0)
  508. self.assertEqual(len(apiHandler.requests), 0)
  509. apiHandler.mock_response.text = """Pulling docker image debian:unstable ...
  510. ERROR: Preparation failed: Error: No such image: debian:unstable
  511. Will be retried in 3s ...
  512. ERROR: Job failed (system failure): Error: No such image: debian:unstable
  513. """
  514. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  515. self.assertEqual(apiHandler.sent_requests,
  516. [
  517. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  518. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  519. ])
  520. self.assertEqual(len(apiHandler.requests), 0)
  521. def test_ApiHandler_parse_command16(self):
  522. global apiHandler
  523. self.assertEqual(len(apiHandler.sent_requests), 0)
  524. self.assertEqual(len(apiHandler.requests), 0)
  525. apiHandler.mock_response.text = """bin: found 18 matching files 
  526. WARNING: Uploading artifacts to coordinator... failed id=44715830 responseStatus=500 Server Error status=500 Server Error token=xDVuvywY
  527. WARNING: Retrying... 
  528. WARNING: Uploading artifacts to coordinator... failed id=44715830 responseStatus=500 Server Error status=500 Server Error token=xDVuvywY
  529. WARNING: Retrying... 
  530. WARNING: Uploading artifacts to coordinator... failed id=44715830 responseStatus=500 Server Error status=500 Server Error token=xDVuvywY
  531. FATAL: invalid argument 
  532. section_end:1513334209:upload_artifacts ERROR: Job failed: exit code 1
  533. 
  534. """
  535. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  536. self.assertEqual(apiHandler.sent_requests,
  537. [
  538. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  539. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  540. ])
  541. self.assertEqual(len(apiHandler.requests), 0)
  542. def test_ApiHandler_parse_command17(self):
  543. global apiHandler
  544. self.assertEqual(len(apiHandler.sent_requests), 0)
  545. self.assertEqual(len(apiHandler.requests), 0)
  546. apiHandler.mock_response.text = """section_end:1526049500:build_script section_start:1526049500:after_script section_end:1526049500:after_script section_start:1526049500:upload_artifacts section_end:1526049500:upload_artifacts ERROR: Job failed: execution took longer than 3h0m0s seconds
  547. """
  548. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  549. self.assertEqual(apiHandler.sent_requests,
  550. [
  551. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  552. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  553. ])
  554. self.assertEqual(len(apiHandler.requests), 0)
  555. def test_ApiHandler_parse_command18(self):
  556. global apiHandler
  557. self.assertEqual(len(apiHandler.sent_requests), 0)
  558. self.assertEqual(len(apiHandler.requests), 0)
  559. apiHandler.mock_response.text = """ ...
  560. Pulling docker image debian:unstable ...
  561. ERROR: Job failed: Error response from daemon: error parsing HTTP 404 response body: invalid character 'p' after top-level value: "404 page not found\n" (executor_docker.go:168:0s)
  562. 
  563. """
  564. apiHandler.parse_command(("getlog", Core.config.global_options, 12, 34, "12345"))
  565. self.assertEqual(apiHandler.sent_requests,
  566. [
  567. ('https://gitlab.com/api/v4/projects/12/jobs/34/trace', 'testapitoken', False, 3),
  568. ('https://gitlab.com/api/v4/projects/12/jobs/34/retry', 'testapitoken', True, 3)
  569. ])
  570. self.assertEqual(len(apiHandler.requests), 0)
  571. class TestMessageHandler(unittest.TestCase):
  572. def setUp(self):
  573. Core.config = Configuration()
  574. Core.config.loadDefaultOptions()
  575. Core.config.global_options.ii_server_directory = "test/channels"
  576. Configuration.irc_message_pause = 0
  577. global messageHandler
  578. messageHandler = MessageHandler()
  579. def tearDown(self):
  580. global messageHandler
  581. messageHandler = None
  582. Core.config = None
  583. def test_MessageHandler_add(self):
  584. global messageHandler
  585. self.assertEqual(len(messageHandler.messages), 0)
  586. messageHandler.add("channel1", "this is message 1")
  587. self.assertEqual(len(messageHandler.messages), 1)
  588. self.assertEqual(messageHandler.messages[0], ("channel1", "this is message 1"))
  589. def test_MessageHandler_add2(self):
  590. global messageHandler
  591. self.assertEqual(len(messageHandler.messages), 0)
  592. messageHandler.add("channel1", "this is message 1")
  593. self.assertEqual(len(messageHandler.messages), 1)
  594. messageHandler.add("channel2", "this is message 2")
  595. self.assertEqual(len(messageHandler.messages), 2)
  596. self.assertEqual(messageHandler.messages[0], ("channel2", "this is message 2"))
  597. self.assertEqual(messageHandler.messages[1], ("channel1", "this is message 1"))
  598. def test_MessageHandler_split1(self):
  599. global messageHandler
  600. self.assertEqual(len(messageHandler.messages), 0)
  601. parts = messageHandler.split("channel1",
  602. "this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message ")
  603. self.assertEqual(parts,
  604. [
  605. ('channel1', 'this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message')
  606. ])
  607. def test_MessageHandler_split2(self):
  608. global messageHandler
  609. self.assertEqual(len(messageHandler.messages), 0)
  610. parts = messageHandler.split("channel1",
  611. "this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message ")
  612. self.assertEqual(parts,
  613. [
  614. ('channel1', 'this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this is message long message this'),
  615. ('channel1', 'is message long message this is message long message this is message long message this is message long message this is message long message this is message long message')
  616. ])
  617. def test_run1(self):
  618. messageHandler.start()
  619. time.sleep(1)
  620. self.assertEqual(messageHandler.isAlive(), True)
  621. messageHandler.die = True
  622. time.sleep(1)
  623. self.assertEqual(messageHandler.isAlive(), False)
  624. def test_run2(self):
  625. messageHandler.start()
  626. messageHandler.add("channel1", "this is message")
  627. self.assertEqual(messageHandler.isAlive(), True)
  628. time.sleep(1)
  629. self.assertEqual(messageHandler.isAlive(), True)
  630. messageHandler.die = True
  631. messageHandler.join()
  632. self.assertEqual(messageHandler.isAlive(), False)
  633. with open(Core.config.global_options.ii_server_directory + "/channel1/in", "r") as r:
  634. text = r.read()
  635. self.assertEqual(text, "this is message\n")
  636. class MessageHandlerMock(MessageHandler):
  637. def start(self):
  638. pass
  639. class SocketMock():
  640. def __init__(self):
  641. self.time = 0
  642. def settimeout(self, time):
  643. self.time = time
  644. class WFileMock():
  645. def __init__(self):
  646. self.closed = False
  647. self.data = None
  648. def close(self):
  649. self.closed = True
  650. def write(self, data):
  651. self.data = data
  652. def flush(self):
  653. pass
  654. class RFileMock():
  655. def __init__(self):
  656. self._sock = SocketMock()
  657. self.data = ""
  658. self.closed = False
  659. def read(self, size):
  660. return self.data[:size]
  661. def close(self):
  662. self.closed = True
  663. def flush(self):
  664. pass
  665. def readline(self, size):
  666. return ""
  667. class ServerHandlerMock(ServerHandler):
  668. def __init__(self, *args):
  669. self.response_code = 0
  670. self.headers_compleate = False
  671. self.send_headers_complete = False
  672. self.wfile = WFileMock()
  673. self.rfile = RFileMock()
  674. self.headers = dict()
  675. self.send_headers = dict()
  676. self.serverData = ""
  677. ServerHandler.__init__(self, *args)
  678. def send_response(self, code):
  679. self.response_code = code
  680. def end_headers(self):
  681. self.headers_compleate = True
  682. self.send_headers_complete = True
  683. def addData(self, data):
  684. self.headers["Content-Length"] = len(data)
  685. self.rfile.data = self.fromStr(data)
  686. def addDataFile(self, name):
  687. with open(name, "r") as r:
  688. data = r.read()
  689. self.addData(data)
  690. def send_header(self, name, value):
  691. self.send_headers[name] = value
  692. def setup(self):
  693. pass
  694. def handle(self):
  695. pass
  696. class RequestMock:
  697. def makefile(self, mode, size):
  698. return RFileMock()
  699. class TestServerHandler(unittest.TestCase):
  700. def setUp(self):
  701. Core.config = Configuration()
  702. Core.config.show_info = False
  703. Core.server = ServerHandlerMock(RequestMock(), ("127.0.0.1", 123), None)
  704. Core.messageHandler = MessageHandlerMock()
  705. Core.apiHandler = ApiHandlerMock()
  706. # Core.log = logging.getLogger('log')
  707. def tearDown(self):
  708. Core.config = None
  709. Core.server = None
  710. Core.messageHandler = None
  711. Core.apiHandler = None
  712. # Core.log = None
  713. def run_post(self, configName, path, data, retCode):
  714. Core.config.loadConfiguration(configName)
  715. Core.server.path = path
  716. Core.server.addDataFile(data)
  717. Core.server.do_POST()
  718. self.assertEqual(Core.server.response_code, retCode)
  719. self.assertTrue(Core.server.send_headers_complete)
  720. def run_post_github(self, configName, path, data, object_kind, retCode):
  721. Core.config.loadConfiguration(configName)
  722. Core.server.path = path
  723. Core.server.addDataFile(data)
  724. Core.server.headers["X-GitHub-Event"] = object_kind
  725. Core.server.do_POST()
  726. self.assertEqual(Core.server.response_code, retCode)
  727. self.assertTrue(Core.server.send_headers_complete)
  728. def test_get(self):
  729. Core.config.loadConfiguration("test/config/config1.yaml")
  730. Core.server.do_GET()
  731. self.assertEqual(Core.server.response_code, 400)
  732. self.assertTrue(Core.server.send_headers_complete)
  733. self.assertTrue(Core.server.wfile.closed)
  734. def test_head(self):
  735. Core.config.loadConfiguration("test/config/config1.yaml")
  736. Core.server.do_HEAD()
  737. self.assertEqual(Core.server.response_code, 400)
  738. self.assertTrue(Core.server.send_headers_complete)
  739. self.assertTrue(Core.server.wfile.closed)
  740. def test_post_error1(self):
  741. Core.config.loadConfiguration("test/config/config1.yaml")
  742. Core.server.path = "/"
  743. Core.server.addData("{ \"test\": 1 }")
  744. Core.server.do_POST()
  745. self.assertEqual(Core.server.response_code, 400)
  746. self.assertTrue(Core.server.send_headers_complete)
  747. self.assertTrue(Core.server.wfile.closed)
  748. def test_post_error2(self):
  749. self.run_post("test/config/post1.yaml", "/qqqqq1/", "test/json/push.json", 400)
  750. self.assertEqual(len(Core.messageHandler.messages), 0)
  751. def test_post_error3(self):
  752. self.run_post("test/config/post_no_error.yaml", "/qqqqq1/", "test/json/push.json", 200)
  753. self.assertEqual(len(Core.messageHandler.messages), 0)
  754. def test_post_error4(self):
  755. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/push_wrong_project.json", 400)
  756. self.assertEqual(len(Core.messageHandler.messages), 0)
  757. def test_post_push(self):
  758. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/push.json", 200)
  759. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  760. self.assertEqual(len(Core.apiHandler.requests), 0)
  761. self.assertEqual(Core.messageHandler.messages,
  762. [
  763. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  764. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  765. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  766. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  767. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  768. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  769. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  770. ('#channel1', 'and here second line'),
  771. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  772. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  773. ])
  774. def test_post_push2(self):
  775. self.run_post("test/config/post3.yaml", "/qqqqq/", "test/json/push.json", 200)
  776. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  777. self.assertEqual(len(Core.apiHandler.requests), 0)
  778. self.assertEqual(Core.messageHandler.messages,
  779. [
  780. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  781. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  782. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  783. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  784. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  785. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  786. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  787. ('#channel1', 'and here second line'),
  788. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  789. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  790. ])
  791. def test_post_push3(self):
  792. self.run_post("test/config/post3.yaml", "/aaaa/bbb/", "test/json/push.json", 200)
  793. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  794. self.assertEqual(len(Core.messageHandler.messages), 0)
  795. self.assertEqual(len(Core.apiHandler.requests), 0)
  796. def test_post_push4(self):
  797. self.run_post("test/config/post4.yaml", "/aaaa/bbb/", "test/json/issue_opened.json", 200)
  798. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  799. self.assertEqual(len(Core.apiHandler.requests), 0)
  800. self.assertEqual(Core.messageHandler.messages,
  801. [
  802. ('#channel4', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f opened issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4'),
  803. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f opened issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4')
  804. ])
  805. def test_post_push_first1(self):
  806. self.run_post("test/config/post4.yaml", "/qqqqq/", "test/json/push_first.json", 200)
  807. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  808. self.assertEqual(len(Core.apiHandler.requests), 0)
  809. self.assertEqual(Core.messageHandler.messages,
  810. [
  811. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d5810b8\x0f - Add some more error checks and escapes.'),
  812. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303508999b\x0f - Add error checks into common.sh'),
  813. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03032ddf896\x0f - Add common_run_package into clean and updatesrc scripts.'),
  814. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303e264276\x0f - Add libxml2 package.'),
  815. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303b1506f0\x0f - Add curl package.'),
  816. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030300ad444\x0f - Fix MANPATH variable in generated environments.'),
  817. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03038478b62\x0f - Add libpng package.'),
  818. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d356bd7\x0f - Create env, bin, tmp directories if it not exists.'),
  819. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030365ddf15\x0f - Initial commit.'),
  820. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 9 commits \x0303master\x0f https://gitlab.com/simplepackagemanager/hooktest/commits/d5810b8'),
  821. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d5810b8\x0f - Add some more error checks and escapes.'),
  822. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303508999b\x0f - Add error checks into common.sh'),
  823. ('#channel1', 'This allow override function from package script.'),
  824. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03032ddf896\x0f - Add common_run_package into clean and updatesrc scripts.'),
  825. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303e264276\x0f - Add libxml2 package.'),
  826. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303b1506f0\x0f - Add curl package.'),
  827. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030300ad444\x0f - Fix MANPATH variable in generated environments.'),
  828. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03038478b62\x0f - Add libpng package.'),
  829. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d356bd7\x0f - Create env, bin, tmp directories if it not exists.'),
  830. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030365ddf15\x0f - Initial commit.'),
  831. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 9 commits \x0303master\x0f https://gitlab.com/simplepackagemanager/hooktest/commits/d5810b8')
  832. ])
  833. def test_post_push_first2(self):
  834. self.run_post("test/config/post5.yaml", "/qqqqq/", "test/json/push_first.json", 200)
  835. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  836. self.assertEqual(len(Core.apiHandler.requests), 0)
  837. self.assertEqual(Core.messageHandler.messages,
  838. [
  839. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030365ddf15\x0f - Initial commit.'),
  840. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d356bd7\x0f - Create env, bin, tmp directories if it not exists.'),
  841. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03038478b62\x0f - Add libpng package.'),
  842. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030300ad444\x0f - Fix MANPATH variable in generated environments.'),
  843. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303b1506f0\x0f - Add curl package.'),
  844. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303e264276\x0f - Add libxml2 package.'),
  845. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03032ddf896\x0f - Add common_run_package into clean and updatesrc scripts.'),
  846. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303508999b\x0f - Add error checks into common.sh'),
  847. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d5810b8\x0f - Add some more error checks and escapes.'),
  848. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 9 commits \x0303master\x0f https://gitlab.com/simplepackagemanager/hooktest/commits/d5810b8'),
  849. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d5810b8\x0f - Add some more error checks and escapes.'),
  850. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303508999b\x0f - Add error checks into common.sh'),
  851. ('#channel1', 'This allow override function from package script.'),
  852. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03032ddf896\x0f - Add common_run_package into clean and updatesrc scripts.'),
  853. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303e264276\x0f - Add libxml2 package.'),
  854. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303b1506f0\x0f - Add curl package.'),
  855. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030300ad444\x0f - Fix MANPATH variable in generated environments.'),
  856. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03038478b62\x0f - Add libpng package.'),
  857. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303d356bd7\x0f - Create env, bin, tmp directories if it not exists.'),
  858. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x030365ddf15\x0f - Initial commit.'),
  859. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 9 commits \x0303master\x0f https://gitlab.com/simplepackagemanager/hooktest/commits/d5810b8')
  860. ])
  861. def test_post_push_new_branch(self):
  862. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/push_new_branch.json", 200)
  863. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  864. self.assertEqual(len(Core.apiHandler.requests), 0)
  865. self.assertEqual(Core.messageHandler.messages,
  866. [
  867. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f created/changed branch \x0303branch3\x0f on commit \x0303ec86559\x0f https://gitlab.com/4144/hooktest/commits/branch3'),
  868. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f created/changed branch \x0303branch3\x0f on commit \x0303ec86559\x0f https://gitlab.com/4144/hooktest/commits/branch3')
  869. ])
  870. def test_post_push_delete_branch(self):
  871. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/push_delete_branch.json", 200)
  872. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  873. self.assertEqual(len(Core.apiHandler.requests), 0)
  874. self.assertEqual(Core.messageHandler.messages,
  875. [
  876. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f deleted branch \x0303branch3\x0f'),
  877. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f deleted branch \x0303branch3\x0f')
  878. ])
  879. def test_post_tag_push(self):
  880. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/tag_push.json", 200)
  881. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  882. self.assertEqual(len(Core.apiHandler.requests), 0)
  883. self.assertEqual(Core.messageHandler.messages,
  884. [
  885. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed tag \x0303testtag1\x0f on commit \x0303a63cb84\x0f https://gitlab.com/4144/hooktest/commit/a63cb84'),
  886. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed tag \x0303testtag1\x0f on commit \x0303a63cb84\x0f https://gitlab.com/4144/hooktest/commit/a63cb84')
  887. ])
  888. def test_post_tag_push_delete(self):
  889. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/tag_push_delete.json", 200)
  890. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  891. self.assertEqual(len(Core.apiHandler.requests), 0)
  892. self.assertEqual(Core.messageHandler.messages,
  893. [
  894. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f deleted tag \x0303testtag1\x0f'),
  895. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f deleted tag \x0303testtag1\x0f')
  896. ])
  897. def test_post_note_commit(self):
  898. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/note_commit.json", 200)
  899. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  900. self.assertEqual(len(Core.apiHandler.requests), 0)
  901. self.assertEqual(Core.messageHandler.messages,
  902. [
  903. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note on commit \x03039485388\x0f https://gitlab.com/4144/hooktest/commit/9485388#note_4860635'),
  904. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note on commit \x03039485388\x0f https://gitlab.com/4144/hooktest/commit/9485388#note_4860635')
  905. ])
  906. def test_post_note_merge_request(self):
  907. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/note_merge_request.json", 200)
  908. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  909. self.assertEqual(len(Core.apiHandler.requests), 0)
  910. self.assertEqual(Core.messageHandler.messages,
  911. [
  912. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note into merge request \x0303!5\x0f (\x03034144testgroup:master\x0f to \x0303master\x0f) https://gitlab.com/4144/hooktest/merge_requests/5#note_4860679'),
  913. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note into merge request \x0303!5\x0f (\x03034144testgroup:master\x0f to \x0303master\x0f) https://gitlab.com/4144/hooktest/merge_requests/5#note_4860679')
  914. ])
  915. def test_post_note_issue(self):
  916. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/note_issue.json", 200)
  917. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  918. self.assertEqual(len(Core.apiHandler.requests), 0)
  919. self.assertEqual(Core.messageHandler.messages,
  920. [
  921. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note into issue \x0303#2\x0f https://gitlab.com/4144/hooktest/issues/2#note_4860707'),
  922. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note into issue \x0303#2\x0f https://gitlab.com/4144/hooktest/issues/2#note_4860707')
  923. ])
  924. def test_post_note_snippet(self):
  925. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/note_snippet.json", 200)
  926. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  927. self.assertEqual(len(Core.apiHandler.requests), 0)
  928. self.assertEqual(Core.messageHandler.messages,
  929. [
  930. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note into snippet \x0303$17880\x0f https://gitlab.com/4144/hooktest/snippets/17880#note_4860729'),
  931. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f add note into snippet \x0303$17880\x0f https://gitlab.com/4144/hooktest/snippets/17880#note_4860729')
  932. ])
  933. def test_post_build_pending1(self):
  934. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/build_pending.json", 200)
  935. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  936. self.assertEqual(len(Core.apiHandler.requests), 0)
  937. self.assertEqual(len(Core.messageHandler.messages), 0)
  938. def test_post_build_pending2(self):
  939. self.run_post("test/config/post8.yaml", "/qqqqq/", "test/json/build_pending.json", 200)
  940. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  941. self.assertEqual(len(Core.apiHandler.requests), 0)
  942. self.assertEqual(len(Core.messageHandler.messages), 0)
  943. def test_post_build_failed1(self):
  944. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/build_failed.json", 200)
  945. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  946. self.assertEqual(len(Core.apiHandler.requests), 0)
  947. self.assertEqual(Core.messageHandler.messages,
  948. [
  949. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126'),
  950. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  951. ])
  952. def test_post_build_failed2(self):
  953. self.run_post("test/config/post6.yaml", "/qqqqq/", "test/json/build_failed.json", 200)
  954. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  955. self.assertEqual(len(Core.apiHandler.requests), 0)
  956. self.assertEqual(Core.messageHandler.messages,
  957. [
  958. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126'),
  959. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  960. ])
  961. def test_post_build_failed3(self):
  962. self.run_post("test/config/post6.yaml", "/qqqqq2/", "test/json/build_failed.json", 200)
  963. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  964. self.assertEqual(len(Core.apiHandler.requests), 0)
  965. self.assertEqual(Core.messageHandler.messages,
  966. [
  967. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  968. ])
  969. def test_post_build_failed_custom(self):
  970. self.run_post("test/config/post_build_fail_custom.yaml", "/qqqqq/", "test/json/build_failed.json", 200)
  971. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  972. self.assertEqual(len(Core.apiHandler.requests), 0)
  973. self.assertEqual(Core.messageHandler.messages,
  974. [
  975. ('#channel3', 'fail for all'),
  976. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126'),
  977. ('#channel1', 'fail for channel 1'),
  978. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  979. ])
  980. def test_post_build_failed_ignore(self):
  981. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/build_failed_allow_failure.json", 200)
  982. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  983. self.assertEqual(len(Core.messageHandler.messages), 0)
  984. self.assertEqual(len(Core.apiHandler.requests), 0)
  985. def test_post_build_failed_allow_failure(self):
  986. self.run_post("test/config/post2.yaml", "/qqqqq/", "test/json/build_failed_allow_failure.json", 200)
  987. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  988. self.assertEqual(len(Core.apiHandler.requests), 0)
  989. self.assertEqual(Core.messageHandler.messages,
  990. [
  991. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  992. ])
  993. def test_post_build_failed_retry1(self):
  994. self.run_post("test/config/post7.yaml", "/qqqqq/", "test/json/build_failed.json", 200)
  995. self.assertEqual(Core.messageHandler.messages,
  996. [
  997. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126'),
  998. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  999. ])
  1000. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1001. self.assertEqual(Core.apiHandler.requests,
  1002. [
  1003. ('getlog', Core.config.projects["/qqqqq/"].options, 211275, 1102126, "724883eed1db5e2cb097058fa16d67def6c031b9")
  1004. ])
  1005. Core.apiHandler.retry_builds["724883eed1db5e2cb097058fa16d67def6c031b9"] = 1
  1006. self.run_post("test/config/post7.yaml", "/qqqqq/", "test/json/build_failed.json", 200)
  1007. self.assertEqual(Core.apiHandler.requests,
  1008. [
  1009. ('getlog', Core.config.projects["/qqqqq/"].options, 211275, 1102126, "724883eed1db5e2cb097058fa16d67def6c031b9"),
  1010. ('getlog', Core.config.projects["/qqqqq/"].options, 211275, 1102126, "724883eed1db5e2cb097058fa16d67def6c031b9")
  1011. ])
  1012. def test_post_build_failed_retry2(self):
  1013. Core.apiHandler.retry_builds["724883eed1db5e2cb097058fa16d67def6c031b9"] = 1
  1014. self.run_post("test/config/post8.yaml", "/qqqqq/", "test/json/build_failed.json", 200)
  1015. self.assertEqual(Core.messageHandler.messages,
  1016. [
  1017. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126'),
  1018. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  1019. ])
  1020. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1021. self.assertEqual(len(Core.apiHandler.requests), 0)
  1022. def test_post_build_fail_final(self):
  1023. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/build_success2.json", 200)
  1024. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1025. self.assertEqual(len(Core.apiHandler.requests), 0)
  1026. self.assertEqual(Core.messageHandler.messages,
  1027. [
  1028. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#13419990\x0f for commit \x030332c9cf6\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/13419990'),
  1029. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#13419990\x0f for commit \x030332c9cf6\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/13419990')
  1030. ])
  1031. def test_post_build_fail_allowed_to_fail1(self):
  1032. self.run_post("test/config/post10.yaml", "/qqqqq2/", "test/json/build_failed.json", 200)
  1033. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1034. self.assertEqual(len(Core.apiHandler.requests), 0)
  1035. self.assertEqual(len(Core.messageHandler.messages), 0)
  1036. def test_post_build_fail_allowed_to_fail2(self):
  1037. self.run_post("test/config/post11.yaml", "/qqqqq2/", "test/json/build_failed.json", 200)
  1038. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1039. self.assertEqual(len(Core.apiHandler.requests), 0)
  1040. self.assertEqual(Core.messageHandler.messages,
  1041. [
  1042. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102126 pages\x0f for commit \x0303724883e\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/builds/1102126')
  1043. ])
  1044. def test_post_build_success_final(self):
  1045. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/build_success.json", 200)
  1046. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1047. self.assertEqual(len(Core.apiHandler.requests), 0)
  1048. self.assertEqual(Core.messageHandler.messages,
  1049. [
  1050. ('#channel3', '[\x0302hooktest\x0f] Build \x0307#1102130\x0f for commit \x0303724883e\x0f from \x0303master\x0f success https://gitlab.com/4144/hooktest/builds/1102130'),
  1051. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#1102130\x0f for commit \x0303724883e\x0f from \x0303master\x0f success https://gitlab.com/4144/hooktest/builds/1102130')
  1052. ])
  1053. def test_post_build_success_allow_fail(self):
  1054. self.run_post("test/config/post6.yaml", "/qqqqq2/", "test/json/build_success3.json", 200)
  1055. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1056. self.assertEqual(len(Core.apiHandler.requests), 0)
  1057. self.assertEqual(len(Core.messageHandler.messages), 0)
  1058. def test_post_build_success_allow_fail2(self):
  1059. self.run_post("test/config/post10.yaml", "/qqqqq2/", "test/json/build_success3.json", 200)
  1060. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1061. self.assertEqual(len(Core.apiHandler.requests), 0)
  1062. self.assertEqual(Core.messageHandler.messages,
  1063. [
  1064. ('#channel1', '[\x0302hooktest\x0f] Build \x0307#13419986\x0f for commit \x030332c9cf6\x0f from \x0303master\x0f success https://gitlab.com/4144/hooktest/builds/13419986')
  1065. ])
  1066. def test_post_build_success_skipped(self):
  1067. self.run_post("test/config/post2.yaml", "/qqqqq/", "test/json/build_success.json", 200)
  1068. self.assertEqual(len(Core.apiHandler.sent_requests), 0)
  1069. self.assertEqual(len(Core.messageHandler.messages), 0)
  1070. self.assertEqual(len(Core.apiHandler.requests), 0)
  1071. def test_post_pipeline_success1(self):
  1072. self.run_post("test/config/post2.yaml", "/qqqqq/", "test/json/pipeline_success1.json", 200)
  1073. self.assertEqual(Core.messageHandler.messages,
  1074. [
  1075. ('#channel3', '[\x0302hooktest\x0f] Pipeline \x0307#4012845\x0f for commit \x0303704fb18\x0f from \x0303master\x0f success https://gitlab.com/4144/hooktest/pipelines/4012845'),
  1076. ('#channel1', '[\x0302hooktest\x0f] Pipeline \x0307#4012845\x0f for commit \x0303704fb18\x0f from \x0303master\x0f success https://gitlab.com/4144/hooktest/pipelines/4012845')
  1077. ])
  1078. def test_post_pipeline_success2(self):
  1079. self.run_post("test/config/post12.yaml", "/qqqqq/", "test/json/pipeline_success1.json", 200)
  1080. self.assertEqual(Core.messageHandler.messages,
  1081. [
  1082. ])
  1083. def test_post_pipeline_success_bad(self):
  1084. self.run_post("test/config/post2.yaml", "/qqqqq/", "test/json/pipeline_success2.json", 200)
  1085. self.assertEqual(Core.messageHandler.messages,
  1086. [
  1087. ('#channel3', '[\x0302hooktest\x0f] Pipeline \x0307#4012845\x0f for commit \x0303704fb18\x0f from \x0303master\x0f success https://gitlab.com/4144/hooktest/pipelines/4012845'),
  1088. ('#channel1', '[\x0302hooktest\x0f] Pipeline \x0307#4012845\x0f for commit \x0303704fb18\x0f from \x0303master\x0f success https://gitlab.com/4144/hooktest/pipelines/4012845')
  1089. ])
  1090. def test_post_pipeline_failed1(self):
  1091. self.run_post("test/config/post2.yaml", "/qqqqq/", "test/json/pipeline_failed1.json", 200)
  1092. self.assertEqual(Core.messageHandler.messages,
  1093. [
  1094. ('#channel3', '[\x0302hooktest\x0f] Pipeline \x0307#4013166\x0f for commit \x030345d66ca\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/pipelines/4013166'),
  1095. ('#channel1', '[\x0302hooktest\x0f] Pipeline \x0307#4013166\x0f for commit \x030345d66ca\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/pipelines/4013166')
  1096. ])
  1097. def test_post_pipeline_failed2(self):
  1098. self.run_post("test/config/post6.yaml", "/qqqqq/", "test/json/pipeline_failed1.json", 200)
  1099. self.assertEqual(Core.messageHandler.messages,
  1100. [
  1101. ('#channel3', '[\x0302hooktest\x0f] Pipeline \x0307#4013166\x0f for commit \x030345d66ca\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/pipelines/4013166'),
  1102. ('#channel1', 'pipeline failed message'),
  1103. ('#channel1', '[\x0302hooktest\x0f] Pipeline \x0307#4013166\x0f for commit \x030345d66ca\x0f from \x0303master\x0f failed https://gitlab.com/4144/hooktest/pipelines/4013166')
  1104. ])
  1105. def test_post_pipeline_failed3(self):
  1106. self.run_post("test/config/post9.yaml", "/qqqqq/", "test/json/pipeline_failed1.json", 200)
  1107. self.assertEqual(len(Core.messageHandler.messages), 0)
  1108. def test_post_pipeline_failed_bad(self):
  1109. self.run_post("test/config/post2.yaml", "/qqqqq/", "test/json/pipeline_failed2.json", 200)
  1110. self.assertEqual(len(Core.messageHandler.messages), 0)
  1111. def test_post_merge_request_merged(self):
  1112. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/merge_request_merged.json", 200)
  1113. self.assertEqual(Core.messageHandler.messages,
  1114. [
  1115. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f merged merge request \x0303!5\x0f: test9 https://gitlab.com/4144/hooktest/merge_requests/5'),
  1116. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f merged merge request \x0303!5\x0f: test9 https://gitlab.com/4144/hooktest/merge_requests/5')
  1117. ])
  1118. def test_post_merge_request_opened(self):
  1119. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/merge_request_opened.json", 200)
  1120. self.assertEqual(Core.messageHandler.messages,
  1121. [
  1122. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f opened merge request \x0303!6\x0f: Merge branch \'master\' into \'branch2\' https://gitlab.com/4144/hooktest/merge_requests/6'),
  1123. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f opened merge request \x0303!6\x0f: Merge branch \'master\' into \'branch2\' https://gitlab.com/4144/hooktest/merge_requests/6')
  1124. ])
  1125. def test_post_merge_request_closed(self):
  1126. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/merge_request_closed.json", 200)
  1127. self.assertEqual(Core.messageHandler.messages,
  1128. [
  1129. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f closed merge request \x0303!6\x0f: Merge branch \'master\' into \'branch2\' https://gitlab.com/4144/hooktest/merge_requests/6'),
  1130. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f closed merge request \x0303!6\x0f: Merge branch \'master\' into \'branch2\' https://gitlab.com/4144/hooktest/merge_requests/6')
  1131. ])
  1132. def test_post_merge_request_reopened(self):
  1133. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/merge_request_reopened.json", 200)
  1134. self.assertEqual(Core.messageHandler.messages,
  1135. [
  1136. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f reopened merge request \x0303!6\x0f: Merge branch \'master\' into \'branch2\' https://gitlab.com/4144/hooktest/merge_requests/6'),
  1137. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f reopened merge request \x0303!6\x0f: Merge branch \'master\' into \'branch2\' https://gitlab.com/4144/hooktest/merge_requests/6')
  1138. ])
  1139. def test_post_merge_request_updated(self):
  1140. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/merge_request_updated.json", 200)
  1141. self.assertEqual(Core.messageHandler.messages,
  1142. [
  1143. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f updated merge request \x0303!6\x0f: normal mr title https://gitlab.com/4144/hooktest/merge_requests/6'),
  1144. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f updated merge request \x0303!6\x0f: normal mr title https://gitlab.com/4144/hooktest/merge_requests/6')
  1145. ])
  1146. def test_post_issue_opened(self):
  1147. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/issue_opened.json", 200)
  1148. self.assertEqual(Core.messageHandler.messages,
  1149. [
  1150. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f opened issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4'),
  1151. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f opened issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4')
  1152. ])
  1153. def test_post_issue_closed(self):
  1154. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/issue_closed.json", 200)
  1155. self.assertEqual(Core.messageHandler.messages,
  1156. [
  1157. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f closed issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4'),
  1158. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f closed issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4')
  1159. ])
  1160. def test_post_issue_reopened(self):
  1161. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/issue_reopened.json", 200)
  1162. self.assertEqual(Core.messageHandler.messages,
  1163. [
  1164. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f reopened issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4'),
  1165. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f reopened issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4')
  1166. ])
  1167. def test_post_issue_updated(self):
  1168. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/issue_updated.json", 200)
  1169. self.assertEqual(Core.messageHandler.messages,
  1170. [
  1171. ('#channel3', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f updated issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4'),
  1172. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f updated issue \x0303#4\x0f: test issue 3 https://gitlab.com/4144/hooktest/issues/4')
  1173. ])
  1174. def test_post_push_long(self):
  1175. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/push_long.json", 200)
  1176. self.assertEqual(Core.messageHandler.messages,
  1177. [
  1178. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03032371057\x0f - very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line.'),
  1179. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 1 commits \x0303master\x0f https://gitlab.com/4144/hooktest/commit/2371057'),
  1180. ('#channel1', '123456789 123456789 123456789 aaaaa'),
  1181. ('#channel1', '123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789'),
  1182. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03032371057\x0f - very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line. very long line.'),
  1183. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 1 commits \x0303master\x0f https://gitlab.com/4144/hooktest/commit/2371057')
  1184. ])
  1185. def test_post_push_no_commits(self):
  1186. self.run_post("test/config/post_no_commits.yaml", "/qqqqq/", "test/json/push.json", 200)
  1187. self.assertEqual(Core.messageHandler.messages,
  1188. [
  1189. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  1190. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1191. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  1192. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1193. ('#channel1', 'and here second line'),
  1194. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1195. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  1196. ])
  1197. def test_post_push_lines1(self):
  1198. self.run_post("test/config/post1.yaml", "/qqqqq/", "test/json/push_lines.json", 200)
  1199. self.assertEqual(Core.messageHandler.messages,
  1200. [
  1201. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1202. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1203. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1204. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  1205. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1206. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  1207. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1208. ('#channel1', 'line 3'),
  1209. ('#channel1', 'and here second line'),
  1210. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1211. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  1212. ])
  1213. def test_post_push_lines2(self):
  1214. self.run_post("test/config/post_lines1.yaml", "/qqqqq/", "test/json/push_lines.json", 200)
  1215. self.assertEqual(Core.messageHandler.messages,
  1216. [
  1217. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1218. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1219. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1220. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  1221. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1222. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  1223. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1224. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1225. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  1226. ])
  1227. def test_post_push_lines3(self):
  1228. self.run_post("test/config/post_lines2.yaml", "/qqqqq/", "test/json/push_lines.json", 200)
  1229. self.assertEqual(Core.messageHandler.messages,
  1230. [
  1231. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1232. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1233. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1234. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  1235. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1236. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  1237. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1238. ('#channel1', 'line 4'),
  1239. ('#channel1', 'line 3'),
  1240. ('#channel1', 'and here second line'),
  1241. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1242. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  1243. ])
  1244. def test_post_push_branches_deny1(self):
  1245. self.run_post("test/config/post_branches_deny1.yaml", "/qqqqq/", "test/json/push.json", 200)
  1246. self.assertEqual(len(Core.messageHandler.messages), 0)
  1247. def test_post_push_branches_deny2(self):
  1248. self.run_post("test/config/post_branches_deny2.yaml", "/qqqqq/", "test/json/push.json", 200)
  1249. self.assertEqual(len(Core.messageHandler.messages), 0)
  1250. def test_post_push_branches_allow1(self):
  1251. self.run_post("test/config/post_branches_allow1.yaml", "/qqqqq/", "test/json/push.json", 200)
  1252. self.assertEqual(Core.messageHandler.messages,
  1253. [
  1254. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1255. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1256. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1257. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  1258. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1259. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  1260. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1261. ('#channel1', 'and here second line'),
  1262. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1263. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  1264. ])
  1265. def test_post_push_branches_allow2(self):
  1266. self.run_post("test/config/post_branches_allow2.yaml", "/qqqqq/", "test/json/push.json", 200)
  1267. self.assertEqual(Core.messageHandler.messages,
  1268. [
  1269. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1270. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1271. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1272. ('#channel2', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5'),
  1273. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039263c57\x0f - failing build'),
  1274. ('#channel1', 'This reverts commit 9263c57209c2eda23e963d01862a5ded14832fff.'),
  1275. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x03039485388\x0f - Revert "failing build"'),
  1276. ('#channel1', 'and here second line'),
  1277. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f \x0303ec86559\x0f - update from web'),
  1278. ('#channel1', '[\x0302hooktest\x0f] \x0307Andrei Karas\x0f pushed 3 commits \x0303master\x0f https://gitlab.com/4144/hooktest/compare/1234c5...9263c5')
  1279. ])
  1280. def test_create_instance(self):
  1281. handler = ServerHandler(RequestMock(), ("127.0.0.1", 123), None)
  1282. self.assertEqual(handler.version_string(), "nginx")
  1283. handler.log_message("test")
  1284. handler = None
  1285. def test_post_codeship_build_error1(self):
  1286. self.run_post("test/config/codeship1.yaml", "/qqqqq/ship/", "test/json/codeship_error.json", 200)
  1287. self.assertEqual(sorted(Core.messageHandler.messages),
  1288. [
  1289. ('#shipchannel1', '[\x0302manaplus/manaplus\x0f] Build for commit \x0303af76640\x0f from \x0303master\x0f failed https://app.codeship.com/projects/197019/builds/557e747d-2dc0-4898-ba1c-92a38e3af39b'),
  1290. ('#shipchannel2', '[\x0302manaplus/manaplus\x0f] Build for commit \x0303af76640\x0f from \x0303master\x0f failed https://app.codeship.com/projects/197019/builds/557e747d-2dc0-4898-ba1c-92a38e3af39b')
  1291. ])
  1292. def test_post_codeship_build_error2(self):
  1293. self.run_post("test/config/codeship2.yaml", "/qqqqq/ship/", "test/json/codeship_error.json", 200)
  1294. self.assertEqual(sorted(Core.messageHandler.messages),
  1295. [
  1296. ('#shipchannel1', '[\x0302manaplus/manaplus\x0f] Build for commit \x0303af76640\x0f from \x0303master\x0f failed https://app.codeship.com/projects/197019/builds/557e747d-2dc0-4898-ba1c-92a38e3af39b'),
  1297. ('#shipchannel2', '[\x0302manaplus/manaplus\x0f] Build for commit \x0303af76640\x0f from \x0303master\x0f failed https://app.codeship.com/projects/197019/builds/557e747d-2dc0-4898-ba1c-92a38e3af39b')
  1298. ])
  1299. def test_post_codeship_build_error3(self):
  1300. self.run_post("test/config/codeship3.yaml", "/qqqqq/ship/", "test/json/codeship_error.json", 200)
  1301. self.assertEqual(len(Core.messageHandler.messages), 0)
  1302. def test_post_codeship_build_success1(self):
  1303. self.run_post("test/config/codeship1.yaml", "/qqqqq/ship/", "test/json/codeship_success.json", 200)
  1304. self.assertEqual(sorted(Core.messageHandler.messages),
  1305. [
  1306. ('#shipchannel1', '[\x0302manaplus/manaplus\x0f] Build for commit \x030388e7212\x0f from \x0303master\x0f success https://app.codeship.com/projects/197019/builds/768925fd-bd65-499e-8078-49210a3e1e99'),
  1307. ('#shipchannel2', '[\x0302manaplus/manaplus\x0f] Build for commit \x030388e7212\x0f from \x0303master\x0f success https://app.codeship.com/projects/197019/builds/768925fd-bd65-499e-8078-49210a3e1e99')
  1308. ])
  1309. def test_post_codeship_build_success2(self):
  1310. self.run_post("test/config/codeship2.yaml", "/qqqqq/ship/", "test/json/codeship_success.json", 200)
  1311. self.assertEqual(sorted(Core.messageHandler.messages),
  1312. [
  1313. ('#shipchannel1', '[\x0302manaplus/manaplus\x0f] Build for commit \x030388e7212\x0f from \x0303master\x0f success https://app.codeship.com/projects/197019/builds/768925fd-bd65-499e-8078-49210a3e1e99'),
  1314. ('#shipchannel2', '[\x0302manaplus/manaplus\x0f] Build for commit \x030388e7212\x0f from \x0303master\x0f success https://app.codeship.com/projects/197019/builds/768925fd-bd65-499e-8078-49210a3e1e99')
  1315. ])
  1316. def test_post_codeship_build_success3(self):
  1317. self.run_post("test/config/codeship3.yaml", "/qqqqq/ship/", "test/json/codeship_success.json", 200)
  1318. self.assertEqual(len(Core.messageHandler.messages), 0)
  1319. def test_post_codeship_build_waiting1(self):
  1320. self.run_post("test/config/codeship1.yaml", "/qqqqq/ship/", "test/json/codeship_waiting.json", 200)
  1321. self.assertEqual(len(Core.messageHandler.messages), 0)
  1322. def test_post_codeship_build_waiting2(self):
  1323. self.run_post("test/config/codeship2.yaml", "/qqqqq/ship/", "test/json/codeship_waiting.json", 200)
  1324. self.assertEqual(len(Core.messageHandler.messages), 0)
  1325. def test_post_codeship_build_waiting3(self):
  1326. self.run_post("test/config/codeship3.yaml", "/qqqqq/ship/", "test/json/codeship_waiting.json", 200)
  1327. self.assertEqual(len(Core.messageHandler.messages), 0)
  1328. def test_post_github_ping1(self):
  1329. self.run_post_github("test/config/github_post1.yaml", "/qqqqq/", "test/json/github_ping.json", "ping", 200)
  1330. self.assertEqual(len(Core.messageHandler.messages), 0)
  1331. def test_post_github_ping2(self):
  1332. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_ping.json", "ping", 200)
  1333. self.assertEqual(len(Core.messageHandler.messages), 0)
  1334. def test_post_github_status_pending1(self):
  1335. self.run_post_github("test/config/github_post1.yaml", "/qqqqq/", "test/json/github_status_pending.json", "status", 200)
  1336. self.assertEqual(len(Core.messageHandler.messages), 0)
  1337. def test_post_github_status_pending2(self):
  1338. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_status_pending.json", "status", 200)
  1339. self.assertEqual(len(Core.messageHandler.messages), 0)
  1340. def test_post_github_status_success1(self):
  1341. self.run_post_github("test/config/github_post1.yaml", "/qqqqq/", "test/json/github_status_success.json", "status", 200)
  1342. self.assertEqual(len(Core.messageHandler.messages), 0)
  1343. def test_post_github_status_success2(self):
  1344. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_status_success.json", "status", 200)
  1345. self.assertEqual(sorted(Core.messageHandler.messages),
  1346. [
  1347. ('#channel1', '[\x0302ManaPlus\x0f] The Travis CI build passed for commit \x0303e2f8454\x0f from \x0303githubcitest\x0f https://travis-ci.org/ManaPlus/ManaPlus/builds/123456789'),
  1348. ('#channel3', '[\x0302ManaPlus\x0f] The Travis CI build passed for commit \x0303e2f8454\x0f from \x0303githubcitest\x0f https://travis-ci.org/ManaPlus/ManaPlus/builds/123456789')
  1349. ])
  1350. def test_post_github_status_success3(self):
  1351. self.run_post_github("test/config/github_post3.yaml", "/qqqqq/", "test/json/github_status_success.json", "status", 200)
  1352. self.assertEqual(len(Core.messageHandler.messages), 0)
  1353. def test_post_github_status_failure1(self):
  1354. self.run_post_github("test/config/github_post1.yaml", "/qqqqq/", "test/json/github_status_failure.json", "status", 200)
  1355. self.assertEqual(len(Core.messageHandler.messages), 0)
  1356. def test_post_github_status_failure2(self):
  1357. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_status_failure.json", "status", 200)
  1358. self.assertEqual(sorted(Core.messageHandler.messages),
  1359. [
  1360. ('#channel1', '[\x0302ManaPlus\x0f] The Travis CI build failed for commit \x030352c7786\x0f from \x0303githubcitest\x0f https://travis-ci.org/ManaPlus/ManaPlus/builds/123456789'),
  1361. ('#channel3', '[\x0302ManaPlus\x0f] The Travis CI build failed for commit \x030352c7786\x0f from \x0303githubcitest\x0f https://travis-ci.org/ManaPlus/ManaPlus/builds/123456789'),
  1362. ('#channel3', 'fail for channel 3')
  1363. ])
  1364. def test_post_github_status_failure3(self):
  1365. self.run_post_github("test/config/github_post3.yaml", "/qqqqq/", "test/json/github_status_failure.json", "status", 200)
  1366. self.assertEqual(len(Core.messageHandler.messages), 0)
  1367. def test_post_github_status_failure4(self):
  1368. self.run_post_github("test/config/github_post4.yaml", "/qqqqq/", "test/json/github_status_failure.json", "status", 200)
  1369. self.assertEqual(sorted(Core.messageHandler.messages),
  1370. [
  1371. ('#channel1', '[\x0302ManaPlus\x0f] The Travis CI build failed for commit \x030352c7786\x0f from \x0303githubcitest\x0f https://travis-ci.org/ManaPlus/ManaPlus/builds/123456789'),
  1372. ])
  1373. def test_post_github_issues_opened(self):
  1374. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_issues_opened.json", "issues", 200)
  1375. self.assertEqual(sorted(Core.messageHandler.messages),
  1376. [
  1377. ('#channel1', '[\x0302ManaPlus\x0f] \x0307issueuser\x0f opened issue \x0303#25\x0f: ManaPlus Client on the qqqq aa 3 ? https://github.com/ManaPlus/ManaPlus/issues/25'),
  1378. ('#channel2', '[\x0302ManaPlus\x0f] \x0307issueuser\x0f opened issue \x0303#25\x0f: ManaPlus Client on the qqqq aa 3 ? https://github.com/ManaPlus/ManaPlus/issues/25')
  1379. ])
  1380. def test_post_github_issues_edited(self):
  1381. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_issues_edited.json", "issues", 200)
  1382. self.assertEqual(sorted(Core.messageHandler.messages),
  1383. [
  1384. ('#channel1', '[\x0302ManaPlus\x0f] \x03074144\x0f edited issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1'),
  1385. ('#channel2', '[\x0302ManaPlus\x0f] \x03074144\x0f edited issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1')
  1386. ])
  1387. def test_post_github_issues_closed(self):
  1388. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_issues_closed.json", "issues", 200)
  1389. self.assertEqual(sorted(Core.messageHandler.messages),
  1390. [
  1391. ('#channel1', '[\x0302ManaPlus\x0f] \x03074144\x0f closed issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1'),
  1392. ('#channel2', '[\x0302ManaPlus\x0f] \x03074144\x0f closed issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1')
  1393. ])
  1394. def test_post_github_issues_reopened(self):
  1395. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_issues_reopened.json", "issues", 200)
  1396. self.assertEqual(sorted(Core.messageHandler.messages),
  1397. [
  1398. ('#channel1', '[\x0302ManaPlus\x0f] \x03074144\x0f reopened issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1'),
  1399. ('#channel2', '[\x0302ManaPlus\x0f] \x03074144\x0f reopened issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1')
  1400. ])
  1401. def test_post_github_issue_comment_created(self):
  1402. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_issue_comment_created.json", "issue_comment", 200)
  1403. self.assertEqual(sorted(Core.messageHandler.messages),
  1404. [
  1405. ('#channel2', '[\x0302ManaPlus\x0f] \x03074144\x0f add comment to issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1'),
  1406. ('#channel3', '[\x0302ManaPlus\x0f] \x03074144\x0f add comment to issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1')
  1407. ])
  1408. def test_post_github_issue_comment_edited(self):
  1409. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_issue_comment_edited.json", "issue_comment", 200)
  1410. self.assertEqual(sorted(Core.messageHandler.messages),
  1411. [
  1412. ('#channel2', '[\x0302ManaPlus\x0f] \x03074144\x0f edited comment in issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1'),
  1413. ('#channel3', '[\x0302ManaPlus\x0f] \x03074144\x0f edited comment in issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1')
  1414. ])
  1415. def test_post_github_issue_comment_deleted(self):
  1416. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_issue_comment_deleted.json", "issue_comment", 200)
  1417. self.assertEqual(sorted(Core.messageHandler.messages),
  1418. [
  1419. ('#channel2', '[\x0302ManaPlus\x0f] \x03074144\x0f deleted comment from issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1'),
  1420. ('#channel3', '[\x0302ManaPlus\x0f] \x03074144\x0f deleted comment from issue \x0303#1\x0f: test issue header https://github.com/4144/ManaPlus/issues/1')
  1421. ])
  1422. def test_post_github_check_suit_fail1(self):
  1423. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_check_suite_failure.json", "check_suite", 200)
  1424. self.assertEqual(len(Core.messageHandler.messages), 0)
  1425. def test_post_github_check_suit_fail2(self):
  1426. self.run_post_github("test/config/github_post5.yaml", "/qqqqq/", "test/json/github_check_suite_failure.json", "check_suite", 200)
  1427. self.assertEqual(sorted(Core.messageHandler.messages),
  1428. [
  1429. ('#channel1', '[\x0302ManaPlus\x0f] Azure Pipelines build failure for commit \x0303a22baa5\x0f from \x0303citest2\x0f https://github.com/ManaPlus/ManaPlus/commits/a22baa597ed605f1323507134adf4e19348b5cb6')
  1430. ])
  1431. def test_post_github_check_suit_success1(self):
  1432. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_check_suite_success.json", "check_suite", 200)
  1433. self.assertEqual(len(Core.messageHandler.messages), 0)
  1434. def test_post_github_check_suit_success2(self):
  1435. self.run_post_github("test/config/github_post5.yaml", "/qqqqq/", "test/json/github_check_suite_success.json", "check_suite", 200)
  1436. self.assertEqual(sorted(Core.messageHandler.messages),
  1437. [
  1438. ('#channel1', '[\x0302ManaPlus\x0f] Azure Pipelines build success for commit \x03031e25679\x0f from \x0303citest2\x0f https://github.com/ManaPlus/ManaPlus/commits/1e2567919c4b70ea9fa42e3f71dea2aec42a6f84')
  1439. ])
  1440. def test_post_github_check_suit_cancelled1(self):
  1441. self.run_post_github("test/config/github_post2.yaml", "/qqqqq/", "test/json/github_check_suite_cancelled.json", "check_suite", 200)
  1442. self.assertEqual(len(Core.messageHandler.messages), 0)
  1443. def test_post_github_check_suit_cancelled2(self):
  1444. self.run_post_github("test/config/github_post5.yaml", "/qqqqq/", "test/json/github_check_suite_cancelled.json", "check_suite", 200)
  1445. self.assertEqual(sorted(Core.messageHandler.messages),
  1446. [
  1447. ('#channel1', '[\x0302ManaPlus\x0f] Azure Pipelines build cancelled for commit \x03037379863\x0f from \x0303citest2\x0f https://github.com/ManaPlus/ManaPlus/commits/7379863eb3babd6a3212c809c56134c7344f9cd3')
  1448. ])
  1449. class TestLogger(unittest.TestCase):
  1450. def setUp(self):
  1451. Core.config = Configuration()
  1452. Core.config.show_info = True
  1453. Core.server = None
  1454. Core.messageHandler = None
  1455. Core.apiHandler = None
  1456. # Core.log = logging.getLogger('log')
  1457. def tearDown(self):
  1458. Core.config = None
  1459. # Core.log = None
  1460. def test_addLog(self):
  1461. Logger.addLog("test")
  1462. def test_addError(self):
  1463. Logger.addError("test")
  1464. print("----------------------------------------------------------------------")
  1465. # suite = unittest.TestLoader().loadTestsFromTestCase(TestConfig)
  1466. # unittest.TextTestRunner(verbosity = 2).run(suite)
  1467. if __name__ == '__main__':
  1468. init_log()
  1469. unittest.main(verbosity = 2)
  1470. #unittest.main()