monasca-log-api/java/src/test/java/monasca/log/api/app/validation/LogApplicationTypeValidatio...

92 lines
3.0 KiB
Java

/*
* Copyright 2015 Fujitsu Limited
*
* 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 monasca.log.api.app.validation;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue;
import java.io.IOException;
import javax.ws.rs.WebApplicationException;
import org.testng.annotations.Test;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import monasca.log.api.app.validation.LogApplicationTypeValidator;
@Test
public class LogApplicationTypeValidationTest {
private final String toNormalize = " Json Application ";
private final String normalized = "Json Application";
public void testNormalize() {
String result = LogApplicationTypeValidator.normalize(toNormalize);
assertEquals(normalized, result);
result = LogApplicationTypeValidator.normalize(null);
assertNull(result);
}
public void testValidateWrongFormat() throws JsonParseException, IOException {
int exceptionCount = 0;
try {
LogApplicationTypeValidator.validate(normalized);
} catch (WebApplicationException e) {
exceptionCount++;
String msg = getMessage((String) e.getResponse().getEntity());
assertEquals(msg, "Application type Json Application may only contain: a-z A-Z 0-9 _ - .");
}
assertEquals("Method throws Exception with correct message", 1, exceptionCount);
}
public void testValidateWrongLength() throws JsonParseException, IOException {
StringBuilder message = new StringBuilder();
int exceptionCount = 0;
for (int i = 0; i < 256; i++) {
message.append('a');
}
try {
LogApplicationTypeValidator.validate(message.toString());
} catch (WebApplicationException e) {
exceptionCount++;
String msg = getMessage((String) e.getResponse().getEntity());
assertTrue(msg.contains("must be 255 characters or less"));
}
assertEquals("Method throws Exception with correct message", 1, exceptionCount);
}
private String getMessage(String json) throws JsonParseException, IOException {
JsonFactory factory = new JsonFactory();
JsonParser jp = factory.createParser(json);
jp.nextToken();
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldname = jp.getCurrentName();
jp.nextToken();
if ("message".equals(fieldname)) {
return jp.getText();
}
}
jp.close();
return null;
}
}