File: endpoints_regex_tests.c

package info (click to toggle)
aws-crt-python 0.20.4%2Bdfsg-1~bpo12%2B1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-backports
  • size: 72,656 kB
  • sloc: ansic: 381,805; python: 23,008; makefile: 6,251; sh: 4,536; cpp: 699; ruby: 208; java: 77; perl: 73; javascript: 46; xml: 11
file content (138 lines) | stat: -rw-r--r-- 6,032 bytes parent folder | download
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;
}