display error on startup, if previous version is older than 1.60

This commit is contained in:
Sebastian Sdorra
2019-06-13 09:58:30 +02:00
parent 5c7ae749c2
commit 3c5b7ab535
8 changed files with 204 additions and 103 deletions

View File

@@ -50,6 +50,18 @@ class SingleViewTest {
guiceFilter.destroy();
}
@Test
void shouldCreateViewControllerForView() {
ServletContextListener listener = SingleView.view("/my-template", 409);
when(request.getContextPath()).thenReturn("/scm");
ViewController instance = findViewController(listener);
assertThat(instance.getTemplate()).isEqualTo("/my-template");
View view = instance.createView(request);
assertThat(view.getStatusCode()).isEqualTo(409);
}
@Test
void shouldCreateViewControllerForError() {
ServletContextListener listener = SingleView.error(new IOException("awesome io"));

View File

@@ -0,0 +1,86 @@
package sonia.scm.boot;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junitpioneer.jupiter.TempDirectory;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import sonia.scm.SCMContextProvider;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doReturn;
@ExtendWith({MockitoExtension.class, TempDirectory.class})
class VersionsTest {
@Mock
private SCMContextProvider contextProvider;
@InjectMocks
private Versions versions;
@Test
void shouldReturnTrueForVersionsPreviousTo160(@TempDirectory.TempDir Path directory) throws IOException {
setVersion(directory, "1.59");
assertThat(versions.isPreviousVersionToOld()).isTrue();
setVersion(directory, "1.12");
assertThat(versions.isPreviousVersionToOld()).isTrue();
}
@Test
void shouldReturnFalseForVersion160(@TempDirectory.TempDir Path directory) throws IOException {
setVersion(directory, "1.60");
assertThat(versions.isPreviousVersionToOld()).isFalse();
}
@Test
void shouldNotFailIfVersionContainsLineBreak(@TempDirectory.TempDir Path directory) throws IOException {
setVersion(directory, "1.59\n");
assertThat(versions.isPreviousVersionToOld()).isTrue();
}
@Test
void shouldReturnFalseForVersionsNewerAs160(@TempDirectory.TempDir Path directory) throws IOException {
setVersion(directory, "1.61");
assertThat(versions.isPreviousVersionToOld()).isFalse();
setVersion(directory, "1.82");
assertThat(versions.isPreviousVersionToOld()).isFalse();
}
@Test
void shouldReturnFalseForNonExistingVersionFile(@TempDirectory.TempDir Path directory) {
setVersionFile(directory.resolve("version.txt"));
assertThat(versions.isPreviousVersionToOld()).isFalse();
}
@Test
void shouldWriteNewVersion(@TempDirectory.TempDir Path directory) {
Path config = directory.resolve("config");
doReturn(config).when(contextProvider).resolve(Paths.get("config"));
doReturn("2.0.0").when(contextProvider).getVersion();
versions.writeNewVersion();
Path versionFile = config.resolve("version.txt");
assertThat(versionFile).exists().hasContent("2.0.0");
}
private void setVersion(Path directory, String version) throws IOException {
Path file = directory.resolve("version.txt");
Files.write(file, version.getBytes(StandardCharsets.UTF_8));
setVersionFile(file);
}
private void setVersionFile(Path file) {
doReturn(file).when(contextProvider).resolve(Paths.get("config", "version.txt"));
}
}