/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.build.gradle.integration.common.utils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import com.android.annotations.NonNull;
import com.android.builder.model.SigningConfig;
import com.android.ide.common.signing.KeystoreHelper;
import com.android.prefs.AndroidLocation;
import java.io.File;
import java.security.KeyStore;
import java.util.Locale;
public final class SigningConfigHelper {
public static final String DEFAULT_PASSWORD = "android";
public static final String DEFAULT_ALIAS = "AndroidDebugKey";
@NonNull
private final SigningConfig signingConfig;
@NonNull private final String name;
private File storeFile = null;
private String storePassword = null;
private String keyAlias = null;
private String keyPassword = null;
private String storeType = KeyStore.getDefaultType();
private boolean isSigningReady = false;
public SigningConfigHelper(
@NonNull SigningConfig signingConfig,
@NonNull String name,
boolean isDebug)
throws AndroidLocation.AndroidLocationException {
assertNotNull(String.format("SigningConfig '%s' null-check", name), signingConfig);
this.signingConfig = signingConfig;
this.name = name;
if (isDebug) {
storeFile = new File(KeystoreHelper.defaultDebugKeystoreLocation());
storePassword = DEFAULT_PASSWORD;
keyAlias = DEFAULT_ALIAS;
keyPassword = DEFAULT_PASSWORD;
isSigningReady = true;
}
}
@NonNull
public SigningConfigHelper setStoreFile(File storeFile) {
this.storeFile = storeFile;
return this;
}
@NonNull
public SigningConfigHelper setStorePassword(String storePassword) {
this.storePassword = storePassword;
return this;
}
@NonNull
public SigningConfigHelper setKeyAlias(String keyAlias) {
this.keyAlias = keyAlias;
return this;
}
@NonNull
public SigningConfigHelper setKeyPassword(String keyPassword) {
this.keyPassword = keyPassword;
return this;
}
@NonNull
public SigningConfigHelper setStoreType(String storeType) {
this.storeType = storeType;
return this;
}
@NonNull
public SigningConfigHelper setSigningReady(boolean isSigningReady) {
this.isSigningReady = isSigningReady;
return this;
}
public void test() {
assertEquals("SigningConfig name", name, signingConfig.getName());
assertEquals(String.format("SigningConfig '%s' storeFile", name),
storeFile, signingConfig.getStoreFile());
assertEquals(String.format("SigningConfig '%s' storePassword", name),
storePassword, signingConfig.getStorePassword());
String scAlias = signingConfig.getKeyAlias();
assertEquals(String.format("SigningConfig '%s' keyAlias", name),
keyAlias != null ? keyAlias.toLowerCase(Locale.getDefault()) : keyAlias,
scAlias != null ? scAlias.toLowerCase(Locale.getDefault()) : scAlias);
assertEquals(String.format("SigningConfig '%s' keyPassword", name),
keyPassword, signingConfig.getKeyPassword());
assertEquals(String.format("SigningConfig '%s' storeType", name),
storeType, signingConfig.getStoreType());
assertEquals(String.format("SigningConfig '%s' isSigningReady", name),
isSigningReady, signingConfig.isSigningReady());
}
}