diff --git a/test/per_router/conftest.py b/test/per_router/conftest.py
index 9fc9ac4790cefd26df008c72cfc2a61539ca482e..bb581421d103815471fa6229ac4ab6073a382d83 100644
--- a/test/per_router/conftest.py
+++ b/test/per_router/conftest.py
@@ -2,9 +2,13 @@ import glob
 import json
 import os
 import re
+from unittest.mock import patch
 
 from lxml import etree
 import pytest
+from ncclient.manager import make_device_handler, Manager
+from ncclient.transport import SSHSession
+from ncclient.xml_ import NCElement
 
 import inventory_provider
 from inventory_provider import juniper
@@ -64,3 +68,41 @@ def netconf_doc(mocker, router, data_config):
         'inventory_provider.juniper.Device',
         MockedJunosDevice)
     return juniper.load_config(router, data_config['ssh'])
+
+
+# different library requires different mocking
+
+@pytest.fixture
+def interface_info_response(router):
+    filename = os.path.join(TEST_DATA_DIRNAME, 'interface_info', f'{router}.xml')
+    try:
+        with open(filename, 'r') as file:
+            data = file.read()
+            return data
+    except FileNotFoundError:
+        pytest.skip(f'no corresponding interface_info doc for {router}, skipping')
+
+
+@pytest.fixture
+def mocked_router(interface_info_response):
+    def _mocked_manager_connect(*args, **kwargs):
+        assert kwargs
+        device_params = kwargs["device_params"]
+        device_handler = make_device_handler(device_params)
+        session = SSHSession(device_handler)
+        return Manager(session, device_handler)
+
+    def _mocked_rpc_reply(*args, **kwargs):
+        device_handler = make_device_handler({'name': 'junos'})
+        rpc_reply = NCElement(
+            interface_info_response,
+            device_handler.transform_reply()
+        )
+        return rpc_reply
+
+    with patch('ncclient.manager.connect') as manager:
+        manager.side_effect = _mocked_manager_connect
+        with patch('ncclient.operations.third_party.juniper.rpc.ExecuteRpc._request') as rpc:
+            rpc.side_effect = _mocked_rpc_reply
+            with patch('ncclient.operations.session.CloseSession.request'):
+                yield
diff --git a/test/per_router/test_juniper_data.py b/test/per_router/test_juniper_data.py
index 329af1c89c2027e43f51f63144b16d0cb6fbbd9e..b0664f5f89d5635f18f8017ea640beff7346b5bb 100644
--- a/test/per_router/test_juniper_data.py
+++ b/test/per_router/test_juniper_data.py
@@ -2,6 +2,8 @@ import copy
 import ipaddress
 import jsonschema
 import pytest
+from lxml import etree
+
 from inventory_provider import juniper
 from inventory_provider.routes import msr
 
@@ -143,3 +145,11 @@ def test_interface_addresses_list(netconf_doc):
 
     addresses = list(juniper.interface_addresses(netconf_doc))
     jsonschema.validate(addresses, schema)
+
+
+def test_interface_speeds(mocked_router, router, data_config):
+    interface_info = juniper.get_interface_info_for_router(router, data_config['ssh'])
+    speeds = juniper.get_interface_speeds(etree.fromstring(interface_info))
+    assert len(speeds) > 0  # should have any speeds at all
+    for speed in speeds:
+        assert len(speed) > 0  # no empty strings, every found speed should have a value