Example #1
0
        public void ConfigToSectionList()
        {
            var conf = ParseConfiguration();

            var obj = conf.ToConfigObject();

            var sectionList = ConfigurationSectionList.FromConfigObject(obj);

            Assert.IsNotNull(sectionList);

            var obj2 = sectionList.ToConfigObject();

            Assert.IsNotNull(obj2);

            Assert.AreEqual(obj.Defaults.DefaultCCacheName, obj2.Defaults.DefaultCCacheName);
            Assert.AreEqual(obj.Defaults.DefaultRealm, obj2.Defaults.DefaultRealm);

            Assert.AreEqual(1, obj.Realms.Count);
            Assert.AreEqual(3, obj.Realms["EXAMPLE.COM"].Kdc.Count());

            Assert.AreEqual(obj.CaPaths["EXAMPLE.COM"]["DEV.EXAMPLE.COM"], obj2.CaPaths["EXAMPLE.COM"]["DEV.EXAMPLE.COM"]);
            Assert.AreEqual(obj.CaPaths["EXAMPLE.COM"]["TEST.EXAMPLE.COM"], obj2.CaPaths["EXAMPLE.COM"]["TEST.EXAMPLE.COM"]);
            Assert.AreEqual(obj.CaPaths["EXAMPLE.COM"].Count, obj2.CaPaths["EXAMPLE.COM"].Count);

            for (var i = 0; i < obj.Defaults.DefaultTgsEncTypes.Count(); i++)
            {
                Assert.AreEqual(obj.Defaults.DefaultTgsEncTypes.ElementAt(i), obj2.Defaults.DefaultTgsEncTypes.ElementAt(i));
            }
        }
Example #2
0
        public void ConfigurationStoresMultipleValuesToSingleKey()
        {
            var config = new ConfigurationSectionList
            {
                { "foo", "bar" }
            };

            Assert.AreEqual("bar", config["foo"]);

            config.Add("foo", "baz");

            var foo = config["foo"];

            Assert.IsInstanceOfType(foo, typeof(IEnumerable <object>));

            var foo2 = foo as IEnumerable <object>;

            Assert.AreEqual(2, foo2.Count());
            Assert.AreEqual("bar", foo2.ElementAt(0));
            Assert.AreEqual("baz", foo2.ElementAt(1));

            config.Remove("foo");

            Assert.IsNull(config["foo"]);
        }
Example #3
0
        public void DefaultsAreHandled()
        {
            var emptyObj = Krb5ConfigurationSerializer.Serialize(ConfigurationSectionList.FromConfigObject(new Krb5Config()));

            var obj = Krb5ConfigurationSerializer.Deserialize(emptyObj).ToConfigObject();

            Assert.AreEqual(2, obj.Defaults.DefaultTgsEncTypes.Count());
        }
Example #4
0
        private static object ParseValue(Type type, object existingValue, string param, string nextValue, out bool usedValue)
        {
            usedValue = true;

            object value;

            if (type.IsGenericType &&
                (type.GetGenericTypeDefinition() == typeof(ICollection <>) ||
                 type.GetGenericTypeDefinition() == typeof(IEnumerable <>)))
            {
                value = SetOrAddCollectionValue(type, existingValue, nextValue);
            }
            else if (type == typeof(bool) || type == typeof(bool?))
            {
                if (!bool.TryParse(nextValue, out bool result))
                {
                    result    = true;
                    usedValue = false;
                }

                value = result;
            }
            else if (type == typeof(TimeSpan) || type == typeof(TimeSpan?))
            {
                var ts = TimeSpanDurationSerializer.Parse(nextValue);
                value = ts;
            }
            else if (type.BaseType == typeof(Enum))
            {
                if (string.IsNullOrWhiteSpace(nextValue))
                {
                    return(null);
                }

                value = ConfigurationSectionList.ParseEnum(nextValue, type);
            }
            else
            {
                value = nextValue;
            }

            return(value);
        }
Example #5
0
        public void HandleOptionalValues()
        {
            var conf = new ConfigurationSectionList();

            conf.Set("libdefaults.blah", "123", false);
            conf.Set("libdefaults.allow_weak_crypto", "true", false);

            var obj = conf.ToConfigObject();

            Assert.IsTrue(obj.Defaults.AllowWeakCrypto);
            Assert.AreEqual(obj.Defaults.OptionalProperties["blah"], "123");

            var roundtrip = Krb5ConfigurationSerializer.Serialize(obj);

            Assert.IsTrue(roundtrip.Contains("blah = 123"));

            var conf2 = Krb5ConfigurationSerializer.Deserialize(roundtrip);

            var blah = conf2.Get("libdefaults.blah", typeof(string)).ToString();

            Assert.AreEqual("123", blah);
        }