Do not fail tests that require the GATK private key if the user does not have permission to read it
Several of the unit tests for the new key authorization feature require read access to the GATK master private key file. Since this file is only readable by members of the group gsagit, this makes it hard for people outside the group to run the test suite. Now, we skip tests that require the master private key if the private key exists (since not existing would be a true error) but is not readable by the user running the test suite Bamboo, of course, will always be able to run these tests.
This commit is contained in:
parent
0702ee1587
commit
811f871f78
|
|
@ -27,6 +27,7 @@ package org.broadinstitute.sting.utils.crypt;
|
|||
import org.broadinstitute.sting.BaseTest;
|
||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||
import org.testng.SkipException;
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.Assert;
|
||||
|
|
@ -64,11 +65,21 @@ public class CryptUtilsUnitTest extends BaseTest {
|
|||
|
||||
@Test
|
||||
public void testGATKMasterKeyPairMutualDecryption() {
|
||||
if ( gatkPrivateKeyExistsButReadPermissionDenied() ) {
|
||||
throw new SkipException(String.format("Skipping test %s because we do not have permission to read the GATK private key",
|
||||
"testGATKMasterKeyPairMutualDecryption"));
|
||||
}
|
||||
|
||||
Assert.assertTrue(CryptUtils.keysDecryptEachOther(CryptUtils.loadGATKMasterPrivateKey(), CryptUtils.loadGATKMasterPublicKey()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGATKMasterPrivateKeyWithDistributedPublicKeyMutualDecryption() {
|
||||
if ( gatkPrivateKeyExistsButReadPermissionDenied() ) {
|
||||
throw new SkipException(String.format("Skipping test %s because we do not have permission to read the GATK private key",
|
||||
"testGATKMasterPrivateKeyWithDistributedPublicKeyMutualDecryption"));
|
||||
}
|
||||
|
||||
Assert.assertTrue(CryptUtils.keysDecryptEachOther(CryptUtils.loadGATKMasterPrivateKey(), CryptUtils.loadGATKDistributedPublicKey()));
|
||||
}
|
||||
|
||||
|
|
@ -156,6 +167,11 @@ public class CryptUtilsUnitTest extends BaseTest {
|
|||
|
||||
@Test
|
||||
public void testLoadGATKMasterPrivateKey() {
|
||||
if ( gatkPrivateKeyExistsButReadPermissionDenied() ) {
|
||||
throw new SkipException(String.format("Skipping test %s because we do not have permission to read the GATK private key",
|
||||
"testLoadGATKMasterPrivateKey"));
|
||||
}
|
||||
|
||||
PrivateKey gatkMasterPrivateKey = CryptUtils.loadGATKMasterPrivateKey();
|
||||
}
|
||||
|
||||
|
|
@ -174,4 +190,9 @@ public class CryptUtilsUnitTest extends BaseTest {
|
|||
Assert.assertEquals(originalKey.getAlgorithm(), keyFromDisk.getAlgorithm());
|
||||
Assert.assertEquals(originalKey.getFormat(), keyFromDisk.getFormat());
|
||||
}
|
||||
|
||||
private boolean gatkPrivateKeyExistsButReadPermissionDenied() {
|
||||
File gatkPrivateKey = new File(CryptUtils.GATK_MASTER_PRIVATE_KEY_FILE);
|
||||
return gatkPrivateKey.exists() && ! gatkPrivateKey.canRead();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ package org.broadinstitute.sting.utils.crypt;
|
|||
import org.broadinstitute.sting.BaseTest;
|
||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||
import org.testng.SkipException;
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.Assert;
|
||||
|
||||
|
|
@ -39,6 +40,11 @@ public class GATKKeyUnitTest extends BaseTest {
|
|||
|
||||
@Test
|
||||
public void testCreateGATKKeyUsingMasterKeyPair() {
|
||||
if ( gatkPrivateKeyExistsButReadPermissionDenied() ) {
|
||||
throw new SkipException(String.format("Skipping test %s because we do not have permission to read the GATK private key",
|
||||
"testCreateGATKKeyUsingMasterKeyPair"));
|
||||
}
|
||||
|
||||
PrivateKey masterPrivateKey = CryptUtils.loadGATKMasterPrivateKey();
|
||||
PublicKey masterPublicKey = CryptUtils.loadGATKMasterPublicKey();
|
||||
|
||||
|
|
@ -49,6 +55,11 @@ public class GATKKeyUnitTest extends BaseTest {
|
|||
|
||||
@Test
|
||||
public void testCreateGATKKeyUsingMasterPrivateKeyAndDistributedPublicKey() {
|
||||
if ( gatkPrivateKeyExistsButReadPermissionDenied() ) {
|
||||
throw new SkipException(String.format("Skipping test %s because we do not have permission to read the GATK private key",
|
||||
"testCreateGATKKeyUsingMasterPrivateKeyAndDistributedPublicKey"));
|
||||
}
|
||||
|
||||
PrivateKey masterPrivateKey = CryptUtils.loadGATKMasterPrivateKey();
|
||||
PublicKey distributedPublicKey = CryptUtils.loadGATKDistributedPublicKey();
|
||||
|
||||
|
|
@ -82,8 +93,7 @@ public class GATKKeyUnitTest extends BaseTest {
|
|||
KeyPair keyPair = CryptUtils.generateKeyPair();
|
||||
|
||||
// Email addresses cannot contain the NUL byte, since it's used as a sectional delimiter in the key file:
|
||||
GATKKey key = new GATKKey(CryptUtils.loadGATKMasterPrivateKey(), CryptUtils.loadGATKDistributedPublicKey(),
|
||||
emailAddressWithNulByte);
|
||||
GATKKey key = new GATKKey(keyPair.getPrivate(), keyPair.getPublic(), emailAddressWithNulByte);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -110,4 +120,9 @@ public class GATKKeyUnitTest extends BaseTest {
|
|||
|
||||
GATKKey key = new GATKKey(CryptUtils.loadGATKDistributedPublicKey(), nonExistentFile);
|
||||
}
|
||||
|
||||
private boolean gatkPrivateKeyExistsButReadPermissionDenied() {
|
||||
File gatkPrivateKey = new File(CryptUtils.GATK_MASTER_PRIVATE_KEY_FILE);
|
||||
return gatkPrivateKey.exists() && ! gatkPrivateKey.canRead();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue