summaryrefslogtreecommitdiff
path: root/src/mock/hos_mock.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mock/hos_mock.cpp')
-rw-r--r--src/mock/hos_mock.cpp211
1 files changed, 211 insertions, 0 deletions
diff --git a/src/mock/hos_mock.cpp b/src/mock/hos_mock.cpp
new file mode 100644
index 00000000..0e349965
--- /dev/null
+++ b/src/mock/hos_mock.cpp
@@ -0,0 +1,211 @@
+#include <aws/core/utils/Outcome.h>
+#include <aws/core/auth/AWSAuthSigner.h>
+#include <aws/core/client/CoreErrors.h>
+#include <aws/core/client/RetryStrategy.h>
+#include <aws/core/http/HttpClient.h>
+#include <aws/core/http/HttpResponse.h>
+#include <aws/core/http/HttpClientFactory.h>
+#include <aws/core/auth/AWSCredentialsProviderChain.h>
+#include <aws/core/utils/xml/XmlSerializer.h>
+#include <aws/core/utils/memory/stl/AWSStringStream.h>
+#include <aws/core/utils/threading/Executor.h>
+#include <aws/core/utils/DNS.h>
+#include <aws/core/utils/logging/LogMacros.h>
+
+#include <aws/core/utils/event/EventStream.h>
+#include "hos_mock.h"
+#include <aws/s3/S3Endpoint.h>
+#include <aws/s3/S3ErrorMarshaller.h>
+#include <aws/s3/S3ARN.h>
+#include <aws/s3/model/AbortMultipartUploadRequest.h>
+#include <aws/s3/model/CompleteMultipartUploadRequest.h>
+#include <aws/s3/model/CopyObjectRequest.h>
+#include <aws/s3/model/CreateBucketRequest.h>
+#include <aws/s3/model/CreateMultipartUploadRequest.h>
+#include <aws/s3/model/DeleteBucketRequest.h>
+#include <aws/s3/model/DeleteBucketAnalyticsConfigurationRequest.h>
+#include <aws/s3/model/DeleteBucketCorsRequest.h>
+#include <aws/s3/model/DeleteBucketEncryptionRequest.h>
+#include <aws/s3/model/DeleteBucketInventoryConfigurationRequest.h>
+#include <aws/s3/model/DeleteBucketLifecycleRequest.h>
+#include <aws/s3/model/DeleteBucketMetricsConfigurationRequest.h>
+#include <aws/s3/model/DeleteBucketPolicyRequest.h>
+#include <aws/s3/model/DeleteBucketReplicationRequest.h>
+#include <aws/s3/model/DeleteBucketTaggingRequest.h>
+#include <aws/s3/model/DeleteBucketWebsiteRequest.h>
+#include <aws/s3/model/DeleteObjectRequest.h>
+#include <aws/s3/model/DeleteObjectTaggingRequest.h>
+#include <aws/s3/model/DeleteObjectsRequest.h>
+#include <aws/s3/model/DeletePublicAccessBlockRequest.h>
+#include <aws/s3/model/GetBucketAccelerateConfigurationRequest.h>
+#include <aws/s3/model/GetBucketAclRequest.h>
+#include <aws/s3/model/GetBucketAnalyticsConfigurationRequest.h>
+#include <aws/s3/model/GetBucketCorsRequest.h>
+#include <aws/s3/model/GetBucketEncryptionRequest.h>
+#include <aws/s3/model/GetBucketInventoryConfigurationRequest.h>
+#include <aws/s3/model/GetBucketLifecycleConfigurationRequest.h>
+#include <aws/s3/model/GetBucketLocationRequest.h>
+#include <aws/s3/model/GetBucketLoggingRequest.h>
+#include <aws/s3/model/GetBucketMetricsConfigurationRequest.h>
+#include <aws/s3/model/GetBucketNotificationConfigurationRequest.h>
+#include <aws/s3/model/GetBucketPolicyRequest.h>
+#include <aws/s3/model/GetBucketPolicyStatusRequest.h>
+#include <aws/s3/model/GetBucketReplicationRequest.h>
+#include <aws/s3/model/GetBucketRequestPaymentRequest.h>
+#include <aws/s3/model/GetBucketTaggingRequest.h>
+#include <aws/s3/model/GetBucketVersioningRequest.h>
+#include <aws/s3/model/GetBucketWebsiteRequest.h>
+#include <aws/s3/model/GetObjectRequest.h>
+#include <aws/s3/model/GetObjectAclRequest.h>
+#include <aws/s3/model/GetObjectLegalHoldRequest.h>
+#include <aws/s3/model/GetObjectLockConfigurationRequest.h>
+#include <aws/s3/model/GetObjectRetentionRequest.h>
+#include <aws/s3/model/GetObjectTaggingRequest.h>
+#include <aws/s3/model/GetObjectTorrentRequest.h>
+#include <aws/s3/model/GetPublicAccessBlockRequest.h>
+#include <aws/s3/model/HeadBucketRequest.h>
+#include <aws/s3/model/HeadObjectRequest.h>
+#include <aws/s3/model/ListBucketAnalyticsConfigurationsRequest.h>
+#include <aws/s3/model/ListBucketInventoryConfigurationsRequest.h>
+#include <aws/s3/model/ListBucketMetricsConfigurationsRequest.h>
+#include <aws/s3/model/ListMultipartUploadsRequest.h>
+#include <aws/s3/model/ListObjectVersionsRequest.h>
+#include <aws/s3/model/ListObjectsRequest.h>
+#include <aws/s3/model/ListObjectsV2Request.h>
+#include <aws/s3/model/ListPartsRequest.h>
+#include <aws/s3/model/PutBucketAccelerateConfigurationRequest.h>
+#include <aws/s3/model/PutBucketAclRequest.h>
+#include <aws/s3/model/PutBucketAnalyticsConfigurationRequest.h>
+#include <aws/s3/model/PutBucketCorsRequest.h>
+#include <aws/s3/model/PutBucketEncryptionRequest.h>
+#include <aws/s3/model/PutBucketInventoryConfigurationRequest.h>
+#include <aws/s3/model/PutBucketLifecycleConfigurationRequest.h>
+#include <aws/s3/model/PutBucketLoggingRequest.h>
+#include <aws/s3/model/PutBucketMetricsConfigurationRequest.h>
+#include <aws/s3/model/PutBucketNotificationConfigurationRequest.h>
+#include <aws/s3/model/PutBucketPolicyRequest.h>
+#include <aws/s3/model/PutBucketReplicationRequest.h>
+#include <aws/s3/model/PutBucketRequestPaymentRequest.h>
+#include <aws/s3/model/PutBucketTaggingRequest.h>
+#include <aws/s3/model/PutBucketVersioningRequest.h>
+#include <aws/s3/model/PutBucketWebsiteRequest.h>
+#include <aws/s3/model/PutObjectRequest.h>
+#include <aws/s3/model/PutObjectAclRequest.h>
+#include <aws/s3/model/PutObjectLegalHoldRequest.h>
+#include <aws/s3/model/PutObjectLockConfigurationRequest.h>
+#include <aws/s3/model/PutObjectRetentionRequest.h>
+#include <aws/s3/model/PutObjectTaggingRequest.h>
+#include <aws/s3/model/PutPublicAccessBlockRequest.h>
+#include <aws/s3/model/RestoreObjectRequest.h>
+#include <aws/s3/model/SelectObjectContentRequest.h>
+#include <aws/s3/model/UploadPartRequest.h>
+#include <aws/s3/model/UploadPartCopyRequest.h>
+
+using namespace Aws;
+using namespace Aws::Auth;
+using namespace Aws::Client;
+using namespace Aws::S3;
+using namespace Aws::S3::Model;
+using namespace Aws::Http;
+using namespace Aws::Utils::Xml;
+
+S3ClientMock::S3ClientMock(const AWSCredentials &credentials, const Client::ClientConfiguration &clientConfiguration, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy signPayloads, bool useVirtualAddressing)
+{
+ Aws::String accessKeyId = credentials.GetAWSAccessKeyId();
+ Aws::String secretKey = credentials.GetAWSSecretKey();
+ m_hosBuckets.push_back(Bucket().WithName("session_record_hos_bucket"));
+ m_hosBuckets.push_back(Bucket().WithName("firewall_hos_bucket"));
+
+ init(clientConfiguration);
+ if (memcmp(clientConfiguration.endpointOverride.c_str(), "http://127.0.0.1:9098/hos/", clientConfiguration.endpointOverride.length()) != 0)
+ {
+ m_errorCode = S3Errors::NETWORK_CONNECTION;
+ }
+ if (memcmp(clientConfiguration.endpointOverride.c_str(), "127.0.0.2", clientConfiguration.endpointOverride.length()) == 0)
+ {
+ m_mockMode = 2;
+ m_errorCode = S3Errors::REQUEST_TIMEOUT;
+ }
+ if ((int)m_errorCode == 0)
+ {
+ if (memcmp(accessKeyId.c_str(), "default", accessKeyId.length()) != 0)
+ {
+ m_errorCode = S3Errors::INVALID_ACCESS_KEY_ID;
+ }
+ else if (memcmp(secretKey.c_str(), "default", secretKey.length()) != 0)
+ {
+ m_errorCode = S3Errors::INVALID_SIGNATURE;
+ }
+ }
+}
+
+S3ClientMock::~S3ClientMock()
+{
+}
+
+void S3ClientMock::init(const ClientConfiguration &config)
+{
+ SetServiceClientName("S3");
+ if (config.endpointOverride.empty())
+ {
+ }
+ else
+ {
+ OverrideEndpoint(config.endpointOverride);
+ }
+ m_errorCode = (Aws::S3::S3Errors)0;
+}
+
+ListBucketsOutcome S3ClientMock::ListBuckets() const
+{
+ switch (m_errorCode)
+ {
+ case (S3Errors)0:
+ return ListBucketsOutcome(Aws::S3::Model::ListBucketsResult().WithBuckets(m_hosBuckets));
+ case S3Errors::NETWORK_CONNECTION:
+ return ListBucketsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::NETWORK_CONNECTION, "NETWORK_CONNECTION", "curlCode: 7, Couldn't connect to server", false));
+ case S3Errors::REQUEST_TIMEOUT:
+ return ListBucketsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::REQUEST_TIMEOUT, "REQUEST_TIMEOUT", "RequestTimeout", false));
+ case S3Errors::INVALID_ACCESS_KEY_ID:
+ return ListBucketsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::INVALID_ACCESS_KEY_ID, "INVALID_ACCESS_KEY_ID", "invalid_access_key_id", false));
+ case S3Errors::INVALID_SIGNATURE:
+ return ListBucketsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::INVALID_SIGNATURE, "INVALID_SIGNATURE", "Ivalid Signature", false));
+ default:
+ return ListBucketsOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::UNKNOWN, "UNKNOWN", "unknown", false));
+ }
+}
+
+CreateBucketOutcome S3ClientMock::CreateBucket(const CreateBucketRequest &request) const
+{
+ return CreateBucketOutcome();
+}
+
+PutObjectOutcome S3ClientMock::PutObject(const PutObjectRequest &request) const
+{
+ if (!request.BucketHasBeenSet())
+ {
+ AWS_LOGSTREAM_ERROR("PutObject", "Required field: Bucket, is not set");
+ return PutObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Bucket]", false));
+ }
+ if (!request.KeyHasBeenSet())
+ {
+ AWS_LOGSTREAM_ERROR("PutObject", "Required field: Key, is not set");
+ return PutObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [Key]", false));
+ }
+
+ auto bucket = request.GetBucket().c_str();
+ for (auto &new_bucket : m_hosBuckets)
+ {
+ if (strcmp(new_bucket.GetName().c_str(), bucket) == 0)
+ {
+ return PutObjectOutcome(Aws::S3::Model::PutObjectResult());
+ }
+ }
+ return PutObjectOutcome(Aws::Client::AWSError<S3Errors>(S3Errors::NO_SUCH_BUCKET, "NO_SUCH_BUCKET", "The specified bucket does not exist.", false));
+}
+
+bool S3ClientMock::PutObjectAsync(const PutObjectRequest &request, const PutObjectResponseReceivedHandler &handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext> &context) const
+{
+ handler(this, request, PutObject(request), context);
+ return true;
+} \ No newline at end of file