8 from ui
.models
import Build
, Runner
, db
10 class UsesApp(flask_testing
.TestCase
):
14 class UsesModels(UsesApp
):
16 flask_migrate
.upgrade(revision
="head")
19 flask_migrate
.downgrade(revision
="base")
21 class TestModels(UsesModels
):
24 build
= Build(build_id
=1)
28 assert build
in db
.session
30 def test_get_or_create_build_by_id(self
):
31 build
= Build(build_id
=1)
35 assert Build
.get_or_create_by_id(1).build_id
== 1
36 assert Build
.get_or_create_by_id(2).build_id
== 2
38 def test_runner(self
):
39 runner
= Runner(runner_id
="foobar")
40 db
.session
.add(runner
)
43 assert runner
in db
.session
45 def test_get_or_create_runner_by_id(self
):
46 runner
= Runner(runner_id
="foobar", runner_name
="foobar")
47 db
.session
.add(runner
)
50 assert Runner
.get_or_create_by_id('foobar').runner_name
== "foobar"
51 assert Runner
.get_or_create_by_id("foobaz").runner_name
== None
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
)
60 assert build
.build_runner
== runner
61 assert build
in runner
.builds
63 class TestWebhooks(UsesModels
):
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
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"
78 if __name__
== "__main__":