From d6185e806eb31fe6b29443920639f691de6285cb Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Thu, 6 May 2021 13:43:30 -0400 Subject: [PATCH] new unit test --- .../staged_data/testmodule-dashed-stream.yaml | 38 ++++++++++++++++++ tests/test_web/test_views.py | 40 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 tests/staged_data/testmodule-dashed-stream.yaml diff --git a/tests/staged_data/testmodule-dashed-stream.yaml b/tests/staged_data/testmodule-dashed-stream.yaml new file mode 100644 index 00000000..e5c750fd --- /dev/null +++ b/tests/staged_data/testmodule-dashed-stream.yaml @@ -0,0 +1,38 @@ +document: modulemd +version: 1 +data: + summary: A test module in all its beautiful beauty + stream: some-stream + description: >- + This module demonstrates how to write simple modulemd files And + can be used for testing the build and release pipeline. ’ + license: + module: [ MIT ] + dependencies: + buildrequires: + platform: f28 + requires: + platform: f28 + references: + community: https://docs.pagure.org/modularity/ + documentation: https://fedoraproject.org/wiki/Fedora_Packaging_Guidelines_for_Modules + profiles: + default: + rpms: + - tangerine + api: + rpms: + - perl-Tangerine + - tangerine + components: + rpms: + perl-List-Compare: + rationale: A dependency of tangerine. + ref: master + perl-Tangerine: + rationale: Provides API for this module and is a dependency of tangerine. + ref: master + tangerine: + rationale: Provides API for this module. + buildorder: 10 + ref: master diff --git a/tests/test_web/test_views.py b/tests/test_web/test_views.py index 8a3cdb44..fbd9e6ac 100644 --- a/tests/test_web/test_views.py +++ b/tests/test_web/test_views.py @@ -1352,6 +1352,46 @@ class TestSubmitBuild: ) assert data["error"] == "Bad Request" + @pytest.mark.parametrize("dashes_allowed", (True, False)) + @pytest.mark.parametrize("yaml_file", ("testmodule.yaml", "testmodule-dashed-stream.yaml")) + @patch("module_build_service.web.auth.get_user", return_value=user) + @patch("module_build_service.common.scm.SCM") + def test_submit_build_dashes_in_stream(self, mocked_scm, mocked_get_user, yaml_file, + dashes_allowed): + FakeSCM( + mocked_scm, + "testmodule", + yaml_file, + "620ec77321b2ea7b0d67d82992dda3e1d67055b4", + ) + + with patch.object(mbs_config.Config, "allow_dashes_in_svc", + new_callable=PropertyMock) as da, \ + patch.object(mbs_config.Config, "allow_stream_override_from_scm", + new_callable=PropertyMock) as asofs: + da.return_value = dashes_allowed + asofs.return_value = True + rv = self.client.post( + "/module-build-service/1/module-builds/", + data=json.dumps({ + "branch": "master", + "scmurl": "https://src.stg.fedoraproject.org/modules/" + "testmodule.git?#68931c90de214d9d13feefbd35246a81b6cb8d49", + }), + ) + data = json.loads(rv.data) + + if not dashes_allowed and 'dash' in yaml_file: + assert data["status"] == 400 + assert data["message"] == "Dashes are not allowed in the stream value" + assert data["error"] == "Bad Request" + else: + assert data["name"] == "testmodule" + if 'dash' in yaml_file: + assert data["stream"] == "some-stream" + else: + assert data["stream"] == "master" + @patch("module_build_service.web.auth.get_user", return_value=user) def test_submit_build_set_owner(self, mocked_get_user): data = {