Exemplo n.º 1
0
        public void TestParsesMacOSSecurityCommandOutput()
        {
            var output = @"keychain: ""/Users/test/Library/Keychains/login.keychain-db""
version: 512
class: ""genp""
attributes:
    0x00000007 <blob>=""SFCCAccountManager""
    0x00000008 <blob>=<NULL>
    ""acct""<blob>=""*****@*****.**""
    ""cdat""<timedate>=0x32303230303230393136333230325A00  ""20200209163202Z\000""
    ""crtr""<uint32>=<NULL>
    ""cusi""<sint32>=<NULL>
    ""desc""<blob>=<NULL>
    ""gena""<blob>=<NULL>
    ""icmt""<blob>=<NULL>
    ""invi""<sint32>=<NULL>
    ""mdat""<timedate>=0x32303230303230393137343234395A00  ""20200209174249Z\000""
    ""nega""<sint32>=<NULL>
    ""prot""<blob>=<NULL>
    ""scrp""<sint32>=<NULL>
    ""svce""<blob>=""SFCCAccountManager""
    ""type""<uint32>=<NULL>

password: ""foo""";

            string username;
            var    secret = SecretsConfigurationProvider.ParseSecurityOutput(output);

            Assert.Equal("foo", secret.Password);
            Assert.Equal("*****@*****.**", secret.Username);
        }
        public void LoadMethodSadPath()
        {
            var exception = new Exception();

            var mockSecret1 = MockSecret.Get("foo", "abc");
            var mockSecret2 = MockSecret.Get("bar", exception);

            var caughtExceptions = new List <Exception>();

            void OnSecretException(SecretExceptionContext context)
            {
                caughtExceptions.Add(context.Exception);
            }

            var source = new SecretsConfigurationSource
            {
                Secrets            = { mockSecret1.Object, mockSecret2.Object },
                ReloadMilliseconds = Timeout.Infinite,
                OnSecretException  = OnSecretException
            };

            var provider = new SecretsConfigurationProvider(source);

            provider.Load();

            provider.TryGet("foo", out var fooValue).Should().BeTrue();
            fooValue.Should().Be("abc");

            provider.TryGet("bar", out var barValue).Should().BeTrue();
            barValue.Should().BeNull();

            caughtExceptions.Should().HaveCount(1);
            caughtExceptions[0].Should().BeSameAs(exception);
        }
        public void ConstructorHappyPath()
        {
            var secret1 = MockSecret.Get("key1", "value1").Object;
            var secret2 = MockSecret.Get("key2", "value2").Object;

            var source = new SecretsConfigurationSource
            {
                Secrets = { secret1, secret2 }
            };

            var provider = new SecretsConfigurationProvider(source);

            provider.Source.Should().BeSameAs(source);

            provider.Secrets.Should().NotBeSameAs(source.Secrets);
            provider.Secrets.Should().BeEquivalentTo(source.Secrets);
        }
        public void LoadMethodHappyPath()
        {
            var secret1 = MockSecret.Get("foo", "abc").Object;
            var secret2 = MockSecret.Get("bar", (string)null).Object;

            var source = new SecretsConfigurationSource
            {
                Secrets            = { secret1, secret2 },
                ReloadMilliseconds = Timeout.Infinite
            };

            var provider = new SecretsConfigurationProvider(source);

            provider.Load();

            provider.TryGet("foo", out var fooValue).Should().BeTrue();
            fooValue.Should().Be("abc");

            provider.TryGet("bar", out var barValue).Should().BeTrue();
            barValue.Should().BeNull();
        }