/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.grails.validation.routines; import junit.framework.TestCase; /** * Tests for the DomainValidator. */ public class DomainValidatorTests extends TestCase { private DomainValidator validator = DomainValidator.getInstance(); public void testValidDomains() { assertTrue("apache.org should validate", validator.isValid("apache.org")); assertTrue("www.google.com should validate", validator.isValid("www.google.com")); assertTrue("test-domain.com should validate", validator.isValid("test-domain.com")); assertTrue("test---domain.com should validate", validator.isValid("test---domain.com")); assertTrue("test-d-o-m-ain.com should validate", validator.isValid("test-d-o-m-ain.com")); assertTrue("two-letter domain label should validate", validator.isValid("as.uk")); assertTrue("case-insensitive ApAchE.Org should validate", validator.isValid("ApAchE.Org")); assertTrue("single-character domain label should validate", validator.isValid("z.com")); assertTrue("i.have.an-example.domain.name should validate", validator.isValid("i.have.an-example.domain.name")); assertTrue("foo.london should validate", validator.isValid("foo.london")); } public void testInvalidDomains() { assertFalse("bare TLD .org shouldn't validate", validator.isValid(".org")); assertFalse("domain name with spaces shouldn't validate", validator.isValid(" apache.org ")); assertFalse("domain name containing spaces shouldn't validate", validator.isValid("apa che.org")); assertFalse("domain name starting with dash shouldn't validate", validator.isValid("-testdomain.name")); assertFalse("domain name ending with dash shouldn't validate", validator.isValid("testdomain-.name")); assertFalse("domain name starting with multiple dashes shouldn't validate", validator.isValid("---c.com")); assertFalse("domain name ending with multiple dashes shouldn't validate", validator.isValid("c--.com")); assertFalse("domain name with invalid TLD shouldn't validate", validator.isValid("apache.rog")); assertFalse("URL shouldn't validate", validator.isValid("http://www.apache.org")); assertFalse("Empty string shouldn't validate as domain name", validator.isValid(" ")); assertFalse("Null shouldn't validate as domain name", validator.isValid(null)); } public void testTopLevelDomains() { // infrastructure TLDs assertTrue(".arpa should validate as iTLD", validator.isValidInfrastructureTld(".arpa")); assertFalse(".com shouldn't validate as iTLD", validator.isValidInfrastructureTld(".com")); // generic TLDs assertTrue(".name should validate as gTLD", validator.isValidGenericTld(".name")); assertFalse(".us shouldn't validate as gTLD", validator.isValidGenericTld(".us")); // country code TLDs assertTrue(".uk should validate as ccTLD", validator.isValidCountryCodeTld(".uk")); assertFalse(".org shouldn't validate as ccTLD", validator.isValidCountryCodeTld(".org")); // case-insensitive assertTrue(".COM should validate as TLD", validator.isValidTld(".COM")); assertTrue(".BiZ should validate as TLD", validator.isValidTld(".BiZ")); // corner cases assertFalse("invalid TLD shouldn't validate", validator.isValid(".nope")); assertFalse("empty string shouldn't validate as TLD", validator.isValid("")); assertFalse("null shouldn't validate as TLD", validator.isValid(null)); } }