public void IsValidWithoutRequiringProtocol()
        {
            var attribute = new UrlAttribute(requireProtocol: false);

            Assert.IsTrue(attribute.IsValid("foo.bar"));
            Assert.IsTrue(attribute.IsValid("www.foo.bar"));
            Assert.IsTrue(attribute.IsValid("http://foo.bar"));
            Assert.IsFalse(attribute.IsValid("htp://foo.bar"));
        }
        public void IsValidWithUppercaseLetters()
        {
            var attribute = new UrlAttribute();

            Assert.IsTrue(attribute.IsValid("http://FOO.bar"));
            Assert.IsTrue(attribute.IsValid("https://foo.BAR"));
            Assert.IsTrue(attribute.IsValid("ftp://FOO.BAR"));
            Assert.IsFalse(attribute.IsValid("file:///Foo.Bar"));
        }
        public void IsValidExcludeProtocol()
        {
            var attribute = new UrlAttribute(excludeProtocol: true);

            Assert.IsTrue(attribute.IsValid("foo.bar"));
            Assert.IsTrue(attribute.IsValid("www.foo.bar"));
            Assert.IsFalse(attribute.IsValid("http://foo.bar"));
            Assert.IsFalse(attribute.IsValid("htp://foo.bar"));
        }
        public void IsValidDisallowProtocol()
        {
            var attribute = new UrlAttribute(UrlOptions.DisallowProtocol);

            Assert.IsTrue(attribute.IsValid(null));  // Optional values are always valid
            Assert.IsTrue(attribute.IsValid("foo.bar"));
            Assert.IsTrue(attribute.IsValid("www.foo.bar"));
            Assert.IsFalse(attribute.IsValid("http://foo.bar"));
            Assert.IsFalse(attribute.IsValid("htp://foo.bar"));
        }
        public void IsValidTests()
        {
            var attribute = new UrlAttribute();

            Assert.IsTrue(attribute.IsValid(null));  // Optional values are always valid
            Assert.IsTrue(attribute.IsValid("http://foo.bar"));
            Assert.IsTrue(attribute.IsValid("https://foo.bar"));
            Assert.IsTrue(attribute.IsValid("ftp://foo.bar"));
            Assert.IsFalse(attribute.IsValid("file:///foo.bar"));
            Assert.IsFalse(attribute.IsValid("http://user%[email protected]/"));
            Assert.IsFalse(attribute.IsValid("foo.png"));
        }
        public void IsValidWithUri()
        {
            var attribute = new UrlAttribute();

            Assert.IsTrue(attribute.IsValid(new Uri("http://foo.bar")));
            Assert.IsTrue(attribute.IsValid(new Uri("http://FOO.bar")));
            Assert.IsTrue(attribute.IsValid(new Uri("https://foo.BAR")));
            Assert.IsTrue(attribute.IsValid(new Uri("ftp://FOO.BAR")));

            Assert.IsFalse(attribute.IsValid(new Uri("file:///foo.bar")));
        }
        public void IsValidWithoutRequiringProtocol()
        {
            var attribute = new UrlAttribute(UrlOptions.OptionalProtocol);

            Assert.IsTrue(attribute.IsValid(null));  // Optional values are always valid
            Assert.IsTrue(attribute.IsValid("foo.bar"));
            Assert.IsTrue(attribute.IsValid("www.foo.bar"));
            Assert.IsTrue(attribute.IsValid("http://foo.bar"));
            Assert.IsTrue(attribute.IsValid("http://localhost"));
            Assert.IsTrue(attribute.IsValid("localhost"));
            Assert.IsTrue(attribute.IsValid("localhost:12345"));
            Assert.IsFalse(attribute.IsValid("htp://foo.bar"));
            Assert.IsFalse(attribute.IsValid("-localhost"));
            Assert.IsFalse(attribute.IsValid(".localhost"));
            Assert.IsFalse(attribute.IsValid("1localhost"));
        }