Example #1
0
        public void RefreshSignParameters()
        {
            RoaSignatureComposer.ClearComposer();
            var instance   = new RoaSignatureComposer();
            var parameters = new Dictionary <string, string>
            {
                { "foo", "bar" },
                { "a", "A" },
                { "nullValue", null }
            };
            var mock = new Mock <Signer>();

            mock.Setup(foo => foo.GetSignerType()).Returns("MockSigner");
            var signer  = mock.Object;
            var context = new UnmarshallerContext();

            context.ResponseDictionary =
                instance.RefreshSignParameters(parameters, signer, "accessKeyId", FormatType.JSON);
            Assert.Equal("MockSigner", context.StringValue("x-acs-signature-type"));

            var hmacSHA1Signer = new HmacSHA1Signer();

            context.ResponseDictionary =
                instance.RefreshSignParameters(parameters, hmacSHA1Signer, "accessKeyId", null);
            Assert.Null(context.StringValue("x-acs-signature-type"));
        }
        public void SignString()
        {
            HmacSHA1Signer instance = new HmacSHA1Signer();
            string         sign     = instance.SignString("foo", "secret");

            Assert.Equal("m67ZG+f1i1fIJLYNp8smKy7K+9I=", sign);
        }
        public void DoAction1()
        {
            // When
            // request.AcceptFormat is null
            // request.ProductDomain is null
            // domain is null

            // Mock credential
            Credential credential = new Credential(AKID, AKSE);

            DefaultAcsClient instance = new DefaultAcsClient();

            // Mock AcsResquest
            MockAcsRequestForDefaultAcsClient request = new MockAcsRequestForDefaultAcsClient();

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            AlibabaCloudCredentials credentials = mockCredentials.Object;
            Signer signer = new HmacSHA1Signer();

            // When prodoctDomain is not exist
            Assert.Throws <ClientException>(
                () =>
            {
                var response = instance.DoAction <AcsResponse>(request, true, 1, "cn-hangzhou", credentials, signer, FormatType.JSON, null);
            }
                );
        }
