blob: 50cce75b1f98a027313099fdca7c7dd31f3eaf43 [file] [log] [blame]
Julian Hall8cff2b82020-11-23 18:12:17 +01001/*
Julian Hall7d7b24c2021-08-13 13:40:38 +01002 * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
Julian Hall8cff2b82020-11-23 18:12:17 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <service/locator/service_name.h>
8#include <CppUTest/TestHarness.h>
9#include <common/uuid/uuid.h>
10#include <string.h>
11
12TEST_GROUP(ServiceNameTests) {
13
14};
15
16TEST(ServiceNameTests, checkValidServiceNames) {
17
18 const char *sn1 = "sn:trustedfirmware.org:crypto:0";
19 CHECK(sn_is_valid(sn1));
20
21 const char *sn2 = "sn:trustedfirmware.org:secure-storage.1.0:0";
22 CHECK(sn_is_valid(sn2));
23
24 const char *sn3 = "urn:sn:trustedfirmware.org:tpm:3";
25 CHECK(sn_is_valid(sn3));
26
27 const char *sn4 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0:0";
28 CHECK(sn_is_valid(sn4));
29
30 const char *sn5 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0";
31 CHECK(sn_is_valid(sn5));
32}
33
34TEST(ServiceNameTests, checkInvalidServiceNames) {
35
36 const char *sn1 = "sn:trustedfirmware.org";
37 CHECK(!sn_is_valid(sn1));
38
39 const char *sn2 = "trustedfirmware.org:secure-storage.1.0:0";
40 CHECK(!sn_is_valid(sn2));
41}
42
43TEST(ServiceNameTests, checkFields) {
44
45 const char *sn1 = "sn:trustedfirmware.org:crypto:2";
46 CHECK(sn_check_authority(sn1, "trustedfirmware.org"));
47 CHECK(!sn_check_authority(sn1, "ffa"));
48 CHECK(sn_check_service(sn1, "crypto"));
49 CHECK_EQUAL(2, sn_get_service_instance(sn1));
50
51 const char *sn2 = "sn:trustedfirmware.org:secure-storage.1.0:0";
52 CHECK(sn_check_authority(sn2, "trustedfirmware.org"));
53 CHECK(sn_check_service(sn2, "secure-storage.1.0"));
54 CHECK(sn_check_service(sn2, "secure-storage"));
55 CHECK_EQUAL(0, sn_get_service_instance(sn2));
56
Julian Hall7d7b24c2021-08-13 13:40:38 +010057 const char *sn3 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0:77";
Julian Hall8cff2b82020-11-23 18:12:17 +010058 CHECK(sn_check_authority(sn3, "ffa"));
59 CHECK(sn_check_service(sn3, "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0"));
Julian Hall7d7b24c2021-08-13 13:40:38 +010060 CHECK_EQUAL(77, sn_get_service_instance(sn3));
Julian Hall8cff2b82020-11-23 18:12:17 +010061
62 /* Check instance defaults to zero */
63 const char *sn4 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0";
64 CHECK(sn_is_valid(sn4));
65 CHECK_EQUAL(0, sn_get_service_instance(sn4));
66}
67
68TEST(ServiceNameTests, readService) {
69
70 char buf[UUID_CANONICAL_FORM_LEN + 1];
71
72 const char *sn1 = "sn:trustedfirmware.org:crypto:2";
73 CHECK_EQUAL(strlen("crypto"), sn_read_service(sn1, buf, sizeof(buf)));
74 CHECK(memcmp(buf, "crypto", strlen("crypto") + 1) == 0);
75 CHECK_EQUAL(strlen("crypto"), strlen(buf));
76
77 const char *sn2 = "sn:trustedfirmware.org:crypto.1.7.0:2";
78 CHECK_EQUAL(strlen("crypto.1.7.0"), sn_read_service(sn2, buf, sizeof(buf)));
79 CHECK(memcmp(buf, "crypto.1.7.0", strlen("crypto.1.7.0") + 1) == 0);
80 CHECK_EQUAL(strlen("crypto.1.7.0"), strlen(buf));
81
82 const char *sn3 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0:7";
83 CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, sn_read_service(sn3, buf, sizeof(buf)));
84 CHECK(memcmp(buf, "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0", UUID_CANONICAL_FORM_LEN + 1) == 0);
85 CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, strlen(buf));
86
87 const char *sn4 = "sn:ffa:d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0";
88 CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, sn_read_service(sn4, buf, sizeof(buf)));
89 CHECK(memcmp(buf, "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0", UUID_CANONICAL_FORM_LEN + 1) == 0);
90 CHECK_EQUAL(UUID_CANONICAL_FORM_LEN, strlen(buf));
Julian Hall7d7b24c2021-08-13 13:40:38 +010091}