View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements. See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache license, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License. You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the license for the specific language governing permissions and
15   * limitations under the license.
16   */
17  
18  package org.apache.commons.text.lookup;
19  
20  import static org.junit.jupiter.api.Assertions.assertEquals;
21  import static org.junit.jupiter.api.Assertions.assertFalse;
22  import static org.junit.jupiter.api.Assertions.assertNull;
23  import static org.junit.jupiter.api.Assertions.assertTrue;
24  
25  import java.net.InetAddress;
26  import java.net.UnknownHostException;
27  
28  import org.junit.jupiter.api.Test;
29  
30  /**
31   * Tests {@link DnsStringLookup}.
32   */
33  class DnsStringLookupTest {
34  
35      @Test
36      void testAddressFromHostAddress() throws UnknownHostException {
37          final InetAddress localHost = InetAddress.getLocalHost();
38          assertEquals(localHost.getHostAddress(), DnsStringLookup.INSTANCE.apply("address|" + localHost.getHostAddress()));
39      }
40  
41      @Test
42      void testAddressFromHostName() throws UnknownHostException {
43          final InetAddress localHost = InetAddress.getLocalHost();
44          assertEquals(localHost.getHostAddress(), DnsStringLookup.INSTANCE.apply("address|" + localHost.getHostName()));
45      }
46  
47      @Test
48      void testCanonicalNameFromHostAddress() throws UnknownHostException {
49          final InetAddress localHost = InetAddress.getLocalHost();
50          assertEquals(localHost.getCanonicalHostName(), DnsStringLookup.INSTANCE.apply("canonical-name|" + localHost.getHostAddress()));
51      }
52  
53      @Test
54      void testCanonicalNameFromHostName() throws UnknownHostException {
55          final InetAddress localHost = InetAddress.getLocalHost();
56          assertEquals(localHost.getCanonicalHostName(), DnsStringLookup.INSTANCE.apply("canonical-name|" + localHost.getHostName()));
57      }
58  
59      @Test
60      void testDelimiterOnlyKey() {
61          // A key that is only delimiter/whitespace splits to an empty array; must not throw.
62          assertNull(DnsStringLookup.INSTANCE.apply("|"));
63          assertNull(DnsStringLookup.INSTANCE.apply("||"));
64          assertNull(DnsStringLookup.INSTANCE.apply("  |  "));
65      }
66  
67      @Test
68      void testName() throws UnknownHostException {
69          final String address = InetAddress.getLocalHost().getHostAddress();
70          final InetAddress[] localHostAll = InetAddress.getAllByName(address);
71          boolean matched = false;
72          for (final InetAddress localHost : localHostAll) {
73              if (localHost.getHostName().equals(DnsStringLookup.INSTANCE.apply("name|" + address + ""))) {
74                  matched = true;
75              }
76          }
77          assertTrue(matched);
78      }
79  
80      @Test
81      void testNull() {
82          assertNull(DnsStringLookup.INSTANCE.apply(null));
83      }
84  
85      @Test
86      void testToString() {
87          // does not blow up and gives some kind of string.
88          assertFalse(DnsStringLookup.INSTANCE.toString().isEmpty());
89      }
90  }