001/*
002 * Licensed under the Apache License, Version 2.0 (the "License");
003 * you may not use this file except in compliance with the License.
004 * You may obtain a copy of the License at
005 *
006 *     http://www.apache.org/licenses/LICENSE-2.0
007 *
008 * Unless required by applicable law or agreed to in writing, software
009 * distributed under the License is distributed on an "AS IS" BASIS,
010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
011 * See the License for the specific language governing permissions and
012 * limitations under the License.
013 */
014package org.gbif.api.util.validators.identifierschemes;
015
016import org.junit.jupiter.api.Test;
017
018import static org.junit.jupiter.api.Assertions.assertEquals;
019import static org.junit.jupiter.api.Assertions.assertFalse;
020import static org.junit.jupiter.api.Assertions.assertThrows;
021import static org.junit.jupiter.api.Assertions.assertTrue;
022
023/** Tests the {@link WikidataValidator}. */
024public class WikidataValidatorTest {
025
026  @Test
027  public void isValidTest() {
028
029    // State
030    WikidataValidator validator = new WikidataValidator();
031
032    // Should
033    assertTrue(validator.isValid("https://www.wikidata.org/wiki/Q12345"));
034    assertTrue(validator.isValid("https://www.wikidata.org/wiki/Property:P569"));
035    assertTrue(validator.isValid("https://www.wikidata.org/wiki/Lexeme:L1"));
036    assertTrue(validator.isValid("http://www.wikidata.org/wiki/Lexeme:L1"));
037    assertTrue(validator.isValid("http://www.wikidata.org/wiki/Property:P569"));
038    assertTrue(validator.isValid("http://www.wikidata.org/entity/ID"));
039    assertTrue(validator.isValid("wikidata.org/wiki/Property:P569"));
040    assertTrue(validator.isValid("www.wikidata.org/wiki/Lexeme:L1"));
041    assertTrue(validator.isValid("www.wikidata.org/entity/ID"));
042
043    assertFalse(validator.isValid(null));
044    assertFalse(validator.isValid(""));
045    assertFalse(validator.isValid("http.wikidata.org/entity/ID"));
046    assertFalse(validator.isValid("ftp://www.wikidata.org/entity/ID"));
047    assertFalse(validator.isValid("http://www.wikidata.org/entity/ID/awdawdawd"));
048    assertFalse(validator.isValid("https://www.wikidata.org/wiki/Lexeme:L1/awdawd"));
049    assertFalse(validator.isValid("https://www.wikidata.org/wiki/"));
050    assertFalse(validator.isValid("https://www.ad.com/#q=ad"));
051    assertFalse(validator.isValid("http://www.wikidata.org"));
052    assertFalse(validator.isValid("https://www.wikidata.org"));
053    assertFalse(validator.isValid("awdawdawd"));
054  }
055
056  @Test
057  public void normalizeTest() {
058
059    // State
060    WikidataValidator validator = new WikidataValidator();
061
062    // Should
063    assertEquals(
064        "https://www.wikidata.org/wiki/Q12345",
065        validator.normalize("https://www.wikidata.org/wiki/Q12345"));
066    assertEquals(
067        "https://www.wikidata.org/wiki/Property:P569",
068        validator.normalize("https://www.wikidata.org/wiki/Property:P569"));
069    assertEquals(
070        "https://www.wikidata.org/wiki/Lexeme:L1",
071        validator.normalize("https://www.wikidata.org/wiki/Lexeme:L1"));
072    assertEquals(
073        "http://www.wikidata.org/wiki/Lexeme:L1",
074        validator.normalize("http://www.wikidata.org/wiki/Lexeme:L1"));
075    assertEquals(
076        "http://www.wikidata.org/wiki/Property:P569",
077        validator.normalize("http://www.wikidata.org/wiki/Property:P569"));
078    assertEquals(
079        "http://www.wikidata.org/entity/ID",
080        validator.normalize("http://www.wikidata.org/entity/ID"));
081    assertEquals(
082        "wikidata.org/wiki/Property:P569", validator.normalize("wikidata.org/wiki/Property:P569"));
083    assertEquals(
084        "www.wikidata.org/wiki/Lexeme:L1", validator.normalize("www.wikidata.org/wiki/Lexeme:L1"));
085    assertEquals("www.wikidata.org/entity/ID", validator.normalize("www.wikidata.org/entity/ID"));
086  }
087
088  @Test
089  public void normalizExeptionTest() {
090
091    // State
092    WikidataValidator validator = new WikidataValidator();
093
094    // Should
095    assertThrows(IllegalArgumentException.class, () -> validator.normalize("awdawd"));
096  }
097}