/** * Copyright (C) 2015 Bonitasoft S.A. * Bonitasoft, 32 rue Gustave Eiffel - 38000 Grenoble * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2.0 of the License, or * (at your option) any later version. * This program 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 General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.bonitasoft.console.common.server.page; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.io.File; import java.io.IOException; import java.util.Map; import org.bonitasoft.console.common.server.preferences.constants.WebBonitaConstantsUtils; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class CustomPageDependenciesResolverTest { @Mock private WebBonitaConstantsUtils webBonitaConstantsUtils; @Rule public ExpectedException expectedException = ExpectedException.none(); @Rule public final TemporaryFolder tmpFolder = new TemporaryFolder(); @Test public void should_throw_an_IllegalStateException_when_accessing_tmp_folder_before_resolving_libraries() throws Exception { final CustomPageDependenciesResolver resolver = newCustomPageDependenciesResolver(null); expectedException.expect(IllegalStateException.class); resolver.getTempFolder(); } @Test public void should_resolve_dependencies_content() throws Exception { final CustomPageDependenciesResolver resolver = newCustomPageDependenciesResolver(testPageFolder()); final Map<String, byte[]> dependenciesContent = resolver.resolveCustomPageDependencies(); assertThat(dependenciesContent).containsKeys("resource.properties", "bdm-client.jar", "bdm-dao.jar", "javassist-3.18.1-GA.jar", "util.jar"); assertThat(CustomPageDependenciesResolver.PAGES_LIB_TMPDIR).containsKey("myCustomPage"); final File cachedTmpFoler = CustomPageDependenciesResolver.PAGES_LIB_TMPDIR.get("myCustomPage"); assertThat(cachedTmpFoler.exists()).isTrue(); assertThat(resolver.getTempFolder()).isEqualTo(cachedTmpFoler); } @Test public void should_delete_temporary_lib_foler() throws Exception { final CustomPageDependenciesResolver resolver = newCustomPageDependenciesResolver(testPageFolder()); resolver.resolveCustomPageDependencies(); assertThat(CustomPageDependenciesResolver.PAGES_LIB_TMPDIR).containsKey("myCustomPage"); assertThat(CustomPageDependenciesResolver.PAGES_LIB_TMPDIR.get("myCustomPage").exists()).isTrue(); final File tempFolder = CustomPageDependenciesResolver.removePageLibTempFolder("myCustomPage"); assertThat(CustomPageDependenciesResolver.PAGES_LIB_TMPDIR).doesNotContainKey("myCustomPage"); assertThat(tempFolder.exists()).isFalse(); } @Test public void should_resolve_dependencies_return_an_empty_map_if_no_lib_folder_is_found_in_custom_page() throws Exception { final CustomPageDependenciesResolver resolver = newCustomPageDependenciesResolver(null); final Map<String, byte[]> dependenciesContent = resolver.resolveCustomPageDependencies(); assertThat(dependenciesContent).isEmpty(); } private File testPageFolder() { return new File(CustomPageDependenciesResolverTest.class.getResource("/ARootPageFolder").getFile()); } private CustomPageDependenciesResolver newCustomPageDependenciesResolver(File folder) throws IOException { when(webBonitaConstantsUtils.getTempFolder()).thenReturn(tmpFolder.newFolder()); return new CustomPageDependenciesResolver("myCustomPage", folder, webBonitaConstantsUtils); } }