Example #4
0
        public void RefreshSignParameters()
        {
            RpcSignatureComposer.ClearComposer();
            FormatType          formatType = FormatType.JSON;;
            ISignatureComposer  signatureComposer;
            UnmarshallerContext context;

            Dictionary <string, string> parameters = new Dictionary <string, string>
            {
                { "foo", "bar" },
                { "a", "A" },
                { "b", "B" }
            };

            // 覆盖formayType不为null, GetSignertype回调为null的情况
            HmacSHA1Signer hmacSHA1Signer = new HmacSHA1Signer();

            signatureComposer          = RoaSignatureComposer.GetComposer();
            context                    = new UnmarshallerContext();
            context.ResponseDictionary = signatureComposer.RefreshSignParameters(parameters, hmacSHA1Signer, "accessKeyId", formatType);
            Assert.Equal("HMAC-SHA1", context.StringValue("x-acs-signature-method"));

            // 覆盖formayType为null, GetSignerType回调不为null的情况
            SHA256withRSASigner SHA256withRSASigner = new SHA256withRSASigner();

            Assert.NotNull(SHA256withRSASigner.GetSignerType());
            signatureComposer          = new RpcSignatureComposer();
            context.ResponseDictionary = signatureComposer.RefreshSignParameters(parameters, SHA256withRSASigner, "accessKeyId", null);
            Assert.Null(context.StringValue("x-acs-signature-method"));
        }
        public void DoAction5()
        {
            Environment.SetEnvironmentVariable("DEBUG", "sdk");
            var status    = 200;
            var code      = "ThisIsCode1";
            var message   = "ThisIsMessage1";
            var requestId = "ThisIsRequestId1";
            var response  = new HttpResponse();
            var content   = Encoding.GetEncoding("UTF-8")
                            .GetBytes("{\"Code\":\"" + code + "\",\"Message\":\"" + message + "\",\"RequestId\":\"" + requestId +
                                      "\"}");

            response.ContentType = FormatType.JSON;
            response.Content     = content;
            response.Status      = status;

            var tmpHeaders = new Dictionary <string, string>
            {
                { "Content-MD5", "md5" },
                { "Content-Length", "length" },
                { "Content-Type", "text/json" }
            };

            response.Headers = tmpHeaders;

            var mockInstance = new Mock <DefaultAcsClient>
            {
                CallBase = true
            };

            mockInstance.Setup(foo => foo.GetResponse(
                                   It.IsAny <HttpRequest>()
                                   )).Returns(response);

            var instance = mockInstance.Object;

            // Mock AcsResquest
            var request = new MockAcsRequestForDefaultAcsClient();

            request.AcceptFormat = FormatType.JSON;
            var productDomain = new ProductDomain("productName1", "productDomain1");

            request.ProductDomain = productDomain;

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            var credentials     = mockCredentials.Object;

            // Mock Signer
            Signer signer = new HmacSHA1Signer();

            var result = instance.DoAction(request, true, 1, "cn-hangzhou", credentials, signer, FormatType.JSON, null);

            Assert.Null(Environment.GetEnvironmentVariable("DEBUG"));

            status = 500;
            result = instance.DoAction(request, true, 0, "cn-hangzhou", credentials, signer, FormatType.JSON, null);
            Assert.Null(Environment.GetEnvironmentVariable("DEBUG"));
        }
        public void DoAction3()
        {
            // When
            // request.AcceptFormat is not null
            // request.ProductDomain is not null
            // domain is not null
            // response.Content is not null
            // response.Status != 200

            // Mock response
            var status    = 400;
            var code      = "ThisIsCode";
            var message   = "ThisIsMessage";
            var requestId = "ThisIsRequestId";
            var response  = new HttpResponse();
            var content   = Encoding.GetEncoding("UTF-8")
                            .GetBytes("{\"Code\":\"" + code + "\",\"Message\":\"" + message + "\",\"RequestId\":\"" + requestId +
                                      "\"}");

            response.ContentType = FormatType.JSON;
            response.Content     = content;
            response.Status      = status;

            var mockInstance = new Mock <DefaultAcsClient>
            {
                CallBase = true
            };

            mockInstance.Setup(foo => foo.GetResponse(
                                   It.IsAny <HttpRequest>()
                                   )).Returns(response);

            var instance = mockInstance.Object;

            // Mock AcsResquest
            var request = new MockAcsRequestForDefaultAcsClient();

            request.AcceptFormat = FormatType.JSON;
            var productDomain = new ProductDomain("productName", "productDomain");

            request.ProductDomain = productDomain;

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            var credentials     = mockCredentials.Object;

            // Mock Signer
            Signer signer = new HmacSHA1Signer();

            var result = instance.DoAction(request, true, 1, "cn-hangzhou", credentials, signer, FormatType.JSON, null);

            Assert.NotNull(result);
            Assert.Equal(result.Status, response.Status);
        }
