1 /*
   2  * Copyright (c) 2014, 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.DEB;
   9 import static com.oracle.appbundlers.utils.BundlerUtils.EXE;
  10 import static com.oracle.appbundlers.utils.BundlerUtils.MSI;
  11 import static com.oracle.appbundlers.utils.BundlerUtils.WIN_APP;
  12 import static com.oracle.appbundlers.utils.Config.CONFIG_INSTANCE;
  13 import static com.oracle.appbundlers.utils.Config.LICENSE_FILE_NAME;
  14 import static java.util.stream.Collectors.toSet;
  15 
  16 import java.io.IOException;
  17 import java.nio.file.Files;
  18 import java.nio.file.Path;
  19 import java.util.HashMap;
  20 import java.util.Map;
  21 
  22 import com.oracle.appbundlers.tests.functionality.functionalinterface.AdditionalParams;
  23 import com.oracle.appbundlers.tests.functionality.functionalinterface.BasicParams;
  24 import com.oracle.appbundlers.tests.functionality.functionalinterface.VerifiedOptions;
  25 import com.oracle.appbundlers.utils.AppWrapper;
  26 import com.oracle.appbundlers.utils.BundlerUtils;
  27 import com.oracle.appbundlers.utils.ExtensionType;
  28 import com.oracle.tools.packager.RelativeFileSet;
  29 import com.oracle.tools.packager.StandardBundlerParam;
  30 import com.sun.javafx.tools.packager.bundlers.BundleParams;
  31 
  32 /**
  33  * @author Dmitry Ginzburg <dmitry.x.ginzburg@oracle.com>
  34  * @author Dmitry Zinkevich <dmitry.zinkevich@oracle.com>
  35  */
  36 
  37 /**
  38  * Tests {@code licenseFile} option
  39  */
  40 public class LicenseFileTest extends TestBase {
  41     private String licenseFileContent = null;
  42     private Path licenseFileSrc;
  43     private Path licenseFile;
  44 
  45     public void initializeVars() throws IOException {
  46         licenseFileSrc = CONFIG_INSTANCE.getResourceFilePath(LICENSE_FILE_NAME);
  47         licenseFile = currentParameter.getApp().getJarDir()
  48                 .resolve(LICENSE_FILE_NAME);
  49     }
  50 
  51     @Override
  52     protected BundlerUtils[] getBundlerUtils() {
  53         return new BundlerUtils[] { DEB,
  54                  WIN_APP,
  55                 EXE, MSI };
  56     }
  57 
  58     protected AdditionalParams getAdditionalParams() {
  59         return () -> {
  60             Map<String, Object> additionalParams = new HashMap<>();
  61             additionalParams.put(LICENSE_FILE, LICENSE_FILE_NAME);
  62             return additionalParams;
  63         };
  64     }
  65 
  66     protected VerifiedOptions getVerifiedOptions() {
  67         return () -> {
  68             Map<String, Object> verifiedOptions = new HashMap<>();
  69             verifiedOptions.put(LICENSE_FILE, licenseFileContent);
  70             return verifiedOptions;
  71         };
  72     }
  73 
  74     public BasicParams getBasicParams() {
  75         return (AppWrapper app) -> {
  76             Map<String, Object> basicParams = new HashMap<String, Object>();
  77             basicParams
  78                     .put(BundleParams.PARAM_APP_RESOURCES,
  79                             new RelativeFileSet(app.getJarDir().toFile(),
  80                                     app.getJarFilesList().stream()
  81                                             .map(Path::toFile)
  82                                             .collect(toSet())));
  83             String mainClass = StandardBundlerParam.MAIN_CLASS
  84                     .fetchFrom(basicParams);
  85             basicParams.put(APPLICATION_CLASS, mainClass);
  86             RelativeFileSet appResources = (RelativeFileSet) basicParams
  87                     .get(APP_RESOURCES);
  88             appResources.getIncludedFiles().add(LICENSE_FILE_NAME);
  89             return basicParams;
  90         };
  91 
  92     }
  93 
  94     @Override
  95     protected void prepareTestEnvironment() throws Exception {
  96         super.prepareTestEnvironment();
  97         initializeVars();
  98         Files.deleteIfExists(licenseFile);
  99         Files.copy(licenseFileSrc, licenseFile);
 100         licenseFileContent = new String(Files.readAllBytes(licenseFile),
 101                 "UTF-8");
 102     }
 103 
 104     @Override
 105     public void overrideParameters(ExtensionType intermediate)
 106             throws IOException {
 107         this.currentParameter.setAdditionalParams(getAdditionalParams());
 108         this.currentParameter.setVerifiedOptions(getVerifiedOptions());
 109         this.currentParameter.setBasicParams(getBasicParams());
 110     }
 111 }