11import pytest
22import responses
33
4- gitlab_ci_yml = """---
5- :test_job:
6- :script: echo 1
7- """
4+ from gitlab import exceptions
85
96ci_lint_create_content = {"status" :"valid" ,"errors" : [],"warnings" : []}
7+ ci_lint_create_invalid_content = {
8+ "status" :"invalid" ,
9+ "errors" : ["invalid format" ],
10+ "warnings" : [],
11+ }
1012
1113
1214project_ci_lint_content = {
@@ -30,6 +32,19 @@ def resp_create_ci_lint():
3032yield rsps
3133
3234
35+ @pytest .fixture
36+ def resp_create_ci_lint_invalid ():
37+ with responses .RequestsMock ()as rsps :
38+ rsps .add (
39+ method = responses .POST ,
40+ url = "http://localhost/api/v4/ci/lint" ,
41+ json = ci_lint_create_invalid_content ,
42+ content_type = "application/json" ,
43+ status = 200 ,
44+ )
45+ yield rsps
46+
47+
3348@pytest .fixture
3449def resp_get_project_ci_lint ():
3550with responses .RequestsMock ()as rsps :
@@ -56,16 +71,29 @@ def resp_create_project_ci_lint():
5671yield rsps
5772
5873
59- def test_ci_lint_create (gl ,resp_create_ci_lint ):
60- lint_result = gl .ci_lint .create ({"content" :gitlab_ci_yml })
74+ def test_ci_lint_create (gl ,resp_create_ci_lint , valid_gitlab_ci_yml ):
75+ lint_result = gl .ci_lint .create ({"content" :valid_gitlab_ci_yml })
6176assert lint_result .status == "valid"
6277
6378
79+ def test_ci_lint_validate (gl ,resp_create_ci_lint ,valid_gitlab_ci_yml ):
80+ gl .ci_lint .validate ({"content" :valid_gitlab_ci_yml })
81+
82+
83+ def test_ci_lint_validate_invalid_raises (
84+ gl ,resp_create_ci_lint_invalid ,invalid_gitlab_ci_yml
85+ ):
86+ with pytest .raises (exceptions .GitlabCiLintError ,match = "invalid format" ):
87+ gl .ci_lint .validate ({"content" :invalid_gitlab_ci_yml })
88+
89+
6490def test_project_ci_lint_get (project ,resp_get_project_ci_lint ):
6591lint_result = project .ci_lint .get ()
6692assert lint_result .valid is True
6793
6894
69- def test_project_ci_lint_create (project ,resp_create_project_ci_lint ):
70- lint_result = project .ci_lint .create ({"content" :gitlab_ci_yml })
95+ def test_project_ci_lint_create (
96+ project ,resp_create_project_ci_lint ,valid_gitlab_ci_yml
97+ ):
98+ lint_result = project .ci_lint .create ({"content" :valid_gitlab_ci_yml })
7199assert lint_result .valid is True