def test_register_and_cancel_clears_timers_and_disconnects(self, mocker): state_based_mqtt = MagicMock() mock_request_response_provider = SomeRequestResponseProvider(state_based_mqtt) polling_machine = PollingMachine(state_based_mqtt) polling_machine._request_response_provider = mock_request_response_provider mocker.patch.object(mock_request_response_provider, "enable_responses") mocker.patch.object(state_based_mqtt, "send_request") mocker.patch.object(mock_request_response_provider, "disconnect") # to transition into initializing polling_machine.register(callback=MagicMock()) mock_init_uuid = mocker.patch( "azure.iot.device.provisioning.internal.polling_machine.uuid.uuid4" ) mock_init_uuid.return_value = fake_request_id key_value_dict = {} key_value_dict["request_id"] = [fake_request_id, " "] # to transition into registering polling_machine._on_subscribe_completed() # reset mock to generate different request id for query mock_init_uuid.reset_mock() fake_request_id_query = "Request4567" mock_init_uuid.return_value = fake_request_id_query key_value_dict_2 = {} key_value_dict_2["request_id"] = [fake_request_id_query, " "] fake_payload_result = ( '{"operationId":"' + fake_operation_id + '","status":"' + fake_assigning_status + '"}' ) mock_request_response_provider.receive_response( fake_request_id, "200", key_value_dict, fake_payload_result ) polling_timer = polling_machine._polling_timer query_timer = polling_machine._query_timer poling_timer_cancel = mocker.patch.object(polling_timer, "cancel") query_timer_cancel = mocker.patch.object(query_timer, "cancel") mock_cancel_callback = MagicMock() polling_machine.cancel(mock_cancel_callback) assert poling_timer_cancel.call_count == 1 assert query_timer_cancel.call_count == 1 assert mock_request_response_provider.disconnect.call_count == 1 polling_machine._on_disconnect_completed_cancel() assert mock_cancel_callback.call_count == 1
def test_register_and_cancel_clears_timers_and_disconnects(self, mocker): state_based_mqtt = MagicMock() mock_request_response_provider = TestRequestResponseProvider( state_based_mqtt) polling_machine = PollingMachine(state_based_mqtt) polling_machine._request_response_provider = mock_request_response_provider mocker.patch.object(mock_request_response_provider, "subscribe") mocker.patch.object(mock_request_response_provider, "publish") mocker.patch.object(mock_request_response_provider, "disconnect") # to transition into initializing polling_machine.register(callback=MagicMock()) mock_init_uuid = mocker.patch( "azure.iot.device.provisioning.internal.polling_machine.uuid.uuid4" ) mock_init_uuid.return_value = fake_request_id # to transition into registering polling_machine._on_subscribe_completed() # reset mock to generate different request id for query mock_init_uuid.reset_mock() fake_request_id_query = "Request4567" mock_init_uuid.return_value = fake_request_id_query fake_topic = fake_success_response_topic + "$rid={}&retry-after={}".format( fake_request_id, fake_retry_after) fake_payload_result = ('{"operationId":"' + fake_operation_id + '","status":"' + fake_assigning_status + '"}') mock_request_response_provider.receive_response( fake_topic, fake_payload_result.encode("utf-8")) polling_timer = polling_machine._polling_timer query_timer = polling_machine._query_timer poling_timer_cancel = mocker.patch.object(polling_timer, "cancel") query_timer_cancel = mocker.patch.object(query_timer, "cancel") mock_cancel_callback = MagicMock() polling_machine.cancel(mock_cancel_callback) assert poling_timer_cancel.call_count == 1 assert query_timer_cancel.call_count == 1 mock_request_response_provider.disconnect.assert_called_once_with( callback=polling_machine._on_disconnect_completed_cancel) polling_machine._on_disconnect_completed_cancel() assert mock_cancel_callback.call_count == 1