Commit | Line | Data |
---|---|---|
31329c3f TP |
1 | import os |
2 | import unittest | |
3 | import flask_migrate | |
4 | import flask_testing | |
5 | ||
6 | from ui import config | |
7 | from ui.app import app | |
8 | from ui.models import Build, Runner, db | |
9 | ||
10 | class UsesApp(flask_testing.TestCase): | |
11 | def create_app(self): | |
12 | return app | |
13 | ||
14 | class UsesModels(UsesApp): | |
15 | def setUp(self): | |
16 | flask_migrate.upgrade(revision="head") | |
17 | ||
18 | def tearDown(self): | |
19 | flask_migrate.downgrade(revision="base") | |
20 | ||
21 | class TestModels(UsesModels): | |
22 | ||
23 | def test_build(self): | |
24 | build = Build(build_id=1) | |
25 | db.session.add(build) | |
26 | db.session.commit() | |
27 | ||
28 | assert build in db.session | |
29 | ||
30 | def test_get_or_create_build_by_id(self): | |
31 | build = Build(build_id=1) | |
32 | db.session.add(build) | |
33 | db.session.commit() | |
34 | ||
35 | assert Build.get_or_create_by_id(1).build_id == 1 | |
36 | assert Build.get_or_create_by_id(2).build_id == 2 | |
37 | ||
38 | def test_runner(self): | |
39 | runner = Runner(runner_id="foobar") | |
40 | db.session.add(runner) | |
41 | db.session.commit() | |
42 | ||
43 | assert runner in db.session | |
44 | ||
45 | def test_get_or_create_runner_by_id(self): | |
46 | runner = Runner(runner_id="foobar", runner_name="foobar") | |
47 | db.session.add(runner) | |
48 | db.session.commit() | |
49 | ||
50 | assert Runner.get_or_create_by_id('foobar').runner_name == "foobar" | |
51 | assert Runner.get_or_create_by_id("foobaz").runner_name == None | |
52 | ||
53 | def test_runner_build_rel(self): | |
54 | runner = Runner(runner_id="foobar", runner_name="foobar") | |
55 | build = Build(build_id=1, build_runner=runner) | |
56 | db.session.add(runner) | |
57 | db.session.add(build) | |
58 | db.session.commit() | |
59 | ||
60 | assert build.build_runner == runner | |
61 | assert build in runner.builds | |
62 | ||
63 | class TestWebhooks(UsesModels): | |
64 | ||
65 | def test_invalid_token(self): | |
66 | with open("tests/pipeline_webhook.json", "r") as f: | |
67 | response = self.client.post("/webhook", headers={'X-Gitlab-Event': 'Pipeline Hook', 'X-Gitlab-Token': 'invalidsecret'}, data=f.read(), content_type='application/json') | |
68 | assert response.status_code == 403 | |
69 | ||
70 | def test_pipeline_webhook(self): | |
71 | with open("tests/pipeline_webhook.json", "r") as f: | |
72 | response = self.client.post("/webhook", headers={'X-Gitlab-Event': 'Pipeline Hook', 'X-Gitlab-Token': 'secret'}, data=f.read(), content_type='application/json') | |
73 | assert response.status_code == 200 | |
74 | build = Build.query.filter_by(build_id=1).first() | |
75 | assert build.build_id == 1 | |
76 | assert build.build_runner_id == "foobar" | |
77 | ||
78 | if __name__ == "__main__": | |
79 | unittest.main() |