public void ComposeUrl()
        {
            string                      endpoint, result;
            MockRoaAcsRequest           mockRoaAcsRequest = new MockRoaAcsRequest("product");
            Dictionary <string, string> queries           = new Dictionary <string, string>
            {
                { "a", "A" },
                { "b", "B" }
            };

            endpoint = "endpoint.domain.com";
            result   = mockRoaAcsRequest.ComposeUrl(endpoint, queries);
            // Console.WriteLine(result);
            Assert.Equal("HTTP://endpoint.domain.com?a=A&b=B", result);

            endpoint = "endpoint.domain.com?";
            result   = mockRoaAcsRequest.ComposeUrl(endpoint, queries);
            // Console.WriteLine(result);
            Assert.Equal("HTTP://endpoint.domain.com?a=A&b=B", result);

            endpoint = "endpoint.domain.com?c=C";
            result   = mockRoaAcsRequest.ComposeUrl(endpoint, queries);
            // Console.WriteLine(result);
            Assert.Equal("HTTP://endpoint.domain.com?c=C&a=A&b=B", result);
        }
        public void Instance()
        {
            MockRoaAcsRequest mockRoaAcsRequest;

            mockRoaAcsRequest = new MockRoaAcsRequest("product");
            Assert.Equal("product", mockRoaAcsRequest.Product);

            mockRoaAcsRequest = new MockRoaAcsRequest("product", "version");
            Assert.Equal("product", mockRoaAcsRequest.Product);
            Assert.Equal("version", mockRoaAcsRequest.Version);

            mockRoaAcsRequest = new MockRoaAcsRequest("product", "version", "action");
            Assert.Equal("product", mockRoaAcsRequest.Product);
            Assert.Equal("version", mockRoaAcsRequest.Version);
            Assert.Equal("action", mockRoaAcsRequest.ActionName);

            mockRoaAcsRequest = new MockRoaAcsRequest("product", "version", "action", "locationProduct");
            Assert.Equal("product", mockRoaAcsRequest.Product);
            Assert.Equal("version", mockRoaAcsRequest.Version);
            Assert.Equal("action", mockRoaAcsRequest.ActionName);
            Assert.Equal("locationProduct", mockRoaAcsRequest.LocationProduct);

            mockRoaAcsRequest = new MockRoaAcsRequest("product", "version", "action", "locationProduct", "locationEndpointType");
            Assert.Equal("product", mockRoaAcsRequest.Product);
            Assert.Equal("version", mockRoaAcsRequest.Version);
            Assert.Equal("action", mockRoaAcsRequest.ActionName);
            Assert.Equal("locationProduct", mockRoaAcsRequest.LocationProduct);
            Assert.Equal("locationEndpointType", mockRoaAcsRequest.LocationEndpointType);
        }
        public void SetVersion()
        {
            MockRoaAcsRequest mockRoaAcsRequest = new MockRoaAcsRequest("product");

            mockRoaAcsRequest.SetVersion("set_version");
            Assert.Equal("set_version", mockRoaAcsRequest.Version);
        }
        public void AddPathParameters()
        {
            MockRoaAcsRequest mockRoaAcsRequest = new MockRoaAcsRequest("product");

            mockRoaAcsRequest.AddPathParameters("name", "value");

            UnmarshallerContext context = new UnmarshallerContext();

            context.ResponseDictionary = mockRoaAcsRequest.PathParameters;

            Assert.Equal("value", context.StringValue("name"));
        }
        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);
        }