/******************************************************************************* * Copyright (c) 2010-2014 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.skalli.core.extension; import org.apache.commons.lang.StringUtils; import org.eclipse.skalli.commons.HtmlUtils; import org.eclipse.skalli.model.Project; import org.eclipse.skalli.model.Severity; import org.eclipse.skalli.testutil.TestUUIDs; import org.junit.Assert; import org.junit.Test; @SuppressWarnings("nls") public class ProjectDescriptionValidatorTest { private static final String ALL_TAGS = "<" + StringUtils.join(HtmlUtils.ALLOWED_TAGS, ">, <") + ">"; @Test public void testIssuesFATAL() throws Exception { assertDescriptionInvalid("<test>", Project.FORMAT_HTML, Severity.FATAL, Severity.FATAL); assertDescriptionInvalid("<test>", Project.DEFAULT_FORMAT, Severity.FATAL, Severity.FATAL); assertDescriptionInvalid("<test>", "unknown_format", Severity.FATAL, Severity.FATAL); assertDescriptionInvalid("<test>", null, Severity.FATAL, Severity.FATAL); assertDescriptionInvalid("abc <test> def", Project.DEFAULT_FORMAT, Severity.FATAL, Severity.FATAL); assertDescriptionValid(ALL_TAGS, Project.FORMAT_HTML, Severity.FATAL); assertDescriptionValid("abc" + ALL_TAGS + "def", Project.FORMAT_HTML, Severity.FATAL); assertDescriptionInvalid(ALL_TAGS, Project.DEFAULT_FORMAT, Severity.FATAL, Severity.FATAL); assertDescriptionInvalid(ALL_TAGS, "unknown_format", Severity.FATAL, Severity.FATAL); assertDescriptionInvalid(ALL_TAGS, null, Severity.FATAL, Severity.FATAL); } @Test public void testIssuesWARNING() throws Exception { assertDescriptionInvalid(null, Project.FORMAT_HTML, Severity.WARNING, Severity.WARNING); assertDescriptionInvalid("", Project.FORMAT_HTML, Severity.WARNING, Severity.WARNING); assertDescriptionInvalid(" ", Project.FORMAT_HTML, Severity.WARNING, Severity.WARNING); assertDescriptionInvalid(null, Project.FORMAT_HTML, Severity.INFO, Severity.WARNING); assertDescriptionInvalid("", Project.FORMAT_HTML, Severity.INFO, Severity.WARNING); assertDescriptionInvalid(" ", Project.FORMAT_HTML, Severity.INFO, Severity.WARNING); } @Test public void testIssuesINFO() throws Exception { assertDescriptionInvalid(StringUtils.repeat("a", 1), Project.FORMAT_HTML, Severity.INFO, Severity.INFO); assertDescriptionInvalid(StringUtils.repeat("a", 10), Project.FORMAT_HTML, Severity.INFO, Severity.INFO); assertDescriptionInvalid(StringUtils.repeat("a", 24), Project.FORMAT_HTML, Severity.INFO, Severity.INFO); assertDescriptionValid(StringUtils.repeat("a", 1), Project.FORMAT_HTML, Severity.WARNING); assertDescriptionValid(StringUtils.repeat("a", 10), Project.FORMAT_HTML, Severity.WARNING); assertDescriptionValid(StringUtils.repeat("a", 24), Project.FORMAT_HTML, Severity.WARNING); } @Test public void testNoIssues() throws Exception { assertDescriptionValid(StringUtils.repeat("a", ProjectDescriptionValidator.DESCRIPTION_RECOMMENDED_LENGHT), Project.FORMAT_HTML, Severity.INFO); assertDescriptionValid(StringUtils.repeat("a", ProjectDescriptionValidator.DESCRIPTION_RECOMMENDED_LENGHT + 1), Project.FORMAT_HTML, Severity.INFO); assertDescriptionValid(StringUtils.repeat("a", ProjectDescriptionValidator.DESCRIPTION_RECOMMENDED_LENGHT + 4711), Project.FORMAT_HTML, Severity.INFO); assertDescriptionValid(null, Project.FORMAT_HTML, Severity.FATAL); assertDescriptionValid(null, Project.FORMAT_HTML, Severity.ERROR); assertDescriptionValid("", Project.FORMAT_HTML, Severity.FATAL); assertDescriptionValid("", Project.FORMAT_HTML, Severity.ERROR); assertDescriptionValid(" ", Project.FORMAT_HTML, Severity.FATAL); assertDescriptionValid(" ", Project.FORMAT_HTML, Severity.ERROR); } private void assertDescriptionValid(String description, String format, Severity minSeverity) { ProjectDescriptionValidator validator = new ProjectDescriptionValidator(); Project project = getProject(description, format); Assert.assertTrue(validator.validate(project.getUuid(), project, minSeverity).isEmpty()); } private void assertDescriptionInvalid(String description, String format, Severity minSeverity, Severity expected) { ProjectDescriptionValidator validator = new ProjectDescriptionValidator(); Project project = getProject(description, format); Assert.assertEquals(expected, validator.validate(project.getUuid(), project, minSeverity).first().getSeverity()); } private Project getProject(String description, String format) { Project project = new Project(); project.setUuid(TestUUIDs.TEST_UUIDS[0]); project.setDescription(description); project.setDescriptionFormat(format); return project; } }