diff --git a/tftf/tests/common/test_helpers.c b/tftf/tests/common/test_helpers.c
index d794beb..fffad67 100644
--- a/tftf/tests/common/test_helpers.c
+++ b/tftf/tests/common/test_helpers.c
@@ -172,7 +172,7 @@
 	GET_TFTF_MAILBOX(mb);
 
 	for (unsigned int i = 0U; i < ffa_uuids_size; i++)
-		SKIP_TEST_IF_FFA_ENDPOINT_NOT_DEPLOYED(*mb, ffa_uuids[i].uuid);
+		SKIP_TEST_IF_FFA_ENDPOINT_NOT_DEPLOYED(*mb, ffa_uuids[i]);
 
 	return TEST_RESULT_SUCCESS;
 }
diff --git a/tftf/tests/runtime_services/secure_service/ffa_helpers.c b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
index 4c69eb1..8d043a1 100644
--- a/tftf/tests/runtime_services/secure_service/ffa_helpers.c
+++ b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
@@ -357,14 +357,14 @@
 }
 
 /* Get information about VMs or SPs based on UUID */
-smc_ret_values ffa_partition_info_get(const uint32_t uuid[4])
+smc_ret_values ffa_partition_info_get(const struct ffa_uuid uuid)
 {
 	smc_args args = {
 		.fid = FFA_PARTITION_INFO_GET,
-		.arg1 = uuid[0],
-		.arg2 = uuid[1],
-		.arg3 = uuid[2],
-		.arg4 = uuid[3]
+		.arg1 = uuid.uuid[0],
+		.arg2 = uuid.uuid[1],
+		.arg3 = uuid.uuid[2],
+		.arg4 = uuid.uuid[3]
 	};
 
 	return tftf_smc(&args);
diff --git a/tftf/tests/runtime_services/secure_service/spm_common.c b/tftf/tests/runtime_services/secure_service/spm_common.c
index e2c7361..7aa4861 100644
--- a/tftf/tests/runtime_services/secure_service/spm_common.c
+++ b/tftf/tests/runtime_services/secure_service/spm_common.c
@@ -459,3 +459,53 @@
 	return memory_send(memory_region, mem_func, fragment_length,
 			       total_length);
 }
+
+/**
+ * Sends a ffa_partition_info request and checks the response against the
+ * target.
+ */
+bool ffa_partition_info_helper(struct mailbox_buffers *mb,
+			       const struct ffa_uuid uuid,
+			       const struct ffa_partition_info *expected,
+			       const uint16_t expected_size)
+{
+	bool result = true;
+	smc_ret_values ret = ffa_partition_info_get(uuid);
+
+	if (ffa_func_id(ret) == FFA_SUCCESS_SMC32) {
+		if (ret.ret2 != expected_size) {
+			ERROR("Unexpected number of partitions %ld\n", ret.ret2);
+			return false;
+		}
+		const struct ffa_partition_info *info =
+			(const struct ffa_partition_info *)(mb->recv);
+
+		for (unsigned int i = 0U; i < expected_size; i++) {
+			if (info[i].id != expected[i].id) {
+				ERROR("Wrong ID. Expected %x, got %x\n",
+				      expected[i].id,
+				      info[i].id);
+				result = false;
+			}
+			if (info[i].exec_context != expected[i].exec_context) {
+				ERROR("Wrong context. Expected %d, got %d\n",
+				      expected[i].exec_context,
+				      info[i].exec_context);
+				result = false;
+			}
+			if (info[i].properties != expected[i].properties) {
+				ERROR("Wrong properties. Expected %d, got %d\n",
+				      expected[i].properties,
+				      info[i].properties);
+				result = false;
+			}
+		}
+	}
+
+	ret = ffa_rx_release();
+	if (is_ffa_call_error(ret)) {
+		ERROR("Failed to release RX buffer\n");
+		result = false;
+	}
+	return result;
+}
