示例#1
0
        public void ShouldAuthenticate()
        {
            // Arrange
            IHmacConfiguration   configuration = CreateConfiguration();
            IRestSharpHmacSigner signer        = new RestSharpHmacSigner(configuration, _keyRepository);
            HmacAuthenticator    authenticator = new HmacAuthenticator(configuration, signer);
            IRestClient          client        = CreateClient();
            IRestRequest         request       = CreateRequest(configuration);

            // Act
            authenticator.Authenticate(client, request);
            Parameter         contentMd5Param    = request.Parameters.FirstOrDefault(p => p.Name == "Content-MD5");
            Parameter         authorizationParam = request.Parameters.FirstOrDefault(p => p.Name == "Authorization");
            Parameter         dateParam          = request.Parameters.FirstOrDefault(p => p.Name == "Date");
            string            dateString         = dateParam != null ? dateParam.Value as string ?? string.Empty : string.Empty;
            DateTimeOffset    parsedDate;
            bool              isValidDate   = DateTimeOffset.TryParseExact(dateString, "ddd, dd MMM yyyy HH:mm:ss G\\MT", _dateHeaderCulture, DateTimeStyles.AssumeUniversal, out parsedDate);
            HmacSignatureData signatureData = signer.GetSignatureDataFromRestRequest(client, request);
            string            signature     = signer.CreateSignature(signatureData);

            // Assert
            Assert.IsNotNull(contentMd5Param);
            Assert.AreEqual(ParameterType.HttpHeader, contentMd5Param.Type);
            Assert.AreEqual(_base64Md5Hash, contentMd5Param.Value);
            Assert.IsNotNull(authorizationParam);
            Assert.AreEqual(ParameterType.HttpHeader, authorizationParam.Type);
            Assert.IsNotNull(authorizationParam.Value);
            Assert.IsInstanceOfType(authorizationParam.Value, typeof(string));
            Assert.AreEqual((string)authorizationParam.Value, "HMAC " + signature);
            Assert.IsNotNull(dateParam);
            Assert.AreEqual(ParameterType.HttpHeader, dateParam.Type);
            Assert.IsNotNull(dateParam.Value);
            Assert.IsTrue(isValidDate);
        }
示例#2
0
        public void ShouldGetSignatureDataFromRestRequest()
        {
            // Arrange
            IHmacConfiguration  configuration = CreateConfiguration();
            string              dateString    = CreateHttpDateString();
            IRestClient         client        = CreateClient();
            IRestRequest        request       = CreateRequest(configuration, dateString);
            RestSharpHmacSigner signer        = new RestSharpHmacSigner(configuration, _keyRepository);

            // Act
            HmacSignatureData signatureData = signer.GetSignatureDataFromRestRequest(client, request);

            // Assert
            Assert.IsNotNull(signatureData);
            Assert.AreEqual(_keyRepository.Key, signatureData.Key);
            Assert.AreEqual(request.Method.ToString().ToUpperInvariant(), signatureData.HttpMethod);
            Assert.AreEqual(_base64Md5Hash, signatureData.ContentMd5);
            Assert.AreEqual(ContentType, signatureData.ContentType);
            Assert.AreEqual(dateString, signatureData.Date);
            Assert.AreEqual(_keyRepository.Username, signatureData.Username);
            Assert.AreEqual(Url, signatureData.RequestUri);
            Assert.IsNotNull(signatureData.Headers);
            Assert.IsTrue(signatureData.Headers.Count > 0);
        }