Remove unnecessary mitm test copy
Also make sure this test clean up services it started, and closes the
connection it created on success.
Change-Id: I76e3ff8d969fe5dfc5f68174a79c2cab85cb7f50
diff --git a/acts/tests/google/ble/gatt/GattConnectTest.py b/acts/tests/google/ble/gatt/GattConnectTest.py
index f461d29..33043d1 100644
--- a/acts/tests/google/ble/gatt/GattConnectTest.py
+++ b/acts/tests/google/ble/gatt/GattConnectTest.py
@@ -992,113 +992,10 @@
GattCbErr.CHAR_WRITE_ERR.value.format(
expected_event))
return False
- return True
- @BluetoothBaseTest.bt_test_wrap
- def test_gatt_connect_mitm_attack(self):
- """Test GATT connection with permission write encrypted mitm.
-
- Test establishing a gatt connection between a GATT server and GATT
- client while the GATT server's characteristic includes the property
- write value and the permission write encrypted mitm value. This will
- prompt LE pairing and then the devices will create a bond.
-
- Steps:
- 1. Create a GATT server and server callback on the peripheral device.
- 2. Create a unique service and characteristic uuid on the peripheral.
- 3. Create a characteristic on the peripheral with these properties:
- GattCharacteristic.PROPERTY_WRITE.value,
- GattCharacteristic.PERMISSION_WRITE_ENCRYPTED_MITM.value
- 4. Create a GATT service on the peripheral.
- 5. Add the characteristic to the GATT service.
- 6. Create a GATT connection between your central and peripheral device.
- 7. From the central device, discover the peripheral's services.
- 8. Iterate the services found until you find the unique characteristic
- created in step 3.
- 9. Once found, write a random but valid value to the characteristic.
- 10. Start pairing helpers on both devices immediately after attempting
- to write to the characteristic.
- 11. Within 10 seconds of writing the characteristic, there should be
- a prompt to bond the device from the peripheral. The helpers will
- handle the UI interaction automatically. (see
- BluetoothConnectionFacade.java bluetoothStartPairingHelper).
- 12. Verify that the two devices are bonded.
-
- Expected Result:
- Verify that a connection was established and the devices are bonded.
-
- Returns:
- Pass if True
- Fail if False
-
- TAGS: LE, Advertising, Filtering, Scanning, GATT, Characteristic, MITM
- Priority: 1
- """
- gatt_server_callback = (
- self.per_ad.droid.gattServerCreateGattServerCallback())
- gatt_server = self.per_ad.droid.gattServerOpenGattServer(
- gatt_server_callback)
- service_uuid = "3846D7A0-69C8-11E4-BA00-0002A5D5C51B"
- test_uuid = "aa7edd5a-4d1d-4f0e-883a-d145616a1630"
- bonded = False
- characteristic = self.per_ad.droid.gattServerCreateBluetoo
- thGattCharacteristic(
- test_uuid, GattCharacteristic.PROPERTY_WRITE.value,
- GattCharacteristic.PERMISSION_WRITE_ENCRYPTED_MITM.value)
- gatt_service = self.per_ad.droid.gattServerCreateService(
- service_uuid, GattService.SERVICE_TYPE_PRIMARY.value)
- self.per_ad.droid.gattServerAddCharacteristicToService(gatt_service,
- characteristic)
- self.per_ad.droid.gattServerAddService(gatt_server, gatt_service)
- result = self._find_service_added_event(gatt_server_callback,
- service_uuid)
- if not result:
- return False
- bluetooth_gatt, gatt_callback, adv_callback = (
- orchestrate_gatt_connection(self.cen_ad, self.per_ad))
- self.adv_instances.append(adv_callback)
- if self.cen_ad.droid.gattClientDiscoverServices(bluetooth_gatt):
- expected_event = GattCbStrings.GATT_SERV_DISC.value.format(
- gatt_callback)
- try:
- event = self.cen_ad.ed.pop_event(expected_event,
- self.default_timeout)
- except Empty:
- self.log.error(GattCbErr.GATT_SERV_DISC_ERR.value.format(
- expected_event))
- return False
- discovered_services_index = event['data']['ServicesIndex']
- else:
- self.log.info("Failed to discover services.")
- return False
- test_value = "1,2,3,4,5,6,7"
- services_count = self.cen_ad.droid.gattClientGetDiscoveredServicesCount(
- discovered_services_index)
- for i in range(services_count):
- characteristic_uuids = (
- self.cen_ad.droid.gattClientGetDiscoveredCharacteristicUuids(
- discovered_services_index, i))
- for characteristic_uuid in characteristic_uuids:
- if characteristic_uuid == test_uuid:
- self.cen_ad.droid.bluetoothStartPairingHelper()
- self.per_ad.droid.bluetoothStartPairingHelper()
- self.cen_ad.droid.gattClientCharacteristicSetValue(
- bluetooth_gatt, discovered_services_index, i,
- characteristic_uuid, test_value)
- self.cen_ad.droid.gattClientWriteCharacteristic(
- bluetooth_gatt, discovered_services_index, i,
- characteristic_uuid)
- start_time = time.time() + self.default_timeout
- target_name = self.per_ad.droid.bluetoothGetLocalName()
- while time.time() < start_time and bonded == False:
- bonded_devices = self.cen_ad.droid.bluetoothGetBondedDevices(
- )
- for device in bonded_devices:
- if 'name' in device.keys() and device[
- 'name'] == target_name:
- bonded = True
- break
- return True
+ self._cleanup_services(gatt_server)
+ return self._orchestrate_gatt_disconnection(bluetooth_gatt,
+ gatt_callback)
@BluetoothBaseTest.bt_test_wrap
def test_gatt_connect_mitm_attack(self):