Example #7
0
        public void DoAction()
        {
            // Mock RegionIds
            ISet <String> regionIds = new HashSet <String>();

            regionIds.Add("cn-hangzhou");

            // Mock productDomains
            List <ProductDomain> productDomains = new List <ProductDomain>()
            {
            };

            // Mock endpoint
            Endpoint endpoint = new Endpoint("cn-hangzhou", regionIds, productDomains);

            // Mock endpoints
            List <Endpoint> endpoints = new List <Endpoint>()
            {
            };

            endpoints.Add(endpoint);

            // Mock credential
            Credential credential = new Credential(AKID, AKSE);

            // Mock Profile
            var mockProfile = new Mock <IClientProfile>();

            mockProfile.Setup(foo => foo.GetCredential()).Returns(credential);
            IClientProfile profile = mockProfile.Object;

            DefaultAcsClient instance = new DefaultAcsClient();

            // Mock AcsResquest
            MockAcsRequestForDefaultAcsClient request = new MockAcsRequestForDefaultAcsClient();

            request.RegionId             = "cn-hangzhou";
            request.Product              = "Ess";
            request.LocationProduct      = "ess";
            request.LocationEndpointType = "openAPI";

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            AlibabaCloudCredentials credentials = mockCredentials.Object;
            Signer signer = new HmacSHA1Signer();

            // When prodoctDomain is not exist
            Assert.Throws <ClientException>(
                () =>
            {
                var response = instance.DoAction <AcsResponse>(request, true, 1, "cn-hangzhou", credentials, signer, FormatType.JSON, endpoints);
            }
                );
        }
 public void RefreshSignParameters()
 {
     Dictionary <string, string> tmp = new Dictionary <string, string>
     {
         { "foo", "bar" },
         { "a", "A" },
         { "b", "B" }
     };
     Signer                      signer     = new HmacSHA1Signer();
     FormatType                  formatType = FormatType.JSON;
     ISignatureComposer          instance   = RoaSignatureComposer.GetComposer();
     Dictionary <String, String> result     = instance.RefreshSignParameters(tmp, signer, "accessKeyId", formatType);
 }
        public void SignRequest()
        {
            MockRoaAcsRequest       mockRoaAcsRequest       = new MockRoaAcsRequest("product");
            HmacSHA1Signer          signer                  = new HmacSHA1Signer();
            BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials(
                "accessKeyId", "accessKeySecret", "sessionToken", 0
                );
            ProductDomain domain = new ProductDomain();

            mockRoaAcsRequest.UriPattern = "UriPattern";
            Dictionary <string, string> tmpDic = new Dictionary <string, string>
            {
                { "a", "A" },
                { "b", "B" }
            };

            mockRoaAcsRequest.BodyParameters = tmpDic;
            mockRoaAcsRequest.PathParameters = tmpDic;
            mockRoaAcsRequest.UriPattern     = "UriPattern";
            Assert.Equal("UriPattern", mockRoaAcsRequest.UriPattern);

            var request = mockRoaAcsRequest.SignRequest(signer, basicSessionCredentials, FormatType.JSON, domain);

            Assert.IsType <MockRoaAcsRequest>(request);
            basicSessionCredentials = new BasicSessionCredentials(
                "accessKeyId", "accessKeySecret", null, 0
                );
            request = mockRoaAcsRequest.SignRequest(signer, basicSessionCredentials, FormatType.JSON, domain);

            // 覆盖不同条件的执行
            mockRoaAcsRequest.BodyParameters = null;
            signer = null;
            var mockCredential = new Mock <AlibabaCloudCredentials>();

            mockCredential.Setup(foo => foo.GetAccessKeyId()).Returns("accessKeyId");
            mockCredential.Setup(foo => foo.GetAccessKeySecret()).Returns("accessKeySecret");
            AlibabaCloudCredentials credential = mockCredential.Object;

            mockRoaAcsRequest.SignRequest(signer, credential, FormatType.JSON, domain);

            signer = new HmacSHA1Signer();
            mockRoaAcsRequest.SignRequest(signer, credential, FormatType.JSON, domain);

            //Test Bearertoken SignRequest with Rpc
            mockRoaAcsRequest.BodyParameters = null;
            BearerTokenSigner     bearerTokenSigner     = new BearerTokenSigner();
            BearerTokenCredential bearerTokenCredential = new BearerTokenCredential("FakeBearerToken");

            mockRoaAcsRequest.SignRequest(bearerTokenSigner, bearerTokenCredential, FormatType.JSON, domain);
        }
        public void DoAction2()
        {
            // When
            // request.AcceptFormat is not null
            // request.ProductDomain is not null
            // domain is not null
            // response.Content is null

            // Mock response
            var response = new HttpResponse();

            response.ContentType = FormatType.JSON;
            response.Content     = null;
            response.Status      = 200;

            var mockInstance = new Mock <DefaultAcsClient>
            {
                CallBase = true
            };

            mockInstance.Setup(foo => foo.GetResponse(
                                   It.IsAny <HttpRequest>()
                                   )).Returns(response);

            var instance = mockInstance.Object;

            // Mock AcsResquest
            var request = new MockAcsRequestForDefaultAcsClient();

            request.AcceptFormat = FormatType.JSON;
            var productDomain = new ProductDomain("productName", "productDomain");

            request.ProductDomain = productDomain;

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            var credentials     = mockCredentials.Object;

            // Mock Signer
            Signer signer = new HmacSHA1Signer();

            Assert.Throws <ClientException>(
                () =>
            {
                var result = instance.DoAction(request, true, 1, "cn-hangzhou", credentials, signer,
                                               FormatType.JSON, null);
            }
                );
        }
        public void ComposeStringToSign()
        {
            Dictionary <string, string> tmp = new Dictionary <string, string>
            {
                { "foo", "bar" },
                { "a", "A" },
                { "b", "B" }
            };
            MethodType         method   = MethodType.GET;
            Signer             signer   = new HmacSHA1Signer();
            ISignatureComposer instance = RoaSignatureComposer.GetComposer();
            string             result   = instance.ComposeStringToSign(method, "uriPattern", signer, tmp, tmp, tmp);

            Assert.Equal("GET\n\n\n\n\nuriPattern?a=A&b=B&foo=bar", result);
        }
        public void GetSignerName()
        {
            HmacSHA1Signer instance = new HmacSHA1Signer();
            string         signer   = instance.GetSignerName();

            Assert.Equal("HMAC-SHA1", signer);

            string signerVersion = instance.GetSignerVersion();

            Assert.Equal("1.0", signerVersion);

            // 此方法只回调了一个 null 值
            string signerType = instance.GetSignerType();

            Assert.Null(signerType);
        }
