1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#include <aws/sdkutils/private/endpoints_regex.h>
#include <aws/testing/aws_test_harness.h>
AWS_TEST_CASE(endpoints_regex_aws_region_matches, s_test_aws_region_matches)
static int s_test_aws_region_matches(struct aws_allocator *allocator, void *ctx) {
(void)ctx;
struct aws_endpoints_regex *regex =
aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$"));
ASSERT_NOT_NULL(regex);
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("us-west-2")));
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("eu-west-3")));
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("ap-east-1")));
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("sa-east-1")));
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("ca-central-1")));
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("me-central-1")));
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("af-south-1")));
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("il-central-1")));
ASSERT_ERROR(
AWS_ERROR_SDKUTILS_ENDPOINTS_REGEX_NO_MATCH,
aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("us-west")));
ASSERT_ERROR(
AWS_ERROR_SDKUTILS_ENDPOINTS_REGEX_NO_MATCH,
aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("uk-west-2")));
ASSERT_ERROR(
AWS_ERROR_SDKUTILS_ENDPOINTS_REGEX_NO_MATCH,
aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("us-w1st-2")));
aws_endpoints_regex_destroy(regex);
return AWS_OP_SUCCESS;
}
AWS_TEST_CASE(endpoints_regex_iso_region_matches, s_test_iso_region_matches)
static int s_test_iso_region_matches(struct aws_allocator *allocator, void *ctx) {
(void)ctx;
struct aws_endpoints_regex *regex =
aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^us\\-isob\\-\\w+\\-\\d+$"));
ASSERT_NOT_NULL(regex);
ASSERT_SUCCESS(aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("us-isob-east-1")));
ASSERT_ERROR(
AWS_ERROR_SDKUTILS_ENDPOINTS_REGEX_NO_MATCH,
aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("us-west-2")));
ASSERT_ERROR(
AWS_ERROR_SDKUTILS_ENDPOINTS_REGEX_NO_MATCH,
aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("uk-isob-east-1")));
ASSERT_ERROR(
AWS_ERROR_SDKUTILS_ENDPOINTS_REGEX_NO_MATCH,
aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("us-i1sob-east-1")));
ASSERT_ERROR(
AWS_ERROR_SDKUTILS_ENDPOINTS_REGEX_NO_MATCH,
aws_endpoints_regex_match(regex, aws_byte_cursor_from_c_str("us-isob-e1ast-1")));
aws_endpoints_regex_destroy(regex);
return AWS_OP_SUCCESS;
}
AWS_TEST_CASE(endpoints_regex_misc_validation, s_test_misc_regex_validation)
static int s_test_misc_regex_validation(struct aws_allocator *allocator, void *ctx) {
(void)ctx;
struct aws_endpoints_regex *regex =
aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^us\\-(^ba)\\-\\w+\\-\\d+$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_SDKUTILS_ENDPOINTS_UNSUPPORTED_REGEX, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str(""));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_INVALID_ARGUMENT, aws_last_error());
regex = aws_endpoints_regex_new(
allocator, aws_byte_cursor_from_c_str("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_INVALID_ARGUMENT, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("aaaaa"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_SDKUTILS_ENDPOINTS_UNSUPPORTED_REGEX, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaa(aa$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_INVALID_ARGUMENT, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaaaa($"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_INVALID_ARGUMENT, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaa()aa$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_INVALID_ARGUMENT, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaa*aa$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_SDKUTILS_ENDPOINTS_UNSUPPORTED_REGEX, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaa+aa$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_SDKUTILS_ENDPOINTS_UNSUPPORTED_REGEX, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaa(a|ab)aa$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_SDKUTILS_ENDPOINTS_UNSUPPORTED_REGEX, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaa(a||b)aa$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_INVALID_ARGUMENT, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaa*+aa$"));
ASSERT_NULL(regex);
ASSERT_INT_EQUALS(AWS_ERROR_SDKUTILS_ENDPOINTS_UNSUPPORTED_REGEX, aws_last_error());
regex = aws_endpoints_regex_new(allocator, aws_byte_cursor_from_c_str("^aaaaa$"));
ASSERT_NOT_NULL(regex);
ASSERT_ERROR(
AWS_ERROR_INVALID_ARGUMENT,
aws_endpoints_regex_match(
regex, aws_byte_cursor_from_c_str("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")));
aws_endpoints_regex_destroy(regex);
return AWS_OP_SUCCESS;
}
|