| // | |
| // 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 com.cloud.utils; | |
| import static org.junit.Assert.assertEquals; | |
| import static org.junit.Assert.assertNotEquals; | |
| import static org.junit.Assert.assertTrue; | |
| import java.nio.charset.Charset; | |
| import java.util.ArrayList; | |
| import java.util.Arrays; | |
| import org.junit.Test; | |
| public class StringUtilsTest { | |
| @Test | |
| public void testGetPreferredCharset() { | |
| final boolean ifUtf8Supported = StringUtils.isUtf8Supported(); | |
| if (ifUtf8Supported) { | |
| assertEquals(StringUtils.getPreferredCharset(), Charset.forName("UTF-8")); | |
| } else { | |
| assertNotEquals(StringUtils.getPreferredCharset(), Charset.forName("UTF-8")); | |
| } | |
| } | |
| @Test | |
| public void testGetDefaultCharset() { | |
| // Is this test irrelevant? Is wrapping the Charset.defaultCharset() too much? | |
| // This test was added in order to cover the new StringUtils.getDefaultCharset(). | |
| // One cannot be sure that StringUtils.getPreferredCharset() will always be | |
| // equals to Charset.defaultCharset() | |
| assertEquals(StringUtils.getDefaultCharset(), Charset.defaultCharset()); | |
| } | |
| @Test | |
| public void testCleanPasswordFromJsonObjectAtEnd() { | |
| final String input = "{\"foo\":\"bar\",\"password\":\"test\"}"; | |
| //TODO: It would be nice to clean up the regex in question to not | |
| //have to return the trailing comma in the expected string below | |
| final String expected = "{\"foo\":\"bar\",}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromJsonObjectInMiddle() { | |
| final String input = "{\"foo\":\"bar\",\"password\":\"test\",\"test\":\"blah\"}"; | |
| final String expected = "{\"foo\":\"bar\",\"test\":\"blah\"}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromJsonObjectAlone() { | |
| final String input = "{\"password\":\"test\"}"; | |
| final String expected = "{}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromJsonObjectAtStart() { | |
| final String input = "{\"password\":\"test\",\"test\":\"blah\"}"; | |
| final String expected = "{\"test\":\"blah\"}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromJsonObjectWithMultiplePasswords() { | |
| final String input = "{\"description\":\"foo\"}],\"password\":\"bar\",\"nic\":[{\"password\":\"bar2\",\"id\":\"1\"}]}"; | |
| final String expected = "{\"description\":\"foo\"}],\"nic\":[{\"id\":\"1\"}]}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromRequestString() { | |
| final String input = "username=foo&password=bar&url=foobar"; | |
| final String expected = "username=foo&url=foobar"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromEncodedRequestString() { | |
| final String input = "name=SS1&provider=SMB&zoneid=5a60af2b-3025-4f2a-9ecc-8e33bf2b94e3&url=cifs%3A%2F%2F10.102.192.150%2FSMB-Share%2Fsowmya%2Fsecondary%3Fuser%3Dsowmya%26password%3DXXXXX%40123%26domain%3DBLR"; | |
| final String expected = "name=SS1&provider=SMB&zoneid=5a60af2b-3025-4f2a-9ecc-8e33bf2b94e3&url=cifs%3A%2F%2F10.102.192.150%2FSMB-Share%2Fsowmya%2Fsecondary%3Fuser%3Dsowmya%26domain%3DBLR"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromRequestStringWithMultiplePasswords() { | |
| final String input = "username=foo&password=bar&url=foobar&password=bar2&test=4"; | |
| final String expected = "username=foo&url=foobar&test=4"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromRequestStringMatchedAtEndSingleQuote() { | |
| final String input = "'username=foo&password=bar'"; | |
| final String expected = "'username=foo'"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromRequestStringMatchedAtEndDoubleQuote() { | |
| final String input = "\"username=foo&password=bar\""; | |
| final String expected = "\"username=foo\""; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanPasswordFromRequestStringMatchedAtMiddleDoubleQuote() { | |
| final String input = "\"username=foo&password=bar&goo=sdf\""; | |
| final String expected = "\"username=foo&goo=sdf\""; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanSecretkeyFromJsonObjectAtEnd() { | |
| final String input = "{\"foo\":\"bar\",\"secretkey\":\"test\"}"; | |
| // TODO: It would be nice to clean up the regex in question to not | |
| // have to return the trailing comma in the expected string below | |
| final String expected = "{\"foo\":\"bar\",}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanSecretkeyFromJsonObjectInMiddle() { | |
| final String input = "{\"foo\":\"bar\",\"secretkey\":\"test\",\"test\":\"blah\"}"; | |
| final String expected = "{\"foo\":\"bar\",\"test\":\"blah\"}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanSecretkeyFromJsonObjectAlone() { | |
| final String input = "{\"secretkey\":\"test\"}"; | |
| final String expected = "{}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanSecretkeyFromJsonObjectAtStart() { | |
| final String input = "{\"secretkey\":\"test\",\"test\":\"blah\"}"; | |
| final String expected = "{\"test\":\"blah\"}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanSecretkeyFromJsonObjectWithMultiplePasswords() { | |
| final String input = "{\"description\":\"foo\"}],\"secretkey\":\"bar\",\"nic\":[{\"secretkey\":\"bar2\",\"id\":\"1\"}]}"; | |
| final String expected = "{\"description\":\"foo\"}],\"nic\":[{\"id\":\"1\"}]}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanAccesskeyFromJsonObjectAtEnd() { | |
| final String input = "{\"foo\":\"bar\",\"accesskey\":\"test\"}"; | |
| // TODO: It would be nice to clean up the regex in question to not | |
| // have to return the trailing comma in the expected string below | |
| final String expected = "{\"foo\":\"bar\",}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanAccesskeyFromJsonObjectInMiddle() { | |
| final String input = "{\"foo\":\"bar\",\"accesskey\":\"test\",\"test\":\"blah\"}"; | |
| final String expected = "{\"foo\":\"bar\",\"test\":\"blah\"}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanAccesskeyFromJsonObjectAlone() { | |
| final String input = "{\"accesskey\":\"test\"}"; | |
| final String expected = "{}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanAccesskeyFromJsonObjectAtStart() { | |
| final String input = "{\"accesskey\":\"test\",\"test\":\"blah\"}"; | |
| final String expected = "{\"test\":\"blah\"}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanAccesskeyFromJsonObjectWithMultiplePasswords() { | |
| final String input = "{\"description\":\"foo\"}],\"accesskey\":\"bar\",\"nic\":[{\"accesskey\":\"bar2\",\"id\":\"1\"}]}"; | |
| final String expected = "{\"description\":\"foo\"}],\"nic\":[{\"id\":\"1\"}]}"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanAccesskeyFromRequestString() { | |
| final String input = "username=foo&accesskey=bar&url=foobar"; | |
| final String expected = "username=foo&url=foobar"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void testCleanSecretkeyFromRequestString() { | |
| final String input = "username=foo&secretkey=bar&url=foobar"; | |
| final String expected = "username=foo&url=foobar"; | |
| final String result = StringUtils.cleanString(input); | |
| assertEquals(result, expected); | |
| } | |
| @Test | |
| public void listToCsvTags() { | |
| assertEquals("a,b,c", StringUtils.listToCsvTags(Arrays.asList("a","b", "c"))); | |
| assertEquals("", StringUtils.listToCsvTags(new ArrayList<String>())); | |
| } | |
| @Test | |
| public void testToCSVList() { | |
| String input = "one,two,three,four,five,six,seven,eight,nine,ten"; | |
| String output = StringUtils.toCSVList(Arrays.asList(input.split(","))); | |
| assertTrue(input.equals(output)); | |
| } | |
| @Test | |
| public void testGetKeyValuePairWithSeparator() { | |
| String key = "ssh"; | |
| String value = "ABCD=="; | |
| String kp = String.format("%s=%s", key, value); | |
| Pair<String, String> output = StringUtils.getKeyValuePairWithSeparator(kp, "="); | |
| assertEquals(key, output.first()); | |
| assertEquals(value, output.second()); | |
| } | |
| } |