def mock_context_one_device_read_endpoint_no_write(mock_context_class, mock_device,
                                                   mock_interface_settings_endpoint_factory,
                                                   valid_read_endpoint_address):
    """
    Fixture that yields a mock USB context that yields one device that matches on
    class, subclass, and protocol but only has a valid read endpoint.
    """
    settings = mock_interface_settings_endpoint_factory(valid_read_endpoint_address)
    mock_device.iterSettings.return_value = [settings]
    mock_context_class.getDeviceList.return_value = [mock_device]
    return mock_context_class