From 4fe2a8fdff13bad7a07d42b07736e59f10cdb9e5 Mon Sep 17 00:00:00 2001 From: Jac Fitzgerald Date: Fri, 29 Jul 2022 14:31:58 -0700 Subject: [PATCH 1/3] Create run-e2-tests.yml --- .github/workflows/run-e2-tests.yml | 45 ++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/run-e2-tests.yml diff --git a/.github/workflows/run-e2-tests.yml b/.github/workflows/run-e2-tests.yml new file mode 100644 index 00000000..45c1cdba --- /dev/null +++ b/.github/workflows/run-e2-tests.yml @@ -0,0 +1,45 @@ +name: Python tests + +on: + workflow_dispatch + inputs: + server: + required: true + site: + required: true + patname: + required: true + pat: + required: true + +jobs: + build: + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: ['3.7', '3.8', '3.9', '3.10', '3'] + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python --version + python -m pip install --upgrade pip + pip install -e .[build] + pip install -e .[test] + doit version + python setup.py build + + - name: Run e2e tests + run: | + python -m tabcmd login --server "${{ github.event.inputs.server }}" --site "${{ github.event.inputs.site }}" --token-name "${{ github.event.inputs.patname }}" --token-value "${{ github.event.inputs.pat }}" + pytest -q tests\e2e\online_tests.py -r pfE From b742784a1ffec124751e24826caa4e95f3bf0e87 Mon Sep 17 00:00:00 2001 From: Jac Fitzgerald Date: Tue, 12 Jul 2022 15:05:29 -0700 Subject: [PATCH 2/3] half passing tests (cherry picked from commit 6315d3357b45eb53ee1c147a5bd21414ac23b92e) --- tests/e2e/online_tests.py | 59 +++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/tests/e2e/online_tests.py b/tests/e2e/online_tests.py index 7aa69610..b1e6afbb 100644 --- a/tests/e2e/online_tests.py +++ b/tests/e2e/online_tests.py @@ -18,6 +18,14 @@ # you can either run setup with a stored credentials file, or simply log in # before running the suite so a session is active +# alpodev +parent_location = "WAM" +project_name = "Developer Platform" + +server_admin = False +site_admin = True +project_admin = True + def _test_command(test_args: list[str]): # this will raise an exception if it gets a non-zero return code @@ -43,18 +51,18 @@ def setup_class(cls): def _create_project(self, project_name, parent_path=None): command = "createproject" arguments = [command, "--name", project_name] - if parent_path: + if parent_path or parent_location: arguments.append("--parent-project-path") - arguments.append(parent_path) + arguments.append(parent_path or parent_location) print(arguments) _test_command(arguments) def _delete_project(self, project_name, parent_path=None): command = "deleteproject" arguments = [command, project_name] - if parent_path: + if parent_path or parent_location: arguments.append("--parent-project-path") - arguments.append(parent_path) + arguments.append(parent_path or parent_location) _test_command(arguments) def _publish_samples(self, project_name): @@ -135,6 +143,8 @@ def test_help(self): @pytest.mark.order(2) def test_create_site_users(self): + if not server_admin and not site_admin: + pytest.skip("Must be server or site administrator to create site users") command = "createsiteusers" users = os.path.join("tests", "assets", "detailed_users.csv") arguments = [command, users, "--role", "Publisher"] @@ -142,6 +152,8 @@ def test_create_site_users(self): @pytest.mark.order(3) def test_creategroup(self): + if not server_admin and not site_admin: + pytest.skip("Must be server or site administrator to create groups") groupname = group_name command = "creategroup" arguments = [command, groupname] @@ -149,6 +161,9 @@ def test_creategroup(self): @pytest.mark.order(4) def test_add_users_to_group(self): + if not server_admin and not site_admin: + pytest.skip("Must be server or site administrator to add to groups") + groupname = group_name command = "addusers" filename = os.path.join("tests", "assets", "usernames.csv") @@ -157,6 +172,9 @@ def test_add_users_to_group(self): @pytest.mark.order(5) def test_remove_users_to_group(self): + if not server_admin and not site_admin: + pytest.skip("Must be server or site administrator to remove from groups") + groupname = group_name command = "removeusers" filename = os.path.join("tests", "assets", "usernames.csv") @@ -165,22 +183,19 @@ def test_remove_users_to_group(self): @pytest.mark.order(6) def test_deletegroup(self): + if not server_admin and not site_admin: + pytest.skip("Must be server or site administrator to delete groups") + groupname = group_name command = "deletegroup" arguments = [command, groupname] _test_command(arguments) - @pytest.mark.order(7) - def test_publish_samples(self): - project_name = "sample-proj" - self._create_project(project_name) - time.sleep(indexing_sleep_time) - - self._publish_samples(project_name) - self._delete_project(project_name) - @pytest.mark.order(8) def test_create_projects(self): + + if not project_admin: + pytest.skip("Must be project administrator to create projects") # project 1 self._create_project(project_name) time.sleep(indexing_sleep_time) @@ -194,12 +209,14 @@ def test_create_projects(self): @pytest.mark.order(9) def test_delete_projects(self): + if not project_admin: + pytest.skip("Must be project administrator to create projects") self._delete_project("project_name_2", project_name) # project 2 self._delete_project(project_name) @pytest.mark.order(9) def test_publish_samples(self): - self._publish_samples("Default") + self._publish_samples(project_name) @pytest.mark.order(10) def test_publish(self): @@ -256,6 +273,7 @@ def test_create_extract(self): @pytest.mark.order(14) def test_refresh_extract(self): + # must be a datasource owned by the test user name_on_server = OnlineCommandTest.TWBX_WITH_EXTRACT_NAME self._refresh_extract(name_on_server) self._delete_wb(name_on_server) @@ -292,11 +310,22 @@ def test_export_view(self): @pytest.mark.order(16) def test_delete_site_users(self): + if not server_admin and not site_admin: + pytest.skip("Must be server or site administrator to delete site users") + command = "deletesiteusers" users = os.path.join("tests", "assets", "usernames.csv") _test_command([command, users]) @pytest.mark.order(20) def test_list_sites(self): + if not server_admin: + pytest.skip("Must be server administrator to list sites") + command = "listsites" - _test_command([command]) + try: + _test_command([command]) + except Exception as E: + print("yay") + result = True + assert result From 199371d005f81ebb4f39395e90e5608ab8784243 Mon Sep 17 00:00:00 2001 From: Jac Fitzgerald Date: Tue, 2 Aug 2022 21:18:32 -0700 Subject: [PATCH 3/3] Update run-e2-tests.yml --- .github/workflows/run-e2-tests.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/run-e2-tests.yml b/.github/workflows/run-e2-tests.yml index 45c1cdba..371577f5 100644 --- a/.github/workflows/run-e2-tests.yml +++ b/.github/workflows/run-e2-tests.yml @@ -1,16 +1,16 @@ name: Python tests on: - workflow_dispatch - inputs: - server: - required: true - site: - required: true - patname: - required: true - pat: - required: true + workflow_dispatch: + inputs: + server: + required: true + site: + required: true + patname: + required: true + pat: + required: true jobs: build: