Package de.idos.updates.configuration

Source Code of de.idos.updates.configuration.ConfiguredUpdateSystem_FixedVersionTest

package de.idos.updates.configuration;

import de.idos.updates.NumericVersion;
import de.idos.updates.UpdateAvailability;
import de.idos.updates.UpdateSystem;
import de.idos.updates.Updater;
import de.idos.updates.Version;
import de.idos.updates.repository.FilesystemRepository;
import de.idos.updates.store.OngoingInstallation;
import org.apache.commons.io.FileUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import java.io.File;

import static de.idos.updates.NumericVersionMatchers.sameVersionAs;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

public class ConfiguredUpdateSystem_FixedVersionTest {

  @Rule
  public TemporaryFolder folder = new TemporaryFolder();
  private File configuration = new File(".", "update.properties");
  private File fixedVersionFolder;

  @Before
  public void configureFileRepository() throws Exception {
    File repository = folder.newFolder("repository");
    File available_versions = new File(repository, FilesystemRepository.AVAILABLE_VERSIONS);
    new File(available_versions, "4.2.1").mkdirs();
    fixedVersionFolder = folder.newFile("fixedVersion");
    Configurator configurator = new Configurator();
    configurator.setApplicationNameTo("updateunittest");
    configurator.toggleFixedVersion();
    configurator.changeFixedVersionLocationTo(fixedVersionFolder.getAbsolutePath());
    configurator.toggleFileRepositoryForLatestVersion();
    configurator.setRepositoryLocationForLatestVersionTo(repository.getAbsolutePath());
    configurator.saveConfiguration();
  }

  @Test
  public void statesConfiguredFolderAsVersionFolder() throws Exception {
    UpdateSystem updateSystem = ConfiguredUpdateSystem.loadProperties().create();
    File folder = updateSystem.getFolderForVersionToRun();
    assertThat(folder, is(fixedVersionFolder));
  }

  @Test(timeout = 1500)
  public void canInstallUpdatesEvenWhenTheActualVersionIsFixed() throws Exception {
    UpdateSystem updateSystem = ConfiguredUpdateSystem.loadProperties().create();
    Updater updater = getUpdaterThatHasRun(updateSystem);
    OngoingInstallation installation = updater.updateToLatestVersion();
    while(installation.isRunning()){
      //wait
    }
    Thread.sleep(500);
    assertThat(getUpdaterThatHasRun(updateSystem).hasUpdate(), is(UpdateAvailability.NotAvailable));
  }

  @Test
  public void canOverrideUnknownFixedVersionNumber() throws Exception {
    NumericVersion overriddenVersion = new NumericVersion(3, 3, 1);
    UpdateSystem updateSystem = ConfiguredUpdateSystem.loadProperties().andIfTheInstalledVersionIsUnknownUse(overriddenVersion).create();
    Version installedVersion = getUpdaterThatHasRun(updateSystem).getInstalledVersion();
    assertThat(installedVersion, is(sameVersionAs(overriddenVersion)));
  }

  @Test
  public void returnsFixedVersionNumberEvenIfALaterVersionIsInstalled() throws Exception {
    File versionsFolder = new File(getVersionParent(), "versions");
    new File(versionsFolder, "4.0.0").mkdirs();
    NumericVersion overriddenVersion = new NumericVersion(3, 3, 1);
    UpdateSystem updateSystem = ConfiguredUpdateSystem.loadProperties().andIfTheInstalledVersionIsUnknownUse(overriddenVersion).create();
    Version installedVersion = getUpdaterThatHasRun(updateSystem).getInstalledVersion();
    assertThat(installedVersion, is(sameVersionAs(overriddenVersion)));
  }

  @After
  public void deleteConfiguration() throws Exception {
    FileUtils.deleteQuietly(configuration);
  }

  @After
  public void deleteInstalledUpdates() throws Exception {
    File versionStorageParent = getVersionParent();
    FileUtils.deleteQuietly(versionStorageParent);
  }

  private File getVersionParent() {
    String userHome = System.getProperty("user.home");
    return new File(userHome, ".updateunittest");
  }

  private Updater getUpdaterThatHasRun(UpdateSystem updateSystem) {
    Updater updater = updateSystem.checkForUpdates();
    updater.runCheck();
    return updater;
  }
}
TOP

Related Classes of de.idos.updates.configuration.ConfiguredUpdateSystem_FixedVersionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.