public void Invoke_KeyとIVを環境変数から取得して正常に復号化されること()
        {
            var config = new TripleDESCryptoSecretInfoRepositoryConfig(
                key: "PwshTools.CryptSecretString.Key.Tests.Cmdlet.2",
                iv: "PwshTools.CryptSecretString.IV.Repos.Cmdlet.2"
                );

            Environment.SetEnvironmentVariable(config.TripleDESCryptoKeyEnviromentVariableName, UnitTestSecretKey, EnvironmentVariableTarget.User);
            Environment.SetEnvironmentVariable(config.TripleDESCryptoIVEnviromentVariableName, UnitTestSecretIV, EnvironmentVariableTarget.User);

            var cmdlet = new CryptSecretStringCommand(
                new TripleDESCryptoSecretInfoRepository(config)
                )
            {
                Value   = "6GQG8+pOFu7Fz1Qn0LPphw==",
                Decrypt = new SwitchParameter(isPresent: true)
            };

            var result = cmdlet
                         .Invoke <string>()
                         .Single();

            result.Should().Be("hogehoge");

            Environment.SetEnvironmentVariable(config.TripleDESCryptoKeyEnviromentVariableName, null, EnvironmentVariableTarget.User);
            Environment.SetEnvironmentVariable(config.TripleDESCryptoIVEnviromentVariableName, null, EnvironmentVariableTarget.User);
        }
        public void Invoke_KeyとIVが引数と環境変数にない場合環境変数にKeyとIVが登録されていること()
        {
            var config = new TripleDESCryptoSecretInfoRepositoryConfig(
                key: "PwshTools.CryptSecretString.Key.Tests.Cmdlet.3",
                iv: "PwshTools.CryptSecretString.IV.Repos.Cmdlet.3"
                );

            Environment.SetEnvironmentVariable(config.TripleDESCryptoKeyEnviromentVariableName, null, EnvironmentVariableTarget.User);
            Environment.SetEnvironmentVariable(config.TripleDESCryptoIVEnviromentVariableName, null, EnvironmentVariableTarget.User);
            Environment.GetEnvironmentVariable(config.TripleDESCryptoKeyEnviromentVariableName, EnvironmentVariableTarget.User)
            .Should().BeNull();
            Environment.GetEnvironmentVariable(config.TripleDESCryptoIVEnviromentVariableName, EnvironmentVariableTarget.User)
            .Should().BeNull();

            var cmdlet = new CryptSecretStringCommand(
                new TripleDESCryptoSecretInfoRepository(config)
                )
            {
                Value   = "hogehoge",
                Decrypt = new SwitchParameter(isPresent: false)
            };

            var result = cmdlet
                         .Invoke <string>()
                         .Single();

            Environment.GetEnvironmentVariable(config.TripleDESCryptoKeyEnviromentVariableName, EnvironmentVariableTarget.User)
            .Should().NotBeNullOrEmpty();
            Environment.GetEnvironmentVariable(config.TripleDESCryptoIVEnviromentVariableName, EnvironmentVariableTarget.User)
            .Should().NotBeNullOrEmpty();

            Environment.SetEnvironmentVariable(config.TripleDESCryptoKeyEnviromentVariableName, null, EnvironmentVariableTarget.User);
            Environment.SetEnvironmentVariable(config.TripleDESCryptoIVEnviromentVariableName, null, EnvironmentVariableTarget.User);
        }
        public void Invoke_KeyとIVを引数に渡して正常に復号化されること()
        {
            var cmdlet = new CryptSecretStringCommand()
            {
                Value   = "6GQG8+pOFu7Fz1Qn0LPphw==",
                Decrypt = new SwitchParameter(isPresent: true),
                Key     = UnitTestSecretKey,
                InitializationVector = UnitTestSecretIV
            };

            var result = cmdlet
                         .Invoke <string>()
                         .Single();

            result.Should().Be("hogehoge");
        }