Example #13
0
        public void ComposeStringToSign()
        {
            RoaSignatureComposer.ClearComposer();
            var tmp = new Dictionary <string, string>
            {
                { "foo", "bar" },
                { "a", "A" },
                { "nullValue", null }
            };
            var    method   = MethodType.GET;
            Signer signer   = new HmacSHA1Signer();
            var    instance = RoaSignatureComposer.GetComposer();
            var    result   = instance.ComposeStringToSign(method, "www.alibabacloud.com?", signer, tmp, tmp, tmp);

            Assert.Equal("GET\n\n\n\n\nwww.alibabacloud.com?&a=A&foo=bar&nullValue", result);
        }
Example #14
0
        public void GetSignerName()
        {
            var instance = new HmacSHA1Signer();
            var signer   = instance.GetSignerName();

            Assert.Equal("HMAC-SHA1", signer);

            var signerVersion = instance.GetSignerVersion();

            Assert.Equal("1.0", signerVersion);

            // Get the null
            var signerType = instance.GetSignerType();

            Assert.Null(signerType);
        }
Example #15
0
        public void SignRequest()
        {
            var mockRpcAcsRequest       = new MockRpcAcsRequest("product");
            var signer                  = new HmacSHA1Signer();
            var basicSessionCredentials = new BasicSessionCredentials(
                "accessKeyId", "accessKeySecret", "sessionToken", 0
                );
            var domain = new ProductDomain();

            var tmpDic = new Dictionary <string, string>
            {
                { "a", "A" },
                { "b", "B" }
            };

            mockRpcAcsRequest.BodyParameters = tmpDic;
            mockRpcAcsRequest.RegionId       = "cn-hangzhou";

            var request = mockRpcAcsRequest.SignRequest(signer, basicSessionCredentials, FormatType.JSON, domain);

            Assert.IsType <MockRpcAcsRequest>(request);
            basicSessionCredentials = new BasicSessionCredentials(
                "accessKeyId", "accessKeySecret", null, 0
                );

            request = mockRpcAcsRequest.SignRequest(signer, basicSessionCredentials, FormatType.JSON, domain);

            mockRpcAcsRequest.BodyParameters = null;
            signer = null;
            var mockCredential = new Mock <AlibabaCloudCredentials>();

            mockCredential.Setup(foo => foo.GetAccessKeyId()).Returns("accessKeyId");
            mockCredential.Setup(foo => foo.GetAccessKeySecret()).Returns("accessKeySecret");
            var credential = mockCredential.Object;

            mockRpcAcsRequest.SignRequest(signer, credential, FormatType.JSON, domain);

            signer = new HmacSHA1Signer();
            mockRpcAcsRequest.SignRequest(signer, credential, FormatType.JSON, domain);

            // Test BearerToken SignRequest with Rpc
            mockRpcAcsRequest.BodyParameters = null;
            var bearerTokenSigner     = new BearerTokenSigner();
            var bearerTokenCredential = new BearerTokenCredential("FakeBearerToken");

            mockRpcAcsRequest.SignRequest(bearerTokenSigner, bearerTokenCredential, FormatType.JSON, domain);
        }
