1 /*
   2  * Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  */
   5 
   6 package com.oracle.appbundlers.tests.functionality;
   7 
   8 import static com.oracle.appbundlers.utils.BundlerUtils.EXE;
   9 import static com.oracle.appbundlers.utils.BundlerUtils.MSI;
  10 import static com.oracle.appbundlers.utils.Config.CONFIG_INSTANCE;
  11 import static com.oracle.appbundlers.utils.Config.LICENSE_FILE_NAME;
  12 import static java.util.stream.Collectors.toSet;
  13 
  14 import java.io.IOException;
  15 import java.nio.file.Files;
  16 import java.nio.file.Path;
  17 import java.util.HashMap;
  18 import java.util.Map;
  19 
  20 import com.oracle.appbundlers.tests.functionality.functionalinterface.AdditionalParams;
  21 import com.oracle.appbundlers.tests.functionality.functionalinterface.BasicParams;
  22 import com.oracle.appbundlers.utils.AppWrapper;
  23 import com.oracle.appbundlers.utils.BundlerUtils;
  24 import com.oracle.appbundlers.utils.ExtensionType;
  25 import com.oracle.tools.packager.RelativeFileSet;
  26 import com.oracle.tools.packager.StandardBundlerParam;
  27 
  28 /**
  29  * @author Dmitriy Ermashov <dmitriy.ermashov@oracle.com>
  30  */
  31 
  32 /**
  33  * Tests {@code installdirChooser} option.
  34  */
  35 public class InstallDirTest extends TestBase {
  36     private String licenseFileContent = null;
  37     private Path licenseFileSrc;
  38     private Path licenseFile;
  39 
  40     public void initializeVars() throws IOException {
  41         licenseFileSrc = CONFIG_INSTANCE.getResourceFilePath(LICENSE_FILE_NAME);
  42         licenseFile = currentParameter.getApp().getJarDir()
  43                 .resolve(LICENSE_FILE_NAME);
  44     }
  45 
  46     @Override
  47     protected BundlerUtils[] getBundlerUtils() {
  48         return new BundlerUtils[] { EXE, MSI };
  49     }
  50 
  51     public BasicParams getBasicParams() {
  52         return (AppWrapper app) -> {
  53 
  54             Map<String, Object> basicParams = new HashMap<String, Object>();
  55             basicParams
  56                     .put(APP_RESOURCES,
  57                             new RelativeFileSet(app.getJarDir().toFile(),
  58                                     app.getJarFilesList().stream()
  59                                             .map(Path::toFile)
  60                                             .collect(toSet())));
  61             String mainClass = StandardBundlerParam.MAIN_CLASS
  62                     .fetchFrom(basicParams);
  63             basicParams.put(APPLICATION_CLASS, mainClass);
  64 
  65             RelativeFileSet appResources = (RelativeFileSet) basicParams
  66                     .get(APP_RESOURCES);
  67             appResources.getIncludedFiles().add(LICENSE_FILE_NAME);
  68             return basicParams;
  69         };
  70     }
  71 
  72     public AdditionalParams getAdditionalParams() {
  73         return () -> {
  74             Map<String, Object> additionalParams = new HashMap<>();
  75             additionalParams.put(INSTALLDIR_CHOOSER, "true");
  76             additionalParams.put(LICENSE_FILE, LICENSE_FILE_NAME);
  77             return additionalParams;
  78         };
  79     }
  80 
  81     @Override
  82     protected void prepareTestEnvironment() throws Exception {
  83         super.prepareTestEnvironment();
  84         initializeVars();
  85         Files.deleteIfExists(licenseFile);
  86         Files.copy(licenseFileSrc, licenseFile);
  87         licenseFileContent = new String(Files.readAllBytes(licenseFile),
  88                 "UTF-8");
  89     }
  90 
  91     @Override
  92     public void overrideParameters(ExtensionType intermediate)
  93             throws IOException {
  94         this.currentParameter.setAdditionalParams(getAdditionalParams());
  95         this.currentParameter.setBasicParams(getBasicParams());
  96     }
  97 }