/*
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.xwiki.rendering.internal.configuration;
import java.util.Arrays;
import java.util.List;
import javax.inject.Provider;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.xwiki.component.manager.ComponentManager;
import org.xwiki.component.util.DefaultParameterizedType;
import org.xwiki.configuration.ConfigurationSource;
import org.xwiki.rendering.parser.Parser;
import org.xwiki.rendering.syntax.Syntax;
import org.xwiki.rendering.syntax.SyntaxFactory;
import org.xwiki.rendering.syntax.SyntaxType;
import org.xwiki.test.mockito.MockitoComponentMockingRule;
import com.xpn.xwiki.CoreConfiguration;
import static org.junit.Assert.*;
import static org.mockito.Mockito.when;
/**
* Unit tests for {@link org.xwiki.rendering.internal.configuration.DefaultExtendedRenderingConfiguration}.
*
* @version $Id: 0a1bf38afda4da916b8f2325175d4001b292713d $
* @since 8.2M1
*/
public class DefaultExtendedRenderingConfigurationTest
{
@Rule
public MockitoComponentMockingRule<DefaultExtendedRenderingConfiguration> mocker =
new MockitoComponentMockingRule<>(DefaultExtendedRenderingConfiguration.class);
@Before
public void configure() throws Exception
{
Provider<ComponentManager> contextComponentManagerProvider =
this.mocker.registerMockComponent(
new DefaultParameterizedType(null, Provider.class, ComponentManager.class), "context");
when(contextComponentManagerProvider.get()).thenReturn(this.mocker);
}
@Test
public void getImageWidthLimit() throws Exception
{
ConfigurationSource source = this.mocker.getInstance(ConfigurationSource.class);
when(source.getProperty("rendering.imageWidthLimit", -1)).thenReturn(100);
assertEquals(100, this.mocker.getComponentUnderTest().getImageWidthLimit());
}
@Test
public void getImageHeightLimit() throws Exception
{
ConfigurationSource source = this.mocker.getInstance(ConfigurationSource.class);
when(source.getProperty("rendering.imageHeightLimit", -1)).thenReturn(150);
assertEquals(150, this.mocker.getComponentUnderTest().getImageHeightLimit());
}
@Test
public void isImageDimensionsIncludedInImageURL() throws Exception
{
ConfigurationSource source = this.mocker.getInstance(ConfigurationSource.class);
when(source.getProperty("rendering.imageDimensionsIncludedInImageURL", true)).thenReturn(false);
assertFalse(this.mocker.getComponentUnderTest().isImageDimensionsIncludedInImageURL());
}
@Test
public void getConfiguredAndDisabledSyntaxesWhenNoConfigXObjectAndExistingXWikiCfgProperty() throws Exception
{
ConfigurationSource renderingSource = this.mocker.getInstance(ConfigurationSource.class, "rendering");
when(renderingSource.getProperty("disabledSyntaxes")).thenReturn(null);
ConfigurationSource xwikiCfgSource = this.mocker.getInstance(ConfigurationSource.class, "xwikicfg");
when(xwikiCfgSource.getProperty("xwiki.rendering.syntaxes", List.class)).thenReturn(
Arrays.asList("xwiki/2.0", "xwiki/2.1"));
// Register some Syntaxes for the test
SyntaxFactory syntaxFactory = this.mocker.getInstance(SyntaxFactory.class);
Syntax xwikiSyntax20 = new Syntax(new SyntaxType("xwiki", "XWiki"), "2.0");
when(syntaxFactory.createSyntaxFromIdString("xwiki/2.0")).thenReturn(xwikiSyntax20);
Syntax xwikiSyntax21 = new Syntax(new SyntaxType("xwiki", "XWiki"), "2.1");
when(syntaxFactory.createSyntaxFromIdString("xwiki/2.1")).thenReturn(xwikiSyntax21);
Parser xwikiSyntax20Parser = this.mocker.registerMockComponent(Parser.class, "xwiki/2.0");
when(xwikiSyntax20Parser.getSyntax()).thenReturn(xwikiSyntax20);
Parser xwikiSyntax21Parser = this.mocker.registerMockComponent(Parser.class, "xwiki/2.1");
when(xwikiSyntax21Parser.getSyntax()).thenReturn(xwikiSyntax21);
Parser syntax1Parser = this.mocker.registerMockComponent(Parser.class, "syntax1/1.0");
Syntax syntax1 = new Syntax(new SyntaxType("syntax1", "Syntax 1"), "1.0");
when(syntax1Parser.getSyntax()).thenReturn(syntax1);
Parser syntax2Parser = this.mocker.registerMockComponent(Parser.class, "syntax2/1.0");
Syntax syntax2 = new Syntax(new SyntaxType("syntax2", "Syntax 2"), "1.0");
when(syntax2Parser.getSyntax()).thenReturn(syntax2);
List<Syntax> disabledSyntaxes = this.mocker.getComponentUnderTest().getDisabledSyntaxes();
assertEquals(2, disabledSyntaxes.size());
assertTrue(disabledSyntaxes.contains(syntax1));
assertTrue(disabledSyntaxes.contains(syntax2));
List<Syntax> configuredSyntaxes = this.mocker.getComponentUnderTest().getConfiguredSyntaxes();
assertEquals(2, configuredSyntaxes.size());
assertTrue(configuredSyntaxes.contains(xwikiSyntax20));
assertTrue(configuredSyntaxes.contains(xwikiSyntax21));
}
@Test
public void getConfiguredAndDisabledSyntaxesWhenNoConfigXObjectAndNoXWikiCfgProperty() throws Exception
{
ConfigurationSource renderingSource = this.mocker.getInstance(ConfigurationSource.class, "rendering");
when(renderingSource.getProperty("disabledSyntaxes")).thenReturn(null);
ConfigurationSource xwikiCfgSource = this.mocker.getInstance(ConfigurationSource.class, "xwikicfg");
when(xwikiCfgSource.getProperty("xwiki.rendering.syntaxes", List.class)).thenReturn(null);
CoreConfiguration coreConfiguration = this.mocker.getInstance(CoreConfiguration.class);
Syntax defaultSyntax = new Syntax(new SyntaxType("xwiki", "XWiki"), "2.1");
when(coreConfiguration.getDefaultDocumentSyntax()).thenReturn(defaultSyntax);
// Register some Syntaxes for the test
Parser defaultSyntaxParser = this.mocker.registerMockComponent(Parser.class, "xwiki/2.1");
when(defaultSyntaxParser.getSyntax()).thenReturn(defaultSyntax);
Parser syntax1Parser = this.mocker.registerMockComponent(Parser.class, "syntax1/1.0");
Syntax syntax1 = new Syntax(new SyntaxType("syntax1", "Syntax 1"), "1.0");
when(syntax1Parser.getSyntax()).thenReturn(syntax1);
Parser syntax2Parser = this.mocker.registerMockComponent(Parser.class, "syntax2/1.0");
Syntax syntax2 = new Syntax(new SyntaxType("syntax2", "Syntax 2"), "1.0");
when(syntax2Parser.getSyntax()).thenReturn(syntax2);
List<Syntax> disabledSyntaxes = this.mocker.getComponentUnderTest().getDisabledSyntaxes();
assertEquals(2, disabledSyntaxes.size());
assertTrue(disabledSyntaxes.contains(syntax1));
assertTrue(disabledSyntaxes.contains(syntax2));
List<Syntax> configuredSyntaxes = this.mocker.getComponentUnderTest().getConfiguredSyntaxes();
assertEquals(1, configuredSyntaxes.size());
assertTrue(configuredSyntaxes.contains(defaultSyntax));
}
@Test
public void getConfiguredAndDisabledSyntaxesWhenConfigXObjectExists() throws Exception
{
ConfigurationSource renderingSource = this.mocker.getInstance(ConfigurationSource.class, "rendering");
when(renderingSource.getProperty("disabledSyntaxes")).thenReturn(
Arrays.asList("syntax1/1.0", "syntax2/1.0"));
// Register some Syntaxes for the test
Parser syntax1Parser = this.mocker.registerMockComponent(Parser.class, "syntax1/1.0");
Syntax syntax1 = new Syntax(new SyntaxType("syntax1", "Syntax 1"), "1.0");
when(syntax1Parser.getSyntax()).thenReturn(syntax1);
Parser syntax2Parser = this.mocker.registerMockComponent(Parser.class, "syntax2/1.0");
Syntax syntax2 = new Syntax(new SyntaxType("syntax2", "Syntax 2"), "1.0");
when(syntax2Parser.getSyntax()).thenReturn(syntax2);
SyntaxFactory syntaxFactory = this.mocker.getInstance(SyntaxFactory.class);
when(syntaxFactory.createSyntaxFromIdString("syntax1/1.0")).thenReturn(syntax1);
when(syntaxFactory.createSyntaxFromIdString("syntax2/1.0")).thenReturn(syntax2);
Parser xwikiSyntax20Parser = this.mocker.registerMockComponent(Parser.class, "xwiki/2.0");
Syntax xwikiSyntax20 = new Syntax(new SyntaxType("xwiki", "XWiki"), "2.0");
when(xwikiSyntax20Parser.getSyntax()).thenReturn(xwikiSyntax20);
List<Syntax> disabledSyntaxes = this.mocker.getComponentUnderTest().getDisabledSyntaxes();
assertEquals(2, disabledSyntaxes.size());
assertTrue(disabledSyntaxes.contains(syntax1));
assertTrue(disabledSyntaxes.contains(syntax2));
List<Syntax> configuredSyntaxes = this.mocker.getComponentUnderTest().getConfiguredSyntaxes();
assertEquals(1, configuredSyntaxes.size());
assertTrue(configuredSyntaxes.contains(xwikiSyntax20));
}
}