Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5676f5fd authored by Nathan Harold's avatar Nathan Harold
Browse files

Update IpSecService UnitTests

The IpSecService Unit tests relied on the
directionality of the IpSecConfig and previously
did not specify a source address. Unit tests
updated without functional change other than to
address these two requirements.

Bug: 71717213
Test: runtest frameworks-net
Change-Id: Iedbed735bc50fd4fdfe985f9e173956062a7b0d1
parent a2523312
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -56,10 +56,11 @@ public class IpSecServiceParameterizedTest {
    private static final int TEST_SPI = 0xD1201D;

    private final String mDestinationAddr;
    private final String mSourceAddr;

    @Parameterized.Parameters
    public static Collection ipSecConfigs() {
        return Arrays.asList(new Object[][] {{"8.8.4.4"}, {"2601::10"}});
        return Arrays.asList(new Object[][] {{"1.2.3.4", "8.8.4.4"}, {"2601::2", "2601::10"}});
    }

    private static final byte[] AEAD_KEY = {
@@ -94,8 +95,9 @@ public class IpSecServiceParameterizedTest {
    private static final IpSecAlgorithm AEAD_ALGO =
            new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);

    public IpSecServiceParameterizedTest(String remoteAddr) {
        mDestinationAddr = remoteAddr;
    public IpSecServiceParameterizedTest(String sourceAddr, String destAddr) {
        mSourceAddr = sourceAddr;
        mDestinationAddr = destAddr;
    }

    @Before
@@ -192,6 +194,7 @@ public class IpSecServiceParameterizedTest {

    private void addDefaultSpisAndRemoteAddrToIpSecConfig(IpSecConfig config) throws Exception {
        config.setSpiResourceId(getNewSpiResourceId(mDestinationAddr, TEST_SPI));
        config.setSourceAddress(mSourceAddr);
        config.setDestinationAddress(mDestinationAddr);
    }

+55 −66
Original line number Diff line number Diff line
@@ -105,9 +105,6 @@ public class IpSecServiceTest {
    private static final IpSecAlgorithm AEAD_ALGO =
            new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);

    private static final int[] DIRECTIONS =
            new int[] {IpSecTransform.DIRECTION_IN, IpSecTransform.DIRECTION_OUT};

    static {
        try {
            INADDR_ANY = InetAddress.getByAddress(new byte[] {0, 0, 0, 0});
@@ -303,83 +300,75 @@ public class IpSecServiceTest {

    @Test
    public void testValidateAlgorithmsAuth() {
        for (int direction : DIRECTIONS) {
        // Validate that correct algorithm type succeeds
        IpSecConfig config = new IpSecConfig();
            config.setAuthentication(direction, AUTH_ALGO);
            mIpSecService.validateAlgorithms(config, direction);
        config.setAuthentication(AUTH_ALGO);
        mIpSecService.validateAlgorithms(config);

        // Validate that incorrect algorithm types fails
        for (IpSecAlgorithm algo : new IpSecAlgorithm[] {CRYPT_ALGO, AEAD_ALGO}) {
            try {
                config = new IpSecConfig();
                    config.setAuthentication(direction, algo);
                    mIpSecService.validateAlgorithms(config, direction);
                config.setAuthentication(algo);
                mIpSecService.validateAlgorithms(config);
                fail("Did not throw exception on invalid algorithm type");
            } catch (IllegalArgumentException expected) {
            }
        }
    }
    }

    @Test
    public void testValidateAlgorithmsCrypt() {
        for (int direction : DIRECTIONS) {
        // Validate that correct algorithm type succeeds
        IpSecConfig config = new IpSecConfig();
            config.setEncryption(direction, CRYPT_ALGO);
            mIpSecService.validateAlgorithms(config, direction);
        config.setEncryption(CRYPT_ALGO);
        mIpSecService.validateAlgorithms(config);

        // Validate that incorrect algorithm types fails
        for (IpSecAlgorithm algo : new IpSecAlgorithm[] {AUTH_ALGO, AEAD_ALGO}) {
            try {
                config = new IpSecConfig();
                    config.setEncryption(direction, algo);
                    mIpSecService.validateAlgorithms(config, direction);
                config.setEncryption(algo);
                mIpSecService.validateAlgorithms(config);
                fail("Did not throw exception on invalid algorithm type");
            } catch (IllegalArgumentException expected) {
            }
        }
    }
    }

    @Test
    public void testValidateAlgorithmsAead() {
        for (int direction : DIRECTIONS) {
        // Validate that correct algorithm type succeeds
        IpSecConfig config = new IpSecConfig();
            config.setAuthenticatedEncryption(direction, AEAD_ALGO);
            mIpSecService.validateAlgorithms(config, direction);
        config.setAuthenticatedEncryption(AEAD_ALGO);
        mIpSecService.validateAlgorithms(config);

        // Validate that incorrect algorithm types fails
        for (IpSecAlgorithm algo : new IpSecAlgorithm[] {AUTH_ALGO, CRYPT_ALGO}) {
            try {
                config = new IpSecConfig();
                    config.setAuthenticatedEncryption(direction, algo);
                    mIpSecService.validateAlgorithms(config, direction);
                config.setAuthenticatedEncryption(algo);
                mIpSecService.validateAlgorithms(config);
                fail("Did not throw exception on invalid algorithm type");
            } catch (IllegalArgumentException expected) {
            }
        }
    }
    }

    @Test
    public void testValidateAlgorithmsAuthCrypt() {
        for (int direction : DIRECTIONS) {
        // Validate that correct algorithm type succeeds
        IpSecConfig config = new IpSecConfig();
            config.setAuthentication(direction, AUTH_ALGO);
            config.setEncryption(direction, CRYPT_ALGO);
            mIpSecService.validateAlgorithms(config, direction);
        }
        config.setAuthentication(AUTH_ALGO);
        config.setEncryption(CRYPT_ALGO);
        mIpSecService.validateAlgorithms(config);
    }

    @Test
    public void testValidateAlgorithmsNoAlgorithms() {
        IpSecConfig config = new IpSecConfig();
        try {
            mIpSecService.validateAlgorithms(config, IpSecTransform.DIRECTION_IN);
            mIpSecService.validateAlgorithms(config);
            fail("Expected exception; no algorithms specified");
        } catch (IllegalArgumentException expected) {
        }
@@ -388,10 +377,10 @@ public class IpSecServiceTest {
    @Test
    public void testValidateAlgorithmsAeadWithAuth() {
        IpSecConfig config = new IpSecConfig();
        config.setAuthenticatedEncryption(IpSecTransform.DIRECTION_IN, AEAD_ALGO);
        config.setAuthentication(IpSecTransform.DIRECTION_IN, AUTH_ALGO);
        config.setAuthenticatedEncryption(AEAD_ALGO);
        config.setAuthentication(AUTH_ALGO);
        try {
            mIpSecService.validateAlgorithms(config, IpSecTransform.DIRECTION_IN);
            mIpSecService.validateAlgorithms(config);
            fail("Expected exception; both AEAD and auth algorithm specified");
        } catch (IllegalArgumentException expected) {
        }
@@ -400,10 +389,10 @@ public class IpSecServiceTest {
    @Test
    public void testValidateAlgorithmsAeadWithCrypt() {
        IpSecConfig config = new IpSecConfig();
        config.setAuthenticatedEncryption(IpSecTransform.DIRECTION_IN, AEAD_ALGO);
        config.setEncryption(IpSecTransform.DIRECTION_IN, CRYPT_ALGO);
        config.setAuthenticatedEncryption(AEAD_ALGO);
        config.setEncryption(CRYPT_ALGO);
        try {
            mIpSecService.validateAlgorithms(config, IpSecTransform.DIRECTION_IN);
            mIpSecService.validateAlgorithms(config);
            fail("Expected exception; both AEAD and crypt algorithm specified");
        } catch (IllegalArgumentException expected) {
        }
@@ -412,11 +401,11 @@ public class IpSecServiceTest {
    @Test
    public void testValidateAlgorithmsAeadWithAuthAndCrypt() {
        IpSecConfig config = new IpSecConfig();
        config.setAuthenticatedEncryption(IpSecTransform.DIRECTION_IN, AEAD_ALGO);
        config.setAuthentication(IpSecTransform.DIRECTION_IN, AUTH_ALGO);
        config.setEncryption(IpSecTransform.DIRECTION_IN, CRYPT_ALGO);
        config.setAuthenticatedEncryption(AEAD_ALGO);
        config.setAuthentication(AUTH_ALGO);
        config.setEncryption(CRYPT_ALGO);
        try {
            mIpSecService.validateAlgorithms(config, IpSecTransform.DIRECTION_IN);
            mIpSecService.validateAlgorithms(config);
            fail("Expected exception; AEAD, auth and crypt algorithm specified");
        } catch (IllegalArgumentException expected) {
        }