tests_reg: Add test for refused connection in SFN
Add tfm_sfn_test_1008 test case to check the correct PSA_ERROR
returned value from a RoT which refuses a connection with the
SFN backend.
Signed-off-by: Nicola Mazzucato <nicola.mazzucato@arm.com>
Change-Id: Ib695ee67de55fc232ceaeb5f3312d4f08abe10b1
(cherry picked from commit 5631e70069c04647c7f5e7ca6a9646d4d89ba188)
diff --git a/tests_reg/test/secure_fw/suites/spm/sfn/non_secure/sfn_backend_ns_testsuite.c b/tests_reg/test/secure_fw/suites/spm/sfn/non_secure/sfn_backend_ns_testsuite.c
index 242c601..dce950b 100644
--- a/tests_reg/test/secure_fw/suites/spm/sfn/non_secure/sfn_backend_ns_testsuite.c
+++ b/tests_reg/test/secure_fw/suites/spm/sfn/non_secure/sfn_backend_ns_testsuite.c
@@ -23,12 +23,14 @@
"Request a stateless RoT Service"},
#if PSA_FRAMEWORK_HAS_MM_IOVEC
{&tfm_sfn_test_1005, "TFM_NS_SFN_TEST_1005",
- "Mapping input vectors and unmapping them. "},
+ "Mapping input vectors and unmapping them"},
{&tfm_sfn_test_1006, "TFM_NS_SFN_TEST_1006",
- "Mapping output vectors and unmapping them. "},
+ "Mapping output vectors and unmapping them"},
{&tfm_sfn_test_1007, "TFM_NS_SFN_TEST_1007",
- "Mapping output vectors and not unmapping them. "},
+ "Mapping output vectors and not unmapping them"},
#endif
+ {&tfm_sfn_test_1008, "TFM_NS_SFN_TEST_1008",
+ "Request to a refused connection"},
};
void register_testsuite_ns_sfn_interface(struct test_suite_t *p_test_suite)
diff --git a/tests_reg/test/secure_fw/suites/spm/sfn/secure/sfn_backend_s_testsuite.c b/tests_reg/test/secure_fw/suites/spm/sfn/secure/sfn_backend_s_testsuite.c
index 8e918ac..81444f5 100644
--- a/tests_reg/test/secure_fw/suites/spm/sfn/secure/sfn_backend_s_testsuite.c
+++ b/tests_reg/test/secure_fw/suites/spm/sfn/secure/sfn_backend_s_testsuite.c
@@ -23,12 +23,14 @@
"Request a stateless RoT Service"},
#if PSA_FRAMEWORK_HAS_MM_IOVEC
{&tfm_sfn_test_1005, "TFM_S_SFN_TEST_1005",
- "Mapping input vectors and unmapping them. "},
+ "Mapping input vectors and unmapping them"},
{&tfm_sfn_test_1006, "TFM_S_SFN_TEST_1006",
- "Mapping output vectors and unmapping them. "},
+ "Mapping output vectors and unmapping them"},
{&tfm_sfn_test_1007, "TFM_S_SFN_TEST_1007",
- "Mapping output vectors and not unmapping them. "},
+ "Mapping output vectors and not unmapping them"},
#endif
+ {&tfm_sfn_test_1008, "TFM_NS_SFN_TEST_1008",
+ "Request to a refused connection"},
};
void register_testsuite_s_sfn_interface(struct test_suite_t *p_test_suite)
diff --git a/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.c b/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.c
index f9651dc..3960108 100644
--- a/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.c
+++ b/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.c
@@ -68,6 +68,21 @@
return status;
}
+psa_status_t sfn_test_connection_refused_sfn(const psa_msg_t* msg)
+{
+ psa_status_t status = PSA_ERROR_NOT_SUPPORTED;
+
+ switch (msg->type) {
+ case PSA_IPC_CONNECT:
+ status = PSA_ERROR_CONNECTION_REFUSED;
+ break;
+ default:
+ break;
+ }
+
+ return status;
+}
+
psa_status_t sfn_test_partition_init(void)
{
LOG_DBGFMT("[DBG][SFN Test] SFN Test Partition initialized\r\n");
diff --git a/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.yaml b/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.yaml
index 599b20f..fa94186 100644
--- a/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.yaml
+++ b/tests_reg/test/secure_fw/suites/spm/sfn/service/sfn_backend_test_partition/sfn_backend_test_partition.yaml
@@ -31,6 +31,14 @@
"connection_based": true,
"version": 1,
"version_policy": "RELAXED"
+ },
+ {
+ "name": "SFN_TEST_CONNECTION_REFUSED",
+ "sid": "0x0000F102",
+ "non_secure_clients": true,
+ "connection_based": true,
+ "version": 1,
+ "version_policy": "RELAXED"
}
],
}
diff --git a/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.c b/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.c
index 4eeb2b3..2bce6bf 100644
--- a/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.c
+++ b/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.c
@@ -78,5 +78,18 @@
{
outvec_map_only_test(ret, SFN_TEST_STATELESS_HANDLE);
}
-
#endif /* PSA_FRAMEWORK_HAS_MM_IOVEC */
+
+void tfm_sfn_test_1008(struct test_result_t *ret)
+{
+ psa_handle_t handle;
+
+ handle = psa_connect(SFN_TEST_CONNECTION_REFUSED_SID,
+ SFN_TEST_CONNECTION_REFUSED_VERSION);
+ if (handle != PSA_ERROR_CONNECTION_REFUSED) {
+ TEST_FAIL("Connection was expected to be refused: failed\r\n");
+ return;
+ }
+
+ ret->val = TEST_PASSED;
+}
diff --git a/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.h b/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.h
index 5af344a..a8516c4 100644
--- a/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.h
+++ b/tests_reg/test/secure_fw/suites/spm/sfn/sfn_backend_tests.h
@@ -52,3 +52,8 @@
void tfm_sfn_test_1007(struct test_result_t *ret);
#endif /* PSA_FRAMEWORK_HAS_MM_IOVEC */
+
+/**
+ * \brief Test the connection to be refused.
+ */
+void tfm_sfn_test_1008(struct test_result_t *ret);