/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * 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.uberfire.util; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import junit.framework.TestCase; import org.uberfire.backend.server.util.TextUtil; public class TextUtilTest extends TestCase { private static final String BASE = "dUMmY"; String userNameIllegalChars = "ªº\\!|\"@·#$%&¬/()=?'¿¡€^`[*+]¨´{}<>,;:_~ .-"; String repoNameIllegalChars = "ªº\\!|\"@·#$%&¬/()=?'¿¡€^`[*+]¨´{}<>,;:_~ "; // key: illegal char, value: expected char after normalization Map<Character, Character> additionalIllegal = new HashMap<Character, Character>(); private StringBuilder sb = new StringBuilder(BASE); @Override protected void setUp() throws Exception { additionalIllegal.put('ñ', 'n'); additionalIllegal.put('Ñ', 'N'); additionalIllegal.put('ç', 'c'); additionalIllegal.put('Ç', 'C'); additionalIllegal.put('á', 'a'); additionalIllegal.put('à', 'a'); additionalIllegal.put('ä', 'a'); additionalIllegal.put('Á', 'A'); additionalIllegal.put('À', 'A'); additionalIllegal.put('Ä', 'A'); } public void testNormalizeUserName() { for (int i = 0; i < userNameIllegalChars.length(); i++) { int index = 0; assertEquals(BASE, TextUtil.normalizeUserName(sb.insert(index, userNameIllegalChars.charAt(i)).toString())); sb.deleteCharAt(index); index = BASE.length() - 3; assertEquals(BASE, TextUtil.normalizeUserName(sb.insert(index, userNameIllegalChars.charAt(i)).toString())); sb.deleteCharAt(index); index = BASE.length() - 1; assertEquals(BASE, TextUtil.normalizeUserName(sb.insert(index, userNameIllegalChars.charAt(i)).toString())); sb.deleteCharAt(index); } StringBuilder expected = new StringBuilder(BASE); for (Iterator<Map.Entry<Character, Character>> it = additionalIllegal.entrySet().iterator(); it.hasNext(); ) { Map.Entry<Character, Character> entry = it.next(); int index = 0; assertEquals(expected.insert(index, entry.getValue()).toString(), TextUtil.normalizeUserName(sb.insert(index, entry.getKey()).toString())); sb.deleteCharAt(index); expected.deleteCharAt(index); index = BASE.length() - 3; assertEquals(expected.insert(index, entry.getValue()).toString(), TextUtil.normalizeUserName(sb.insert(index, entry.getKey()).toString())); sb.deleteCharAt(index); expected.deleteCharAt(index); index = BASE.length() - 1; assertEquals(expected.insert(index, entry.getValue()).toString(), TextUtil.normalizeUserName(sb.insert(index, entry.getKey()).toString())); sb.deleteCharAt(index); expected.deleteCharAt(index); } } public void testNormalizeRepositoryName() { for (int i = 0; i < repoNameIllegalChars.length(); i++) { int index = 0; assertEquals(BASE, TextUtil.normalizeRepositoryName(sb.insert(index, repoNameIllegalChars.charAt(i)).toString())); sb.deleteCharAt(index); index = BASE.length() - 3; assertEquals(BASE, TextUtil.normalizeRepositoryName(sb.insert(index, repoNameIllegalChars.charAt(i)).toString())); sb.deleteCharAt(index); index = BASE.length() - 1; assertEquals(BASE, TextUtil.normalizeRepositoryName(sb.insert(index, repoNameIllegalChars.charAt(i)).toString())); sb.deleteCharAt(index); } StringBuilder expected = new StringBuilder(BASE); for (Iterator<Map.Entry<Character, Character>> it = additionalIllegal.entrySet().iterator(); it.hasNext(); ) { Map.Entry<Character, Character> entry = it.next(); int index = 0; assertEquals(expected.insert(index, entry.getValue()).toString(), TextUtil.normalizeRepositoryName(sb.insert(index, entry.getKey()).toString())); sb.deleteCharAt(index); expected.deleteCharAt(index); index = BASE.length() - 3; assertEquals(expected.insert(index, entry.getValue()).toString(), TextUtil.normalizeRepositoryName(sb.insert(index, entry.getKey()).toString())); sb.deleteCharAt(index); expected.deleteCharAt(index); index = BASE.length() - 1; assertEquals(expected.insert(index, entry.getValue()).toString(), TextUtil.normalizeRepositoryName(sb.insert(index, entry.getKey()).toString())); sb.deleteCharAt(index); expected.deleteCharAt(index); } String strInput = ""; String strExpected = ""; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "_{`"; strExpected = ""; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "."; strExpected = ""; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "-"; strExpected = ""; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "..."; strExpected = ""; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "---"; strExpected = ""; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "..d."; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = ".d.."; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "--d-"; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "-d--"; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "..d.."; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = ".-d.."; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = ".d-.."; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "--d--."; strExpected = "d"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d---f"; strExpected = "df"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d...f"; strExpected = "df"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d----f"; strExpected = "df"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d-f"; strExpected = "d-f"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d.f"; strExpected = "d.f"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d.-f"; strExpected = "df"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d.-.f"; strExpected = "df"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d-.-f"; strExpected = "df"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d-.f"; strExpected = "df"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "d..-.-B'.--..+-_--ç-..f"; strExpected = "dBcf"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "m\"y-t@ës#t'.re{p'o-n:a;m,e"; strExpected = "my-test.repo-name"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = "-m\"y-t@ës#t'.re{p'o-n:a;m,e-"; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); strInput = ".m\"y-t@ës#t'.re{p'o-n:a;m,e."; assertEquals(strExpected, TextUtil.normalizeRepositoryName(strInput)); } }