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); } ); }
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); }
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); }
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); }
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); }
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); }
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 }