public void ShouldConfigureFromFile()
        {
            // Arrange
            HmacConfigurationManager configurationManager  = new HmacConfigurationManager();
            HmacConfiguration        expectedConfiguration = new HmacConfiguration
            {
                Name                   = "TestConfiguration",
                UserHeaderName         = "X-Test-User",
                AuthorizationScheme    = "TEST",
                SignatureDataSeparator = "_",
                SignatureEncoding      = "UTF-32",
                HmacAlgorithm          = "HMACSHA256",
                MaxRequestAge          = TimeSpan.FromMinutes(2),
                SignRequestUri         = false,
                ValidateContentMd5     = true,
                Headers                = new List <string> {
                    "X-Test-Header-1", "X-Test-Header-2"
                }
            };

            // Act
            configurationManager.ConfigureFromFile("Hmac.config");
            IHmacConfiguration configuration = configurationManager.Get(expectedConfiguration.Name);

            // Assert
            AssertConfiguration(expectedConfiguration, configuration);
        }
        public void ShouldGetDefaultConfiguration()
        {
            // Arrange
            HmacConfigurationManager configurationManager  = new HmacConfigurationManager();
            HmacConfiguration        expectedConfiguration = new HmacConfiguration
            {
                Name                   = configurationManager.DefaultConfigurationKey,
                UserHeaderName         = "X-Auth-User",
                AuthorizationScheme    = "HMAC",
                SignatureDataSeparator = "\n",
                SignatureEncoding      = "UTF-8",
                HmacAlgorithm          = "HMACSHA512",
                MaxRequestAge          = TimeSpan.FromMinutes(5),
                SignRequestUri         = true,
                ValidateContentMd5     = true,
                Headers                = null
            };

            // Act
            IHmacConfiguration defaultConfigByKey = configurationManager.Get(configurationManager.DefaultConfigurationKey);
            IHmacConfiguration defaultConfig      = configurationManager.GetDefault();

            // Assert
            AssertConfiguration(expectedConfiguration, defaultConfigByKey);
            AssertConfiguration(expectedConfiguration, defaultConfig);
        }
