This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
pxz-hos-client-cpp-module/support/aws-sdk-cpp-master/aws-cpp-sdk-core-tests/utils/ARNTest.cpp

57 lines
2.1 KiB
C++

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#include <aws/external/gtest.h>
#include <aws/core/utils/ARN.h>
using namespace Aws::Utils;
TEST(ARNTest, TestHappyPath)
{
ARN arn("arn:aws:s3:us-east-1:123456789012:bucket");
ASSERT_TRUE(arn);
ASSERT_EQ("aws", arn.GetPartition());
ASSERT_EQ("s3", arn.GetService());
ASSERT_EQ("us-east-1", arn.GetRegion());
ASSERT_EQ("123456789012", arn.GetAccountId());
ASSERT_EQ("bucket", arn.GetResource());
ARN arn1("arn:aws-us-gov:ec2:us-gov-1:123456789120:bucket:bb:qu");
ASSERT_TRUE(arn1);
ASSERT_EQ("aws-us-gov", arn1.GetPartition());
ASSERT_EQ("ec2", arn1.GetService());
ASSERT_EQ("us-gov-1", arn1.GetRegion());
ASSERT_EQ("123456789120", arn1.GetAccountId());
ASSERT_EQ("bucket:bb:qu", arn1.GetResource());
ARN arn2("arn:aws-cn:ec2:cn-north-1:123456789120:bucket/bb/qu");
ASSERT_TRUE(arn2);
ASSERT_EQ("aws-cn", arn2.GetPartition());
ASSERT_EQ("ec2", arn2.GetService());
ASSERT_EQ("cn-north-1", arn2.GetRegion());
ASSERT_EQ("123456789120", arn2.GetAccountId());
ASSERT_EQ("bucket/bb/qu", arn2.GetResource());
ARN arn3("arn:aws:s2::123456789120:whatever:is:put?/here, will be considered:as+_0@@ resource");
ASSERT_TRUE(arn3);
ASSERT_EQ("aws", arn3.GetPartition());
// This is on purpose, service specific ARN should be able to tell if a service name is correct or not.
ASSERT_EQ("s2", arn3.GetService());
// Region is omitted sometimes for some service.
ASSERT_EQ("", arn3.GetRegion());
ASSERT_EQ("123456789120", arn3.GetAccountId());
ASSERT_EQ("whatever:is:put?/here, will be considered:as+_0@@ resource", arn3.GetResource());
}
TEST(ARNTest, TestInvalidARN)
{
// No "arn" prefix
ASSERT_FALSE(ARN("aws:s3:us-east-1:123456789012:bucket"));
// Incomplete ARN (for example, missing service or resource), at least 6 parts separated by ':' are required.
ASSERT_FALSE(ARN("arn:aws:us-east-1:12345679120"));
ASSERT_FALSE(ARN("arn:aws:s3:us-east-1:12345679120"));
ASSERT_FALSE(ARN("Haaaaaaaahahahah:::::"));
}