123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- # Licensed to the Apache Software Foundation (ASF) under one
- # or more contributor license agreements. See the NOTICE file
- # distributed with this work for additional information
- # regarding copyright ownership. The ASF licenses this file
- # to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance
- # with the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing,
- # software distributed under the License is distributed on an
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- # KIND, either express or implied. See the License for the
- # specific language governing permissions and limitations
- # under the License.
- """Test github resource plugin."""
- from unittest.mock import PropertyMock, patch
- import pytest
- from pydolphinscheduler.resources_plugin import GitHub
- from pydolphinscheduler.resources_plugin.base.git import GitFileInfo
- @pytest.mark.parametrize(
- "attr, expected",
- [
- (
- {
- "user": "apache",
- "repo_name": "dolphinscheduler",
- "file_path": "script/install.sh",
- "api": "https://api.github.com/repos/{user}/{repo_name}/contents/{file_path}",
- },
- "https://api.github.com/repos/apache/dolphinscheduler/contents/script/install.sh",
- ),
- ],
- )
- def test_github_build_req_api(attr, expected):
- """Test the build_req_api function of the github resource plug-in."""
- github = GitHub(prefix="prefix")
- assert expected == github.build_req_api(**attr)
- @pytest.mark.parametrize(
- "attr, expected",
- [
- (
- "https://github.com/apache/dolphinscheduler/blob/dev/script/install.sh",
- {
- "user": "apache",
- "repo_name": "dolphinscheduler",
- "branch": "dev",
- "file_path": "script/install.sh",
- },
- ),
- (
- "https://github.com/apache/dolphinscheduler/blob/master/pom.xml",
- {
- "user": "apache",
- "repo_name": "dolphinscheduler",
- "branch": "master",
- "file_path": "pom.xml",
- },
- ),
- (
- "https://github.com/apache/dolphinscheduler/blob/1.3.9-release/docker/build/startup.sh",
- {
- "user": "apache",
- "repo_name": "dolphinscheduler",
- "branch": "1.3.9-release",
- "file_path": "docker/build/startup.sh",
- },
- ),
- ],
- )
- def test_github_get_git_file_info(attr, expected):
- """Test the get_git_file_info function of the github resource plug-in."""
- github = GitHub(prefix="prefix")
- github.get_git_file_info(attr)
- assert expected == github._git_file_info.__dict__
- @pytest.mark.parametrize(
- "attr, expected",
- [
- (
- (
- {
- "user": "apache",
- "repo_name": "dolphinscheduler",
- "file_path": "docker/build/startup.sh",
- }
- ),
- "https://api.github.com/repos/apache/dolphinscheduler/contents/docker/build/startup.sh",
- ),
- (
- (
- {
- "user": "apache",
- "repo_name": "dolphinscheduler",
- "file_path": "pom.xml",
- }
- ),
- "https://api.github.com/repos/apache/dolphinscheduler/contents/pom.xml",
- ),
- (
- (
- {
- "user": "apache",
- "repo_name": "dolphinscheduler",
- "file_path": "script/create-dolphinscheduler.sh",
- }
- ),
- "https://api.github.com/repos/apache/dolphinscheduler/contents/script/create-dolphinscheduler.sh",
- ),
- ],
- )
- @patch(
- "pydolphinscheduler.resources_plugin.github.GitHub._git_file_info",
- new_callable=PropertyMock,
- )
- def test_github_get_req_url(m_git_file_info, attr, expected):
- """Test the get_req_url function of the github resource plug-in."""
- github = GitHub(prefix="prefix")
- m_git_file_info.return_value = GitFileInfo(**attr)
- assert expected == github.get_req_url()
- @pytest.mark.parametrize(
- "attr, expected",
- [
- (
- {
- "init": {"prefix": "prefix", "access_token": "access_token"},
- "file_path": "github_resource_plugin.sh",
- "file_content": "github resource plugin",
- },
- "github resource plugin",
- ),
- (
- {
- "init": {
- "prefix": "prefix",
- },
- "file_path": "github_resource_plugin.sh",
- "file_content": "github resource plugin",
- },
- "github resource plugin",
- ),
- ],
- )
- @patch("pydolphinscheduler.resources_plugin.github.GitHub.req")
- def test_github_read_file(m_req, attr, expected):
- """Test the read_file function of the github resource plug-in."""
- github = GitHub(**attr.get("init"))
- m_req.return_value = attr.get("file_content")
- assert expected == github.read_file(attr.get("file_path"))
- @pytest.mark.skip(reason="Lack of test environment, need stable repository")
- @pytest.mark.parametrize(
- "attr, expected",
- [
- (
- "https://github.com/apache/dolphinscheduler/blob/dev/lombok.config",
- "#\n"
- "# Licensed to the Apache Software Foundation (ASF) under one or more\n"
- "# contributor license agreements. See the NOTICE file distributed with\n"
- "# this work for additional information regarding copyright ownership.\n"
- "# The ASF licenses this file to You under the Apache License, Version 2.0\n"
- '# (the "License"); you may not use this file except in compliance with\n'
- "# the License. You may obtain a copy of the License at\n"
- "#\n"
- "# http://www.apache.org/licenses/LICENSE-2.0\n"
- "#\n"
- "# Unless required by applicable law or agreed to in writing, software\n"
- '# distributed under the License is distributed on an "AS IS" BASIS,\n'
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
- "# See the License for the specific language governing permissions and\n"
- "# limitations under the License.\n"
- "#\n"
- "\n"
- "lombok.addLombokGeneratedAnnotation = true\n",
- ),
- ],
- )
- def test_github_req(attr, expected):
- """Test the req function of the github resource plug-in."""
- github = GitHub(
- prefix="prefix",
- )
- assert expected == github.req(attr)
|