示例#3
0
文件: Program.cs 项目: denedios/hmac
        static void Main()
        {
            // Retrieve the server URL
            string serverBaseUrl = ConfigurationManager.AppSettings["ServerBaseUrl"];

            // Setup the signer
            IHmacConfigurationManager configurationManager = new HmacConfigurationManager();

            configurationManager.ConfigureFromFile("Hmac.config");
            IHmacConfiguration   configuration = configurationManager.Get("Example");
            IHmacKeyRepository   keyRepository = new SingleHmacKeyRepository("FollowTheWhiteRabbit");
            IRestSharpHmacSigner signer        = new RestSharpHmacSigner(configuration, keyRepository);

            // Setup the RestSharp client
            IRestClient client = new RestClient(serverBaseUrl);

            client.AddHandler("application/json", new JsonDeserializer());
            client.Authenticator = new HmacAuthenticator(configuration, signer);
            client.AddDefaultHeader("X-Custom-Header", "Knock knock...");

            // Execute the GET request
            Console.WriteLine("Neo searches for a spoon.");
            IRestRequest getRequest = new RestRequest("spoon", Method.GET);

            getRequest.AddHeader(configuration.UserHeaderName, "Neo");
            IRestResponse <ExampleModel> getResponse = client.Execute <ExampleModel>(getRequest);

            Console.WriteLine("  There is a '{0}'!", getResponse.Data.Value);

            // Execute the POST request
            Console.WriteLine("Neo posts his sunglasses.");
            IRestRequest postRequest = new RestRequest(Method.POST);

            postRequest.RequestFormat = DataFormat.Json;
            postRequest.AddHeader(configuration.UserHeaderName, "Neo");
            postRequest.AddBody(new ExampleModel {
                Value = "sunglasses"
            });
            IRestResponse postResponse = client.Execute(postRequest);

            Console.WriteLine("  {0}", postResponse.Content);

            // Execute GET request with an incorrect username
            Console.WriteLine("Morpheus searches for The One.");
            IRestRequest incorrectGetRequest = new RestRequest("The One", Method.GET);

            incorrectGetRequest.AddHeader(configuration.UserHeaderName, "Morpheus");
            IRestResponse incorrectGetResponse = client.Execute(incorrectGetRequest);

            Console.WriteLine("  {0}", incorrectGetResponse.Content);

#if DEBUG
            if (Debugger.IsAttached)
            {
                Console.WriteLine("Press any key to continue . . .");
                Console.ReadKey(true);
            }
#endif
        }
        public void ShouldContainsConfiguration()
        {
            // Arrange
            HmacConfigurationManager configurationManager = new HmacConfigurationManager();
            const string             existingConfigKey    = "TestConfiguration";
            const string             nonExistingConfigKey = "Wrong_TestConfiguration";

            // Act
            configurationManager.ConfigureFromString(_hmacModifiedConfig, HmacConfigurationFormat.Xml);

            bool existingConfigFound    = configurationManager.Contains(existingConfigKey);
            bool nonExistingConfigFound = configurationManager.Contains(nonExistingConfigKey);

            // Assert
            Assert.IsTrue(existingConfigFound);
            Assert.IsFalse(nonExistingConfigFound);
        }
        public void ShouldGetAllKeys()
        {
            // Arrange
            HmacConfigurationManager configurationManager = new HmacConfigurationManager();

            string[] expectedKeys =
            {
                "TestConfiguration",
                "TestConfiguration2"
            };

            // Act
            configurationManager.ConfigureFromString(_hmacModifiedConfig, HmacConfigurationFormat.Xml);
            ICollection <string> keys = configurationManager.GetAllKeys();

            // Assert
            Assert.IsNotNull(keys);
            Assert.IsTrue(expectedKeys.All(keys.Contains));
        }
        public void ShouldTryGetConfiguration()
        {
            // Arrange
            HmacConfigurationManager configurationManager = new HmacConfigurationManager();
            const string             existingConfigKey    = "TestConfiguration";
            const string             nonExistingConfigKey = "Wrong_TestConfiguration";

            // Act
            configurationManager.ConfigureFromString(_hmacModifiedConfig, HmacConfigurationFormat.Xml);

            IHmacConfiguration existingConfig;
            IHmacConfiguration nonExistingConfig;

            bool existingConfigFound    = configurationManager.TryGet(existingConfigKey, out existingConfig);
            bool nonExistingConfigFound = configurationManager.TryGet(nonExistingConfigKey, out nonExistingConfig);

            // Assert
            Assert.IsNotNull(existingConfig);
            Assert.IsNull(nonExistingConfig);
            Assert.IsTrue(existingConfigFound);
            Assert.IsFalse(nonExistingConfigFound);
        }
        public void ShouldConfigureFromFileAndWatch()
        {
            // Arrange
            HmacConfigurationManager configurationManager = new HmacConfigurationManager();
            const string             name = "TestConfiguration";
            const string             originalAuthScheme = "TEST";
            const string             modifiedAuthScheme = "TEST_MODIFIED";

            // Act
            configurationManager.ConfigureFromFileAndWatch("Hmac.config");
            IHmacConfiguration configuration = configurationManager.Get(name);

            using (StreamWriter writer = new StreamWriter("Hmac.config", false, Encoding.UTF8))
            {
                writer.Write(_hmacModifiedConfig);
                writer.Flush();
            }
            Thread.Sleep(1500);
            IHmacConfiguration modifiedConfiguration = configurationManager.Get(name);
            IHmacConfiguration defaultConfiguration  = configurationManager.Get(configurationManager.DefaultConfigurationKey);

            using (StreamWriter writer = new StreamWriter("Hmac.config", false, Encoding.UTF8))
            {
                writer.Write(_hmacConfig);
                writer.Flush();
            }

            // Assert
            Assert.IsNotNull(configuration);
            Assert.AreEqual(name, configuration.Name);
            Assert.AreEqual(originalAuthScheme, configuration.AuthorizationScheme);
            Assert.IsNotNull(configuration);
            Assert.AreEqual(name, modifiedConfiguration.Name);
            Assert.AreEqual(modifiedAuthScheme, modifiedConfiguration.AuthorizationScheme);
            Assert.IsNotNull(defaultConfiguration);
            Assert.AreEqual(configurationManager.DefaultConfigurationKey, defaultConfiguration.Name);
        }