Example #16
0
        public void SignRequest()
        {
            Dictionary <String, String> tmpDic = new Dictionary <String, String> {
                { "foo", "bar" }, { "a", "A" }, { "n", null }
            };

            var            mockAcsRequest = new MockAcsRequest("https://www.alibabacloud.com/");
            HmacSHA1Signer signer         = new HmacSHA1Signer();
            Credential     credential     = new Credential("accessKeyId", "accessKeySecret", "securityToken");
            ProductDomain  domain         = new ProductDomain();

            MockAcsRequest.ConcatQueryString(tmpDic);

            HttpRequest request = mockAcsRequest.SignRequest(signer, credential, FormatType.JSON, domain);

            Assert.Equal("Instance by MockAcsRequest", request.Url);
        }
        public void SignRequest()
        {
            MockRpcAcsRequest       mockRpcAcsRequest       = new MockRpcAcsRequest("product");
            HmacSHA1Signer          signer                  = new HmacSHA1Signer();
            BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials(
                "accessKeyId", "accessKeySecret", "sessionToken", 0
                );
            ProductDomain domain = new ProductDomain();

            Dictionary <string, string> tmpDic = new Dictionary <string, string>
            {
                { "a", "A" },
                { "b", "B" }
            };

            mockRpcAcsRequest.BodyParameters = tmpDic;
            mockRpcAcsRequest.RegionId       = "cn-hangzhou";

            var request = mockRpcAcsRequest.SignRequest(signer, basicSessionCredentials, FormatType.JSON, domain);

            Assert.IsType <MockRpcAcsRequest>(request);
            basicSessionCredentials = new BasicSessionCredentials(
                "accessKeyId", "accessKeySecret", null, 0
                );

            request = mockRpcAcsRequest.SignRequest(signer, basicSessionCredentials, FormatType.JSON, domain);

            // 覆盖不同条件的执行
            mockRpcAcsRequest.BodyParameters = null;
            signer = null;
            var mockCredential = new Mock <AlibabaCloudCredentials>();

            mockCredential.Setup(foo => foo.GetAccessKeyId()).Returns("accessKeyId");
            mockCredential.Setup(foo => foo.GetAccessKeySecret()).Returns("accessKeySecret");
            AlibabaCloudCredentials credential = mockCredential.Object;

            mockRpcAcsRequest.SignRequest(signer, credential, FormatType.JSON, domain);

            signer = new HmacSHA1Signer();
            mockRpcAcsRequest.SignRequest(signer, credential, FormatType.JSON, domain);

            // Done With No Exception
        }