Package org.mitre.discovery.util

Source Code of org.mitre.discovery.util.TestWebfingerURLNormalizer

/*******************************************************************************
* Copyright 2014 The MITRE Corporation
*   and the MIT Kerberos and Internet Trust Consortium
*
* Licensed 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.mitre.discovery.util;

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.springframework.web.util.UriComponents;

import com.google.common.collect.ImmutableMap;

/**
* @author wkim
*
*/
public class TestWebfingerURLNormalizer {


  // Test fixture:
  private ImmutableMap<String, String> inputToNormalized = new ImmutableMap.Builder<String, String>()
      .put("example.com", "https://example.com")
      .put("example.com:8080", "https://example.com:8080")
      .put("example.com/path", "https://example.com/path")
      .put("example.com?query", "https://example.com?query")
      .put("example.com#fragment", "https://example.com")
      .put("example.com:8080/path?query#fragment", "https://example.com:8080/path?query")

      .put("http://example.com", "http://example.com")
      .put("http://example.com:8080", "http://example.com:8080")
      .put("http://example.com/path", "http://example.com/path")
      .put("http://example.com?query", "http://example.com?query")
      .put("http://example.com#fragment", "http://example.com")
      .put("http://example.com:8080/path?query#fragment", "http://example.com:8080/path?query")

      .put("nov@example.com", "acct:nov@example.com")
      .put("nov@example.com:8080", "https://nov@example.com:8080")
      .put("nov@example.com/path", "https://nov@example.com/path")
      .put("nov@example.com?query", "https://nov@example.com?query")
      .put("nov@example.com#fragment", "acct:nov@example.com")
      .put("nov@example.com:8080/path?query#fragment", "https://nov@example.com:8080/path?query")

      .put("acct:nov@matake.jp", "acct:nov@matake.jp")
      .put("acct:nov@example.com:8080", "acct:nov@example.com:8080")
      .put("acct:nov@example.com/path", "acct:nov@example.com/path")
      .put("acct:nov@example.com?query", "acct:nov@example.com?query")
      .put("acct:nov@example.com#fragment", "acct:nov@example.com")
      .put("acct:nov@example.com:8080/path?query#fragment", "acct:nov@example.com:8080/path?query")

      .put("mailto:nov@matake.jp", "mailto:nov@matake.jp")
      .put("mailto:nov@example.com:8080", "mailto:nov@example.com:8080")
      .put("mailto:nov@example.com/path", "mailto:nov@example.com/path")
      .put("mailto:nov@example.com?query", "mailto:nov@example.com?query")
      .put("mailto:nov@example.com#fragment", "mailto:nov@example.com")
      .put("mailto:nov@example.com:8080/path?query#fragment", "mailto:nov@example.com:8080/path?query")

      .put("localhost", "https://localhost")
      .put("localhost:8080", "https://localhost:8080")
      .put("localhost/path", "https://localhost/path")
      .put("localhost?query", "https://localhost?query")
      .put("localhost#fragment", "https://localhost")
      .put("localhost/path?query#fragment", "https://localhost/path?query")
      .put("nov@localhost", "acct:nov@localhost")
      .put("nov@localhost:8080", "https://nov@localhost:8080")
      .put("nov@localhost/path", "https://nov@localhost/path")
      .put("nov@localhost?query", "https://nov@localhost?query")
      .put("nov@localhost#fragment", "acct:nov@localhost")
      .put("nov@localhost/path?query#fragment", "https://nov@localhost/path?query")

      .put("tel:+810312345678", "tel:+810312345678")
      .put("device:192.168.2.1", "device:192.168.2.1")
      .put("device:192.168.2.1:8080", "device:192.168.2.1:8080")
      .put("device:192.168.2.1/path", "device:192.168.2.1/path")
      .put("device:192.168.2.1?query", "device:192.168.2.1?query")
      .put("device:192.168.2.1#fragment", "device:192.168.2.1")
      .put("device:192.168.2.1/path?query#fragment", "device:192.168.2.1/path?query")

      .build();


  /*
  Adapted from Nov Matake's Ruby normalizer implementation.

   ## INPUT => NORMALIZED
  # example.com => https://example.com
  # example.com:8080 => https://example.com:8080
  # example.com/path => https://example.com/path
  # example.com?query => https://example.com?query
  # example.com#fragment => https://example.com
  # example.com:8080/path?query#fragment => https://example.com:8080/path?query

  # http://example.com => http://example.com
  # http://example.com:8080 => http://example.com:8080
  # http://example.com/path => http://example.com/path
  # http://example.com?query => http://example.com?query
  # http://example.com#fragment => http://example.com
  # http://example.com:8080/path?query#fragment => http://example.com:8080/path?query

  # nov@example.com => acct:nov@example.com
  # nov@example.com:8080 => https://nov@example.com:8080
  # nov@example.com/path => https://nov@example.com/path
  # nov@example.com?query => https://nov@example.com?query
  # nov@example.com#fragment => acct:nov@example.com
  # nov@example.com:8080/path?query#fragment => https://nov@example.com:8080/path?query

  # acct:nov@matake.jp => acct:nov@matake.jp
  # acct:nov@example.com:8080 => acct:nov@example.com:8080
  # acct:nov@example.com/path => acct:nov@example.com/path
  # acct:nov@example.com?query => acct:nov@example.com?query
  # acct:nov@example.com#fragment => acct:nov@example.com
  # acct:nov@example.com:8080/path?query#fragment => acct:nov@example.com:8080/path?query

  # mailto:nov@matake.jp => mailto:nov@matake.jp
  # mailto:nov@example.com:8080 => mailto:nov@example.com:8080
  # mailto:nov@example.com/path => mailto:nov@example.com/path
  # mailto:nov@example.com?query => mailto:nov@example.com?query
  # mailto:nov@example.com#fragment => mailto:nov@example.com
  # mailto:nov@example.com:8080/path?query#fragment => mailto:nov@example.com:8080/path?query

  # localhost => https://localhost
  # localhost:8080 => https://localhost:8080
  # localhost/path => https://localhost/path
  # localhost?query => https://localhost?query
  # localhost#fragment => https://localhost
  # localhost/path?query#fragment => https://localhost/path?query
  # nov@localhost => acct:nov@localhost
  # nov@localhost:8080 => https://nov@localhost:8080
  # nov@localhost/path => https://nov@localhost/path
  # nov@localhost?query => https://nov@localhost?query
  # nov@localhost#fragment => acct:nov@localhost
  # nov@localhost/path?query#fragment => https://nov@localhost/path?query

  # tel:+810312345678 => tel:+810312345678
  # device:192.168.2.1 => device:192.168.2.1
  # device:192.168.2.1:8080 => device:192.168.2.1:8080
  # device:192.168.2.1/path => device:192.168.2.1/path
  # device:192.168.2.1?query => device:192.168.2.1?query
  # device:192.168.2.1#fragment => device:192.168.2.1
  # device:192.168.2.1/path?query#fragment => device:192.168.2.1/path?query

   *

   */


  @Test
  public void normalizeResource_novTest() {
    for (String input : inputToNormalized.keySet()) {

      UriComponents actualNormalized = WebfingerURLNormalizer.normalizeResource(input);

      String expectedNormalized = inputToNormalized.get(input);

      assertEquals("Identifer/Normalized failed.", expectedNormalized, WebfingerURLNormalizer.serializeURL(actualNormalized));
    }
  }
}
TOP

Related Classes of org.mitre.discovery.util.TestWebfingerURLNormalizer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.