diff --git a/.github/workflows/astarte-ctl-test.yaml b/.github/workflows/astarte-ctl-test.yaml index 34c82ed..e56e4b5 100644 --- a/.github/workflows/astarte-ctl-test.yaml +++ b/.github/workflows/astarte-ctl-test.yaml @@ -131,6 +131,9 @@ jobs: TOKEN=$(astartectl utils gen-jwt all-realm-apis) echo "E2E_JWT=$TOKEN" >> $GITHUB_ENV echo "E2E_DEVICE_TEST_1=ogmcilZpRDeDWwuNfJr0yA" >> $GITHUB_ENV + DEVICE_TEST_2=$(astartectl utils device-id generate-random) + echo "E2E_DEVICE_TEST_2=$DEVICE_TEST_2" >> $GITHUB_ENV + astartectl pairing agent register --compact-output -- "$DEVICE_TEST_2" - name: Setup python uses: actions/setup-python@v2 diff --git a/tests/app_engine/device/test_app_engine_device.py b/tests/app_engine/device/test_app_engine_device.py index 4b16052..5d698b4 100644 --- a/tests/app_engine/device/test_app_engine_device.py +++ b/tests/app_engine/device/test_app_engine_device.py @@ -107,5 +107,5 @@ def test_app_engine_stats_device(astarte_env_vars): ] sample_data_result = subprocess.run(arg_list, capture_output=True, text=True) - except_output = "{TotalDevices:1 ConnectedDevices:0}\n" + except_output = "{TotalDevices:2 ConnectedDevices:0}\n" assert sample_data_result.stdout == except_output diff --git a/tests/app_engine/device/test_app_engine_groups.py b/tests/app_engine/device/test_app_engine_groups.py new file mode 100644 index 0000000..df66ef9 --- /dev/null +++ b/tests/app_engine/device/test_app_engine_groups.py @@ -0,0 +1,140 @@ +# SPDX-FileCopyrightText: 2024 SECO Mind Srl +# +# SPDX-License-Identifier: Apache-2.0 + + +import subprocess + +from resources import mygroup + + +def test_app_engine_group_create(astarte_env_vars): + astarte_url = astarte_env_vars["astarte_url"] + realm = astarte_env_vars["realm"] + jwt = astarte_env_vars["jwt"] + device_test_1 = astarte_env_vars["device_test_1"] + + arg_list = [ + "astartectl", + "appengine", + "groups", + "create", + mygroup, + device_test_1, + "-t", + jwt, + "-u", + astarte_url, + "-r", + realm, + ] + + sample_data_result = subprocess.run(arg_list, capture_output=True, text=True) + assert sample_data_result.stdout.replace("\n", "") == "ok" + + +def test_app_engine_group_list(astarte_env_vars): + astarte_url = astarte_env_vars["astarte_url"] + realm = astarte_env_vars["realm"] + jwt = astarte_env_vars["jwt"] + + arg_list = [ + "astartectl", + "appengine", + "groups", + "list", + "-t", + jwt, + "-u", + astarte_url, + "-r", + realm, + ] + + sample_data_result = subprocess.run(arg_list, capture_output=True, text=True) + sample_data_result.stdout = _replace_brackets_from_string(sample_data_result.stdout) + assert sample_data_result.stdout in mygroup + + +def test_app_engine_group_devices_list(astarte_env_vars): + astarte_url = astarte_env_vars["astarte_url"] + realm = astarte_env_vars["realm"] + jwt = astarte_env_vars["jwt"] + device_test_1 = astarte_env_vars["device_test_1"] + + arg_list = [ + "astartectl", + "appengine", + "groups", + "devices", + "list", + mygroup, + "-t", + jwt, + "-u", + astarte_url, + "-r", + realm, + ] + + sample_data_result = subprocess.run(arg_list, capture_output=True, text=True) + sample_data_result.stdout = _replace_brackets_from_string(sample_data_result.stdout) + assert sample_data_result.stdout in device_test_1 + + +def test_app_engine_group_add_device(astarte_env_vars): + astarte_url = astarte_env_vars["astarte_url"] + realm = astarte_env_vars["realm"] + jwt = astarte_env_vars["jwt"] + device_test_2 = astarte_env_vars["device_test_2"] + + arg_list = [ + "astartectl", + "appengine", + "groups", + "devices", + "add", + mygroup, + device_test_2, + "-t", + jwt, + "-u", + astarte_url, + "-r", + realm, + ] + + sample_data_result = subprocess.run(arg_list, capture_output=True, text=True) + print(sample_data_result.stdout) + assert sample_data_result.stdout.replace("\n", "") == "ok" + + +def test_app_engine_group_remove_device(astarte_env_vars): + astarte_url = astarte_env_vars["astarte_url"] + realm = astarte_env_vars["realm"] + jwt = astarte_env_vars["jwt"] + device_test_2 = astarte_env_vars["device_test_2"] + + arg_list = [ + "astartectl", + "appengine", + "groups", + "devices", + "remove", + mygroup, + device_test_2, + "-t", + jwt, + "-u", + astarte_url, + "-r", + realm, + ] + + sample_data_result = subprocess.run(arg_list, capture_output=True, text=True) + print(sample_data_result.stdout) + assert sample_data_result.stdout.replace("\n", "") == "ok" + + +def _replace_brackets_from_string(input_string): + return input_string.replace("\n", "").replace("[", "").replace("]", "") diff --git a/tests/conftest.py b/tests/conftest.py index 870ed8a..5f9c30a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -15,9 +15,10 @@ def astarte_env_vars(): realm = os.environ.get("E2E_REALM") jwt = os.environ.get("E2E_JWT") device_test_1 = os.environ.get("E2E_DEVICE_TEST_1") + device_test_2 = os.environ.get("E2E_DEVICE_TEST_2") assert ( - astarte_url and realm and jwt + astarte_url and realm and jwt and device_test_1 and device_test_2 ), "Environment variables for Astarte setup are not properly configured." return { @@ -25,4 +26,5 @@ def astarte_env_vars(): "realm": realm, "jwt": jwt, "device_test_1": device_test_1, + "device_test_2": device_test_2, } diff --git a/tests/resources.py b/tests/resources.py index 1191ac5..7be362d 100644 --- a/tests/resources.py +++ b/tests/resources.py @@ -235,3 +235,5 @@ "test_attribute3": "test_attribute3=attribute3", "test_attribute4": "test_attribute4=attribute4", } + +mygroup = "test_group"