Repository: napalm-automation-community/napalm-s350

Issue:
Unit tests for SG500
Todo:
- [x] command output
- [x] get_arp_table
- [x] get_arp_table_with_vrf
- [x] get_config
- [x] get_config_filtered
- [x] get_config_sanitized
- [x] get_facts
- [x] get_interfaces
- [x] get_interfaces_ip
- [x] get_lldp_neighbors
- [x] get_lldp_neighbors_detail
- [x] get_ntp_servers
- [x] ~~is_alive~~

Discussion:

Patch:
diff --git a/napalm_s350/s350.py b/napalm_s350/s350.py
index 97df73f..23c371a 100644
--- a/napalm_s350/s350.py
+++ b/napalm_s350/s350.py
@@ -239,14 +239,19 @@ class S350Driver(NetworkDriver):
                 _, hostname = line.split('System Name:')
                 hostname = hostname.strip()
                 continue
+            elif line.startswith('System Description:'):
+                _, model = line.split('System Description:')
+                model = model.strip()
+                continue
             elif line.startswith('System Up Time (days,hour:min:sec):'):
                 _, uptime_str = line.split('System Up Time (days,hour:min:sec):')
                 uptime = self._parse_uptime(uptime_str)
 
-        # serial_number and model
-        inventory = self._get_facts_parse_inventory(show_inv)['1']
-        serial_number = inventory['sn']
-        model         = inventory['pid']
+        # serial_number
+        for line in show_inv.splitlines():
+            if 'SN:' in line:
+                serial_number = line.split('SN: ')[-1]
+                break
 
         # fqdn
         domainname = napalm.base.helpers.textfsm_extractor(self, 'hosts',
@@ -281,32 +286,6 @@ class S350Driver(NetworkDriver):
             'vendor': u'Cisco',
         }
 
-    def _get_facts_parse_inventory(self, show_inventory):
-        """ inventory can list more modules/devices """
-        # make 1 module 1 line
-        show_inventory = re.sub(r'\nPID', '  PID', show_inventory, re.M)
-        # delete empty lines
-        show_inventory = re.sub(r'^\n', '', show_inventory, re.M)
-        show_inventory = re.sub(r'\n\n', '', show_inventory, re.M)
-        show_inventory = re.sub(r'\n\s*\n', r'\n', show_inventory, re.M)
-        lines = show_inventory.splitlines()
-
-        modules = {}
-        for line in lines:
-            match = re.search(r"""
-                ^
-                NAME:\s"(?P<name>\S+)"\s*
-                DESCR:\s"(?P<descr>[^"]+)"\s*
-                PID:\s(?P<pid>\S+)\s*
-                VID:\s(?P<vid>.+\S)\s*
-                SN:\s(?P<sn>\S+)\s*
-                """, line, re.X)
-            module = match.groupdict()
-            modules[module['name']] = module 
-        
-        if modules:
-            return modules
-
     def _get_facts_parse_os_version(self, show_ver):
         # os_version
         # detect os ver > 2
@@ -387,42 +366,24 @@ class S350Driver(NetworkDriver):
     def get_interfaces_ip(self):
         """Returns all configured interface IP addresses."""
         interfaces = {}
+        valid_interfaces = []
         show_ip_int = self._send_command('show ip int')
 
-        header = True    # cycle trought header
+        # Limit to valid interfaces (i.e. ignore vlan 1)
         for line in show_ip_int.splitlines():
-            if header:
-                # last line of first header
-                match = re.match(r'^---+ -+ .*$', line)
-                if match:
-                    header = False
-                    fields_end = self._get_ip_int_fields_end(line)
-                continue
+            if ('UP' in line or 'DOWN' in line) and line.split()[-1] == 'Valid':
+                valid_interfaces.append(line)
 
-            # next header, stop processing text
-            if re.match(r'^---+ -+ .*$', line):
-                break
+        for interface in valid_interfaces:
+            network, name = interface.split()[:2]
 
-            line_elems = self._get_ip_int_line_to_fields(line, fields_end)
+            ip = netaddr.IPNetwork(network)
 
-            # only valid interfaces
-            # v 2.x firmware
-            if 7 in line_elems.keys():
-                if line_elems[7] != 'Valid':
-                    continue
-            # v 1.x firmware
-            elif line_elems[5] != 'Valid':
-                continue
-
-            cidr = line_elems[0]
-            interface = line_elems[1]
-
-            ip = netaddr.IPNetwork(cidr)
             family = 'ipv{0}'.format(ip.version)
 
-            interfaces[interface] = {
+            interfaces[name] = {
                 family: {
-                   str(ip.ip): {
+                    str(ip.ip): {
                         'prefix_length': ip.prefixlen
                     }
                 }
@@ -430,26 +391,6 @@ class S350Driver(NetworkDriver):
 
         return interfaces
 
-    def _get_ip_int_line_to_fields(self, line, fields_end):
-        """ dynamic fields lenghts """
-        line_elems = {}
-        index = 0
-        f_start = 0
-        for f_end in fields_end:
-            line_elems[index] = line[f_start:f_end].strip()
-            index += 1
-            f_start = f_end
-        return line_elems
-
-    def _get_ip_int_fields_end(self, dashline):
-        """ fields length are diferent device to device, detect them on horizontal lin """
-
-        fields_end = [m.start() for m in re.finditer(' ', dashline)]
-        # fields_position.insert(0,0)
-        fields_end.append(len(dashline))
-
-        return fields_end
-
     def get_lldp_neighbors(self):
         """get_lldp_neighbors implementation for s350"""
         neighbors = {}
@@ -465,17 +406,14 @@ class S350Driver(NetworkDriver):
                 match = re.match(r'^--------- -+ .*$', line)
                 if match:
                     header = False
-                    fields_end = self._get_lldp_neighbors_fields_end(line)
                 continue
 
-            line_elems = self._get_lldp_neighbors_line_to_fields(line, fields_end)
+            line_elems = line.split()
 
-            # info owerflow to the other line
-            if     line_elems[0] == '' or line_elems[4] == '' or line_elems[5] == '' :
-                # complete owerflown fields
-                local_port  = local_port  + line_elems[0]
-                remote_port = remote_port + line_elems[2]
-                remote_name = remote_name + line_elems[3]
+            # long system name owerflow to the other line
+            if len(line_elems) == 1:
+                # complete remote name
+                remote_name = remote_name + line_elems[0]
                 # then reuse old values na rewrite previous entry
             else:
                 local_port = line_elems[0]
@@ -491,26 +429,6 @@ class S350Driver(NetworkDriver):
 
         return neighbors
 
-    def _get_lldp_neighbors_line_to_fields(self, line, fields_end):
-        """ dynamic fields lenghts """
-        line_elems={}
-        index=0
-        f_start=0
-        for f_end in fields_end:
-            line_elems[index] = line[f_start:f_end].strip()
-            index += 1
-            f_start = f_end
-        return line_elems
-
-    def _get_lldp_neighbors_fields_end(self, dashline):
-        """ fields length are diferent device to device, detect them on horizontal lin """
-
-        fields_end=[m.start() for m in re.finditer(' ', dashline)]
-        #fields_position.insert(0,0)
-        fields_end.append(len(dashline))
-
-        return fields_end
-
     def _get_lldp_line_value(self, line):
         """
         Safe-ish method to get the value from an 'lldp neighbors $IF' line.


Test patch:
diff --git a/test/unit/mocked_data/SG500-28-K9/show_arp.txt b/test/unit/mocked_data/SG500-28-K9/show_arp.txt
new file mode 100644
index 0000000..6bd0a8b
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_arp.txt
@@ -0,0 +1,9 @@
+
+Total number of entries: 2
+
+
+  VLAN    Interface     IP address        HW address          status
+--------------------- --------------- ------------------- ---------------
+vlan 202              10.0.3.1        00:15:17:27:9c:4d   dynamic
+vlan 202              10.0.3.4        00:50:56:90:23:e8   dynamic
+
diff --git a/test/unit/mocked_data/test_get_facts/SG300-10/show_hosts.txt b/test/unit/mocked_data/SG500-28-K9/show_hosts.txt
similarity index 99%
rename from test/unit/mocked_data/test_get_facts/SG300-10/show_hosts.txt
rename to test/unit/mocked_data/SG500-28-K9/show_hosts.txt
index b832434..4813cc2 100644
--- a/test/unit/mocked_data/test_get_facts/SG300-10/show_hosts.txt
+++ b/test/unit/mocked_data/SG500-28-K9/show_hosts.txt
@@ -30,4 +30,3 @@ OK - Okay, NE - Negative Cache, ?? - No Response
 No hostname is mapped to an IP address
 
 
-
diff --git a/test/unit/mocked_data/SG500-28-K9/show_interface_description.txt b/test/unit/mocked_data/SG500-28-K9/show_interface_description.txt
new file mode 100644
index 0000000..5d5477b
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_interface_description.txt
@@ -0,0 +1,63 @@
+Port      Description
+-------   -----------
+gi1/1/1
+gi1/1/2
+gi1/1/3
+gi1/1/4
+gi1/1/5
+gi1/1/6
+gi1/1/7
+gi1/1/8
+gi1/1/9
+gi1/1/10
+gi1/1/11
+gi1/1/12
+gi1/1/13
+gi1/1/14
+gi1/1/15
+gi1/1/16
+gi1/1/17
+gi1/1/18
+gi1/1/19
+gi1/1/20
+gi1/1/21
+gi1/1/22
+gi1/1/23
+gi1/1/24
+gi1/1/25
+gi1/1/26
+
+Ch        Description
+-------   -----------
+Po1
+Po2
+Po3
+Po4
+Po5
+Po6
+Po7
+Po8
+Po9
+Po10
+Po11
+Po12
+Po13
+Po14
+Po15
+Po16
+Po17
+Po18
+Po19
+Po20
+Po21
+Po22
+Po23
+Po24
+Po25
+Po26
+Po27
+Po28
+Po29
+Po30
+Po31
+Po32
diff --git a/test/unit/mocked_data/SG500-28-K9/show_interface_status.txt b/test/unit/mocked_data/SG500-28-K9/show_interface_status.txt
new file mode 100644
index 0000000..990d901
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_interface_status.txt
@@ -0,0 +1,65 @@
+                                             Flow Link          Back   Mdix
+Port     Type         Duplex  Speed Neg      ctrl State       Pressure Mode
+-------- ------------ ------  ----- -------- ---- ----------- -------- -------
+gi1/1/1  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/2  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/3  1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
+gi1/1/4  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/5  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/6  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/7  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/8  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/9  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/10 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/11 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/12 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
+gi1/1/13 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/14 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
+gi1/1/15 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
+gi1/1/16 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/17 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/18 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/19 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/20 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/21 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/22 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/23 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/24 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/25 1G-Combo-C     --      --     --     --  Down           --     --
+gi1/1/26 1G-Combo-F   Full    1000  Disabled Off  Up          Disabled Off
+
+                                          Flow    Link
+Ch       Type    Duplex  Speed  Neg      control  State
+-------- ------- ------  -----  -------- -------  -----------
+Po1         --     --      --      --       --    Not Present
+Po2         --     --      --      --       --    Not Present
+Po3         --     --      --      --       --    Not Present
+Po4         --     --      --      --       --    Not Present
+Po5         --     --      --      --       --    Not Present
+Po6         --     --      --      --       --    Not Present
+Po7         --     --      --      --       --    Not Present
+Po8         --     --      --      --       --    Not Present
+Po9         --     --      --      --       --    Not Present
+Po10        --     --      --      --       --    Not Present
+Po11        --     --      --      --       --    Not Present
+Po12        --     --      --      --       --    Not Present
+Po13        --     --      --      --       --    Not Present
+Po14        --     --      --      --       --    Not Present
+Po15        --     --      --      --       --    Not Present
+Po16        --     --      --      --       --    Not Present
+Po17        --     --      --      --       --    Not Present
+Po18        --     --      --      --       --    Not Present
+Po19        --     --      --      --       --    Not Present
+Po20        --     --      --      --       --    Not Present
+Po21        --     --      --      --       --    Not Present
+Po22        --     --      --      --       --    Not Present
+Po23        --     --      --      --       --    Not Present
+Po24        --     --      --      --       --    Not Present
+Po25        --     --      --      --       --    Not Present
+Po26        --     --      --      --       --    Not Present
+Po27        --     --      --      --       --    Not Present
+Po28        --     --      --      --       --    Not Present
+Po29        --     --      --      --       --    Not Present
+Po30        --     --      --      --       --    Not Present
+Po31        --     --      --      --       --    Not Present
+Po32        --     --      --      --       --    Not Present
diff --git a/test/unit/mocked_data/SG500-28-K9/show_inventory.txt b/test/unit/mocked_data/SG500-28-K9/show_inventory.txt
new file mode 100644
index 0000000..ae69ee6
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_inventory.txt
@@ -0,0 +1,3 @@
+
+NAME: "1"   DESCR: "SG500-28 28-Port Gigabit Stackable Managed Switch"
+PID: SG500-28-K9   VID: V02   SN: A1B2C3F4G5
diff --git a/test/unit/mocked_data/SG500-28-K9/show_ip_interface.txt b/test/unit/mocked_data/SG500-28-K9/show_ip_interface.txt
new file mode 100644
index 0000000..1293d54
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_ip_interface.txt
@@ -0,0 +1,10 @@
+
+
+    IP Address         I/F      I/F Status      Type       Status
+                                admin/oper
+------------------- ---------- ------------- ----------- -----------
+10.0.3.5/8          vlan 202   UP/UP         Static      Valid
+
+
+  Gateway IP Address      Type
+----------------------- --------
diff --git a/test/unit/mocked_data/SG500-28-K9/show_ip_route.txt b/test/unit/mocked_data/SG500-28-K9/show_ip_route.txt
new file mode 100644
index 0000000..8decd08
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_ip_route.txt
@@ -0,0 +1,6 @@
+Maximum Parallel Paths: 1 (1 after reset)
+IP Forwarding: disabled
+Codes: > - best, C - connected, S - static
+
+
+C   10.0.0.0/8 is directly connected,
diff --git a/test/unit/mocked_data/SG500-28-K9/show_lldp_local_gi1-1-1.txt b/test/unit/mocked_data/SG500-28-K9/show_lldp_local_gi1-1-1.txt
new file mode 100644
index 0000000..6bc6a35
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_lldp_local_gi1-1-1.txt
@@ -0,0 +1,11 @@
+
+Device ID: 0c:68:03:9c:39:c1
+Port ID: gi1/1/1
+Capabilities: Bridge
+System Name: switch1
+
+
+802.1 PVID: 488
+802.1 PPVID:
+802.1 VLAN:
+802.1 Protocol:
diff --git a/test/unit/mocked_data/SG500-28-K9/show_lldp_neighbor_gi1-1-26.txt b/test/unit/mocked_data/SG500-28-K9/show_lldp_neighbor_gi1-1-26.txt
new file mode 100644
index 0000000..a4f4343
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_lldp_neighbor_gi1-1-26.txt
@@ -0,0 +1,16 @@
+
+Device ID: d8:84:66:ab:ba:de
+Port ID: ge.1.1
+Capabilities: Other
+System Name:
+System description:
+Port description:
+Time To Live: 95
+
+
+802.1 PVID: None
+802.1 PPVID:
+802.1 VLAN:
+802.1 Protocol:
+
+
diff --git a/test/unit/mocked_data/SG300-10/show_lldp_neighbors.txt b/test/unit/mocked_data/SG500-28-K9/show_lldp_neighbors.txt
similarity index 53%
rename from test/unit/mocked_data/SG300-10/show_lldp_neighbors.txt
rename to test/unit/mocked_data/SG500-28-K9/show_lldp_neighbors.txt
index 31fc656..69e33a0 100644
--- a/test/unit/mocked_data/SG300-10/show_lldp_neighbors.txt
+++ b/test/unit/mocked_data/SG500-28-K9/show_lldp_neighbors.txt
@@ -6,6 +6,8 @@ TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other
 
   Port        Device ID        Port ID       System Name    Capabilities  TTL
 --------- ----------------- ------------- ----------------- ------------ -----
-gi7       00:a5:bf:ff:ee:dd      gi8        switchcffeedd        B, R      96
-gi8       f2:18:98:aa:bb:cc 9c:eb:e8:c3:b      test-pc1          B, W      118
-                            2:a1
+gi1/1/3   00:23:24:02:66:e4 00:23:24:02:6 pc123.cli      H        118
+                            6:e4          ents.test.net
+gi1/1/14  dc:4a:3e:53:fd:af dc:4a:3e:53:f                        O       3255
+                            d:af
+gi1/1/26  d8:84:66:ab:ba:cd    ge.1.1                            O        114
diff --git a/test/unit/mocked_data/SG300-10/show_ports_jumbo_frame.txt b/test/unit/mocked_data/SG500-28-K9/show_ports_jumbo_frame.txt
similarity index 100%
rename from test/unit/mocked_data/SG300-10/show_ports_jumbo_frame.txt
rename to test/unit/mocked_data/SG500-28-K9/show_ports_jumbo_frame.txt
diff --git a/test/unit/mocked_data/SG500-28-K9/show_running-config.txt b/test/unit/mocked_data/SG500-28-K9/show_running-config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_running-config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/SG500-28-K9/show_sntp_status.txt b/test/unit/mocked_data/SG500-28-K9/show_sntp_status.txt
new file mode 100644
index 0000000..6b90b23
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_sntp_status.txt
@@ -0,0 +1,13 @@
+
+Clock is unsynchronized
+
+Unicast servers:
+
+
+
+Anycast server:
+
+
+
+Broadcast:
+
diff --git a/test/unit/mocked_data/SG500-28-K9/show_startup-config.txt b/test/unit/mocked_data/SG500-28-K9/show_startup-config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_startup-config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/SG500-28-K9/show_system.txt b/test/unit/mocked_data/SG500-28-K9/show_system.txt
new file mode 100644
index 0000000..a921d5c
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_system.txt
@@ -0,0 +1,18 @@
+
+Unit          Type
+---- ----------------------
+ 1          SG500-28
+
+Unit   FAN
+       Status
+----   ---------
+ 1       N/A
+
+Unit   Temperature (Celsius)   Temperature Sensor Status
+---- ------------------------- -------------------------
+ 1                                        N/A
+
+
+Unit     Up time
+---- ---------------
+ 1     00,00:21:27
diff --git a/test/unit/mocked_data/SG500-28-K9/show_version.txt b/test/unit/mocked_data/SG500-28-K9/show_version.txt
new file mode 100644
index 0000000..8c3e2f9
--- /dev/null
+++ b/test/unit/mocked_data/SG500-28-K9/show_version.txt
@@ -0,0 +1,4 @@
+
+       Unit             SW version         Boot version         HW version
+------------------- ------------------- ------------------- -------------------
+         1               1.4.11.5            1.3.5.06               V02
diff --git a/test/unit/mocked_data/commands.txt b/test/unit/mocked_data/commands.txt
index 2f33174..cfaf6c8 100644
--- a/test/unit/mocked_data/commands.txt
+++ b/test/unit/mocked_data/commands.txt
@@ -10,7 +10,6 @@ show version
 show system
 show interfaces status 
 show interfaces description
-show ports jumbo-frame
 
 # choose any physical interface on your device
 show lldp local GigabitEthernet1 
diff --git a/test/unit/mocked_data/test_get_arp_table/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_arp_table/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..62f8007
--- /dev/null
+++ b/test/unit/mocked_data/test_get_arp_table/SG500-28-K9/expected_result.json
@@ -0,0 +1,4 @@
+[
+	{"interface": "vlan 202", "mac": "00:15:17:27:9C:4D", "ip": "10.0.3.1", "age": 0.0},
+  {"interface": "vlan 202", "mac": "00:50:56:90:23:E8", "ip": "10.0.3.4", "age": 0.0}
+]
diff --git a/test/unit/mocked_data/test_get_arp_table/SG500-28-K9/show_arp.txt b/test/unit/mocked_data/test_get_arp_table/SG500-28-K9/show_arp.txt
new file mode 100644
index 0000000..6bd0a8b
--- /dev/null
+++ b/test/unit/mocked_data/test_get_arp_table/SG500-28-K9/show_arp.txt
@@ -0,0 +1,9 @@
+
+Total number of entries: 2
+
+
+  VLAN    Interface     IP address        HW address          status
+--------------------- --------------- ------------------- ---------------
+vlan 202              10.0.3.1        00:15:17:27:9c:4d   dynamic
+vlan 202              10.0.3.4        00:50:56:90:23:e8   dynamic
+
diff --git a/test/unit/mocked_data/test_get_arp_table_with_vrf/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_arp_table_with_vrf/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..62f8007
--- /dev/null
+++ b/test/unit/mocked_data/test_get_arp_table_with_vrf/SG500-28-K9/expected_result.json
@@ -0,0 +1,4 @@
+[
+	{"interface": "vlan 202", "mac": "00:15:17:27:9C:4D", "ip": "10.0.3.1", "age": 0.0},
+  {"interface": "vlan 202", "mac": "00:50:56:90:23:E8", "ip": "10.0.3.4", "age": 0.0}
+]
diff --git a/test/unit/mocked_data/test_get_arp_table_with_vrf/SG500-28-K9/show_arp.txt b/test/unit/mocked_data/test_get_arp_table_with_vrf/SG500-28-K9/show_arp.txt
new file mode 100644
index 0000000..6bd0a8b
--- /dev/null
+++ b/test/unit/mocked_data/test_get_arp_table_with_vrf/SG500-28-K9/show_arp.txt
@@ -0,0 +1,9 @@
+
+Total number of entries: 2
+
+
+  VLAN    Interface     IP address        HW address          status
+--------------------- --------------- ------------------- ---------------
+vlan 202              10.0.3.1        00:15:17:27:9c:4d   dynamic
+vlan 202              10.0.3.4        00:50:56:90:23:e8   dynamic
+
diff --git a/test/unit/mocked_data/test_get_config/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_config/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..82a9705
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config/SG500-28-K9/expected_result.json
@@ -0,0 +1,5 @@
+{
+  "candidate": "",
+  "running": "\nssd-control-start\nssd config\nssd file passphrase control unrestricted\nno ssd file integrity control\nssd-control-end cb0a3fdb1f3a1af4e4430033719968c0\n!\nvlan database\nvlan 10,20,30\nexit\nvoice vlan oui-table add 0001e3 Siemens_AG_phone________\nvoice vlan oui-table add 00036b Cisco_phone_____________\nvoice vlan oui-table add 00096e Avaya___________________\nvoice vlan oui-table add 000fe2 H3C_Aolynk______________\nvoice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone\nvoice vlan oui-table add 00d01e Pingtel_phone___________\nvoice vlan oui-table add 00e075 Polycom/Veritel_phone___\nvoice vlan oui-table add 00e0bb 3Com_phone______________\nhostname switch1\nusername cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15\nip ssh server\nip ssh password-auth\nsnmp-server server\nsnmp-server community findit ro view Default\n!\ninterface vlan 10\n ip address 10.0.3.5 255.0.0.0\n!\ninterface gigabitethernet1/1/1\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/2\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/3\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/4\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/5\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/6\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/7\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/8\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/9\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/10\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/11\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/12\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/13\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/14\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/15\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/16\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/17\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/18\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/19\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/20\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/21\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/22\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/23\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/24\n switchport mode access\n switchport access vlan 30\n!\ninterface gigabitethernet1/1/25\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/26\n spanning-tree disable\n spanning-tree link-type point-to-point\n switchport trunk allowed vlan add 10,30\n switchport trunk native vlan 20\n macro description switch\n !next command is internal.\n macro auto smartport dynamic_type switch\n!\ninterface gigabitethernet1/1/27\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/28\n spanning-tree disable\n switchport mode access\n switchport access vlan 20\n!\nexit",
+  "startup": "\nssd-control-start\nssd config\nssd file passphrase control unrestricted\nno ssd file integrity control\nssd-control-end cb0a3fdb1f3a1af4e4430033719968c0\n!\nvlan database\nvlan 10,20,30\nexit\nvoice vlan oui-table add 0001e3 Siemens_AG_phone________\nvoice vlan oui-table add 00036b Cisco_phone_____________\nvoice vlan oui-table add 00096e Avaya___________________\nvoice vlan oui-table add 000fe2 H3C_Aolynk______________\nvoice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone\nvoice vlan oui-table add 00d01e Pingtel_phone___________\nvoice vlan oui-table add 00e075 Polycom/Veritel_phone___\nvoice vlan oui-table add 00e0bb 3Com_phone______________\nhostname switch1\nusername cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15\nip ssh server\nip ssh password-auth\nsnmp-server server\nsnmp-server community findit ro view Default\n!\ninterface vlan 10\n ip address 10.0.3.5 255.0.0.0\n!\ninterface gigabitethernet1/1/1\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/2\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/3\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/4\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/5\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/6\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/7\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/8\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/9\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/10\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/11\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/12\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/13\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/14\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/15\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/16\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/17\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/18\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/19\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/20\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/21\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/22\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/23\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/24\n switchport mode access\n switchport access vlan 30\n!\ninterface gigabitethernet1/1/25\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/26\n spanning-tree disable\n spanning-tree link-type point-to-point\n switchport trunk allowed vlan add 10,30\n switchport trunk native vlan 20\n macro description switch\n !next command is internal.\n macro auto smartport dynamic_type switch\n!\ninterface gigabitethernet1/1/27\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/28\n spanning-tree disable\n switchport mode access\n switchport access vlan 20\n!\nexit"
+}
diff --git a/test/unit/mocked_data/test_get_config/SG500-28-K9/show_running_config.txt b/test/unit/mocked_data/test_get_config/SG500-28-K9/show_running_config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config/SG500-28-K9/show_running_config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/test_get_config/SG500-28-K9/show_startup_config.txt b/test/unit/mocked_data/test_get_config/SG500-28-K9/show_startup_config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config/SG500-28-K9/show_startup_config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..4b0f49d
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/expected_result.json
@@ -0,0 +1,5 @@
+{
+  "startup": "",
+  "running": "",
+  "candidate": ""
+}
diff --git a/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/show_running_config.txt b/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/show_running_config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/show_running_config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/show_startup_config.txt b/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/show_startup_config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config_filtered/SG500-28-K9/show_startup_config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..a59ddbb
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/expected_result.json
@@ -0,0 +1,5 @@
+{
+  "candidate": "",
+  "running": "\nssd-control-start\nssd config\nssd file passphrase control unrestricted\nno ssd file integrity control\nssd-control-end cb0a3fdb1f3a1af4e4430033719968c0\n!\nvlan database\nvlan 10,20,30\nexit\nvoice vlan oui-table add 0001e3 Siemens_AG_phone________\nvoice vlan oui-table add 00036b Cisco_phone_____________\nvoice vlan oui-table add 00096e Avaya___________________\nvoice vlan oui-table add 000fe2 H3C_Aolynk______________\nvoice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone\nvoice vlan oui-table add 00d01e Pingtel_phone___________\nvoice vlan oui-table add 00e075 Polycom/Veritel_phone___\nvoice vlan oui-table add 00e0bb 3Com_phone______________\nhostname switch1\nusername cisco password encrypted <removed> privilege 15\nip ssh server\nip ssh password-auth\nsnmp-server server\nsnmp-server community <removed>\n!\ninterface vlan 10\n ip address 10.0.3.5 255.0.0.0\n!\ninterface gigabitethernet1/1/1\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/2\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/3\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/4\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/5\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/6\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/7\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/8\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/9\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/10\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/11\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/12\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/13\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/14\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/15\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/16\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/17\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/18\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/19\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/20\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/21\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/22\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/23\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/24\n switchport mode access\n switchport access vlan 30\n!\ninterface gigabitethernet1/1/25\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/26\n spanning-tree disable\n spanning-tree link-type point-to-point\n switchport trunk allowed vlan add 10,30\n switchport trunk native vlan 20\n macro description switch\n !next command is internal.\n macro auto smartport dynamic_type switch\n!\ninterface gigabitethernet1/1/27\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/28\n spanning-tree disable\n switchport mode access\n switchport access vlan 20\n!\nexit",
+  "startup": "\nssd-control-start\nssd config\nssd file passphrase control unrestricted\nno ssd file integrity control\nssd-control-end cb0a3fdb1f3a1af4e4430033719968c0\n!\nvlan database\nvlan 10,20,30\nexit\nvoice vlan oui-table add 0001e3 Siemens_AG_phone________\nvoice vlan oui-table add 00036b Cisco_phone_____________\nvoice vlan oui-table add 00096e Avaya___________________\nvoice vlan oui-table add 000fe2 H3C_Aolynk______________\nvoice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone\nvoice vlan oui-table add 00d01e Pingtel_phone___________\nvoice vlan oui-table add 00e075 Polycom/Veritel_phone___\nvoice vlan oui-table add 00e0bb 3Com_phone______________\nhostname switch1\nusername cisco password encrypted <removed> privilege 15\nip ssh server\nip ssh password-auth\nsnmp-server server\nsnmp-server community <removed>\n!\ninterface vlan 10\n ip address 10.0.3.5 255.0.0.0\n!\ninterface gigabitethernet1/1/1\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/2\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/3\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/4\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/5\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/6\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/7\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/8\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/9\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/10\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/11\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/12\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/13\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/14\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/15\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/16\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/17\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/18\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/19\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/20\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/21\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/22\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/23\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/24\n switchport mode access\n switchport access vlan 30\n!\ninterface gigabitethernet1/1/25\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/26\n spanning-tree disable\n spanning-tree link-type point-to-point\n switchport trunk allowed vlan add 10,30\n switchport trunk native vlan 20\n macro description switch\n !next command is internal.\n macro auto smartport dynamic_type switch\n!\ninterface gigabitethernet1/1/27\n switchport mode access\n switchport access vlan 20\n!\ninterface gigabitethernet1/1/28\n spanning-tree disable\n switchport mode access\n switchport access vlan 20\n!\nexit"
+}
diff --git a/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/show_running_config.txt b/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/show_running_config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/show_running_config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/show_startup_config.txt b/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/show_startup_config.txt
new file mode 100644
index 0000000..a2c1765
--- /dev/null
+++ b/test/unit/mocked_data/test_get_config_sanitized/SG500-28-K9/show_startup_config.txt
@@ -0,0 +1,154 @@
+config-file-header
+switch1
+v1.3.5.58 / R750_NIK_1_35_647_358
+CLI v1.0
+set system mode switch queues-mode 4
+
+file SSD indicator encrypted
+@
+ssd-control-start
+ssd config
+ssd file passphrase control unrestricted
+no ssd file integrity control
+ssd-control-end cb0a3fdb1f3a1af4e4430033719968c0
+!
+vlan database
+vlan 10,20,30
+exit
+voice vlan oui-table add 0001e3 Siemens_AG_phone________
+voice vlan oui-table add 00036b Cisco_phone_____________
+voice vlan oui-table add 00096e Avaya___________________
+voice vlan oui-table add 000fe2 H3C_Aolynk______________
+voice vlan oui-table add 0060b9 Philips_and_NEC_AG_phone
+voice vlan oui-table add 00d01e Pingtel_phone___________
+voice vlan oui-table add 00e075 Polycom/Veritel_phone___
+voice vlan oui-table add 00e0bb 3Com_phone______________
+hostname switch1
+username cisco password encrypted dddd5d7b474d2c78ebbb833789c4bfd721edf4bf privilege 15
+ip ssh server
+ip ssh password-auth
+snmp-server server
+snmp-server community findit ro view Default
+!
+interface vlan 10
+ ip address 10.0.3.5 255.0.0.0
+!
+interface gigabitethernet1/1/1
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/2
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/3
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/4
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/5
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/6
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/7
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/8
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/9
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/10
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/11
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/12
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/13
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/14
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/15
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/16
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/17
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/18
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/19
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/20
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/21
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/22
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/23
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/24
+ switchport mode access
+ switchport access vlan 30
+!
+interface gigabitethernet1/1/25
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/26
+ spanning-tree disable
+ spanning-tree link-type point-to-point
+ switchport trunk allowed vlan add 10,30
+ switchport trunk native vlan 20
+ macro description switch
+ !next command is internal.
+ macro auto smartport dynamic_type switch
+!
+interface gigabitethernet1/1/27
+ switchport mode access
+ switchport access vlan 20
+!
+interface gigabitethernet1/1/28
+ spanning-tree disable
+ switchport mode access
+ switchport access vlan 20
+!
+exit
diff --git a/test/unit/mocked_data/test_get_facts/SG300-10/expected_result.json b/test/unit/mocked_data/test_get_facts/SG300-10/expected_result.json
deleted file mode 100644
index a254356..0000000
--- a/test/unit/mocked_data/test_get_facts/SG300-10/expected_result.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "fqdn": "switchaabbcc.",
-  "hostname": "switchaabbcc",
-  "interface_list": [
-    "gi1",
-    "gi2",
-    "gi3",
-    "gi4",
-    "gi5",
-    "gi6",
-    "gi7",
-    "gi8",
-    "gi9",
-    "gi10",
-    "Po1",
-    "Po2",
-    "Po3",
-    "Po4",
-    "Po5",
-    "Po6",
-    "Po7",
-    "Po8"
-  ],
-  "model": "SRW2008-K9",
-  "os_version": "1.4.11.5",
-  "serial_number": "AAAABBBBCCC",
-  "uptime": 607990,
-  "vendor": "Cisco"
-}
diff --git a/test/unit/mocked_data/test_get_facts/SG300-10/show_interface_status.txt b/test/unit/mocked_data/test_get_facts/SG300-10/show_interface_status.txt
deleted file mode 100644
index 8f9b9a9..0000000
--- a/test/unit/mocked_data/test_get_facts/SG300-10/show_interface_status.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-                                             Flow Link          Back   Mdix
-Port     Type         Duplex  Speed Neg      ctrl State       Pressure Mode
--------- ------------ ------  ----- -------- ---- ----------- -------- -------
-gi1      1G-Copper      --      --     --     --  Down           --     --
-gi2      1G-Copper      --      --     --     --  Down           --     --
-gi3      1G-Copper      --      --     --     --  Down           --     --
-gi4      1G-Copper      --      --     --     --  Down           --     --
-gi5      1G-Copper      --      --     --     --  Down           --     --
-gi6      1G-Copper      --      --     --     --  Down           --     --
-gi7      1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
-gi8      1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
-gi9      1G-Combo-C     --      --     --     --  Down           --     --
-gi10     1G-Combo-C     --      --     --     --  Down           --     --
-
-                                          Flow    Link
-Ch       Type    Duplex  Speed  Neg      control  State
--------- ------- ------  -----  -------- -------  -----------
-Po1         --     --      --      --       --    Not Present
-Po2         --     --      --      --       --    Not Present
-Po3         --     --      --      --       --    Not Present
-Po4         --     --      --      --       --    Not Present
-Po5         --     --      --      --       --    Not Present
-Po6         --     --      --      --       --    Not Present
-Po7         --     --      --      --       --    Not Present
-Po8         --     --      --      --       --    Not Present
diff --git a/test/unit/mocked_data/test_get_facts/SG300-10/show_inventory.txt b/test/unit/mocked_data/test_get_facts/SG300-10/show_inventory.txt
deleted file mode 100644
index d6b109e..0000000
--- a/test/unit/mocked_data/test_get_facts/SG300-10/show_inventory.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-
-NAME: "1"   DESCR: "SG300-10 10-Port Gigabit Managed Switch"
-PID: SRW2008-K9   VID: V05   SN: AAAABBBBCCC
-
diff --git a/test/unit/mocked_data/test_get_facts/SG300-10/show_system.txt b/test/unit/mocked_data/test_get_facts/SG300-10/show_system.txt
deleted file mode 100644
index 410f06d..0000000
--- a/test/unit/mocked_data/test_get_facts/SG300-10/show_system.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-System Description:                       SG300-10 10-Port Gigabit Managed Switch
-System Up Time (days,hour:min:sec):       07,00:53:10
-System Contact:
-System Name:                              switchaabbcc
-System Location:
-System MAC Address:                       50:f7:22:aa:bb:cc
-System Object ID:                         1.3.6.1.4.1.9.6.1.83.10.1
-
-Fans Status:                              N/A
-
diff --git a/test/unit/mocked_data/test_get_facts/SG300-10/show_version.txt b/test/unit/mocked_data/test_get_facts/SG300-10/show_version.txt
deleted file mode 100644
index 34c1bcf..0000000
--- a/test/unit/mocked_data/test_get_facts/SG300-10/show_version.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-SW version    1.4.11.5 ( date  08-Apr-2020 time  13:49:34 )
-Boot version    1.3.5.06 ( date  21-Jul-2013 time  15:12:10 )
-HW version    V05
diff --git a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/expected_result.json b/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/expected_result.json
deleted file mode 100644
index ffbbba5..0000000
--- a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/expected_result.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{ 
-  "fqdn" : "switch1.",
-  "hostname" : "switch1",
-  "interface_list" : [ 
-      "gi1/0/1",
-      "gi1/0/2",
-      "gi1/0/3",
-      "gi1/0/4",
-      "gi1/0/5",
-      "gi1/0/6",
-      "gi1/0/7",
-      "gi1/0/8",
-      "gi1/0/9",
-      "gi1/0/10",
-      "gi1/0/11",
-      "gi1/0/12",
-      "gi1/0/13",
-      "gi1/0/14",
-      "gi1/0/15",
-      "gi1/0/16",
-      "gi1/0/17",
-      "gi1/0/18",
-      "gi1/0/19",
-      "gi1/0/20",
-      "gi1/0/21",
-      "gi1/0/22",
-      "gi1/0/23",
-      "gi1/0/24",
-      "gi1/0/25",
-      "gi1/0/26",
-      "gi1/0/27",
-      "gi1/0/28",
-      "gi1/0/29",
-      "gi1/0/30",
-      "gi1/0/31",
-      "gi1/0/32",
-      "gi1/0/33",
-      "gi1/0/34",
-      "gi1/0/35",
-      "gi1/0/36",
-      "gi1/0/37",
-      "gi1/0/38",
-      "gi1/0/39",
-      "gi1/0/40",
-      "gi1/0/41",
-      "gi1/0/42",
-      "gi1/0/43",
-      "gi1/0/44",
-      "gi1/0/45",
-      "gi1/0/46",
-      "gi1/0/47",
-      "gi1/0/48",
-      "te1/0/1",
-      "te1/0/2",
-      "te1/0/3",
-      "te1/0/4",
-      "Po1",
-      "Po2",
-      "Po3",
-      "Po4",
-      "Po5",
-      "Po6",
-      "Po7",
-      "Po8"
-    ],
-  "model" : "SG350X-48P-K9",
-  "os_version" : "2.4.5.71",
-  "serial_number" : "AAA00000BBB",
-  "uptime" : 1232968,
-  "vendor" : "Cisco"
-}
diff --git a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_interface_status.txt b/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_interface_status.txt
deleted file mode 100644
index d37ffe1..0000000
--- a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_interface_status.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-                                             Flow Link          Back   Mdix
-Port     Type         Duplex  Speed Neg      ctrl State       Pressure Mode
--------- ------------ ------  ----- -------- ---- ----------- -------- -------
-gi1/0/1  1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/2  1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/3  1G-Copper    Full    1000  Enabled  Off  Up          Disabled On     
-gi1/0/4  1G-Copper    Full    1000  Enabled  Off  Up          Disabled On     
-gi1/0/5  1G-Copper    Full    1000  Enabled  Off  Up          Disabled On     
-gi1/0/6  1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/7  1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/8  1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/9  1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/10 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/11 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/12 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/13 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/14 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/15 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/16 1G-Copper    Full    100   Enabled  Off  Up          Disabled On     
-gi1/0/17 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/18 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/19 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/20 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/21 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/22 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/23 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/24 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/25 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/26 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On     
-gi1/0/27 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On     
-gi1/0/28 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/29 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/30 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/31 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/32 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/33 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/34 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/35 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/36 1G-Copper    Full    100   Enabled  Off  Up          Disabled Off    
-gi1/0/37 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/38 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/39 1G-Copper    Full    100   Enabled  Off  Up          Disabled On     
-gi1/0/40 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/41 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/42 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/43 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/44 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/45 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off    
-gi1/0/46 1G-Copper    Full    100   Enabled  Off  Up          Disabled Off    
-gi1/0/47 1G-Copper      --      --     --     --  Down           --     --    
-gi1/0/48 1G-Copper      --      --     --     --  Down           --     --    
-te1/0/1  10G-Combo-F  Full    1000  Disabled Off  Up          Disabled Off    
-te1/0/2  10G-Combo-C    --      --     --     --  Down           --     --    
-te1/0/3  10G-Fiber    Full    1000  Disabled Off  Up          Disabled Off    
-te1/0/4  10G-Fiber    Full    10000 Disabled Off  Up          Disabled Off    
-
-                                          Flow    Link        
-Ch       Type    Duplex  Speed  Neg      control  State       
--------- ------- ------  -----  -------- -------  ----------- 
-Po1         --     --      --      --       --    Not Present 
-Po2         --     --      --      --       --    Not Present 
-Po3         --     --      --      --       --    Not Present 
-Po4         --     --      --      --       --    Not Present 
-Po5         --     --      --      --       --    Not Present 
-Po6         --     --      --      --       --    Not Present 
-Po7         --     --      --      --       --    Not Present 
-Po8         --     --      --      --       --    Not Present 
diff --git a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_inventory.txt b/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_inventory.txt
deleted file mode 100644
index c9c82f5..0000000
--- a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_inventory.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-
-NAME: "TengigabitEthernet1/0/1"    DESCR: "SFP-1000Base-LX"    
-PID: GLC-LH-SMD    VID: V01     SN: IAB8888888          
-
-
-NAME: "1"   DESCR: "SG350X-48P 48-Port Gigabit PoE Stackable Managed Switch"   
-PID: SG350X-48P-K9   VID: V04   SN: AAA00000BBB   
-
-
-NAME: "TengigabitEthernet1/0/3"    DESCR: "SFP-1000Base-SX"    
-PID: SFP-1000-SX    VID: Information Unavailable    SN: A888666             
-
-
-NAME: "TengigabitEthernet1/0/4"    DESCR: "SFP-10Gbase-CX1"    
-PID: SFP-H10G-CU1M    VID: Information Unavailable    SN: AB0B000B0AB000B     
-
diff --git a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_system.txt b/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_system.txt
deleted file mode 100644
index 976f6c5..0000000
--- a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_system.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-System Description:                       SG350X-48P 48-Port Gigabit PoE Stackable Managed Switch
-System Up Time (days,hour:min:sec):       14,06:29:28
-System Contact:                           
-System Name:                              switch1
-System Location:                          SW location 
-System MAC Address:                       04:eb:40:e3:91:7f
-System Object ID:                         1.3.6.1.4.1.9.6.1.94.48.5
-
-Unit          Type          
----- ---------------------- 
- 1         SG350X-48P       
-
-
-Unit                Fans Status             
-----   -------------------------------------
- 1                FANs OK                
-
-Unit Temperature (Celsius)   Status   
----- --------------------- ---------- 
- 1            30               OK     
-
diff --git a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_version.txt b/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_version.txt
deleted file mode 100644
index 6433144..0000000
--- a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_version.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Active-image: flash://system/images/image_tesla_hybrid_2.4.5.71_release_cisco_signed.bin
-  Version: 2.4.5.71
-  MD5 Digest: 2dff89efdb2a0ec2f9a2c414ff7d401c
-  Date: 04-Nov-2018
-  Time: 19:46:16
-Inactive-image: flash://system/images/image1.bin
-  Version: 2.4.0.94
-  MD5 Digest: 6f5be217100f34929986f2e93dd2d5e9
-  Date: 31-May-2018
-  Time: 02:39:58
diff --git a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9/expected_result.json b/test/unit/mocked_data/test_get_facts/SG350X-48P-K9/expected_result.json
index ffbbba5..97fa3e3 100644
--- a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9/expected_result.json
+++ b/test/unit/mocked_data/test_get_facts/SG350X-48P-K9/expected_result.json
@@ -63,9 +63,9 @@
       "Po7",
       "Po8"
     ],
-  "model" : "SG350X-48P-K9",
+  "model" : "SG350X-48P 48-Port Gigabit PoE Stackable Managed Switch",
   "os_version" : "2.4.5.71",
-  "serial_number" : "AAA00000BBB",
+  "serial_number" : "AAA00000BBB   ",
   "uptime" : 1232968,
   "vendor" : "Cisco"
 }
diff --git a/test/unit/mocked_data/test_get_facts/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_facts/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..11240c8
--- /dev/null
+++ b/test/unit/mocked_data/test_get_facts/SG500-28-K9/expected_result.json
@@ -0,0 +1,69 @@
+{ 
+  "fqdn" : "switch1.",
+  "hostname" : "switch1",
+  "interface_list" : [ 
+      "gi1/1/1",
+      "gi1/1/2",
+      "gi1/1/3",
+      "gi1/1/4",
+      "gi1/1/5",
+      "gi1/1/6",
+      "gi1/1/7",
+      "gi1/1/8",
+      "gi1/1/9",
+      "gi1/1/10",
+      "gi1/1/11",
+      "gi1/1/12",
+      "gi1/1/13",
+      "gi1/1/14",
+      "gi1/1/15",
+      "gi1/1/16",
+      "gi1/1/17",
+      "gi1/1/18",
+      "gi1/1/19",
+      "gi1/1/20",
+      "gi1/1/21",
+      "gi1/1/22",
+      "gi1/1/23",
+      "gi1/1/24",
+      "gi1/1/25",
+      "gi1/1/26",
+      "Po1",
+      "Po2",
+      "Po3",
+      "Po4",
+      "Po5",
+      "Po6",
+      "Po7",
+      "Po8",
+      "Po9",
+      "Po10",
+      "Po11",
+      "Po12",
+      "Po13",
+      "Po14",
+      "Po15",
+      "Po16",
+      "Po17",
+      "Po18",
+      "Po19",
+      "Po20",
+      "Po21",
+      "Po22",
+      "Po23",
+      "Po24",
+      "Po25",
+      "Po26",
+      "Po27",
+      "Po28",
+      "Po29",
+      "Po30",
+      "Po31",
+      "Po32"
+    ],
+  "model" : "SG500-28",
+  "os_version" : "1.4.11.5",
+  "serial_number" : "A1B2C3F4G5",
+  "uptime" : 1232968,
+  "vendor" : "Cisco"
+}
diff --git a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_hosts.txt b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_hosts.txt
similarity index 92%
rename from test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_hosts.txt
rename to test/unit/mocked_data/test_get_facts/SG500-28-K9/show_hosts.txt
index 438eec4..4813cc2 100644
--- a/test/unit/mocked_data/test_get_facts/SG350X-48P-K9-twisted_inventory/show_hosts.txt
+++ b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_hosts.txt
@@ -7,15 +7,15 @@ Domain Polling Interval: 8 seconds
 
 Default Domain Table
 
-                   Domain                    Source  Interface Preference 
--------------------------------------------- ------- --------- ---------- 
+                   Domain                    Source  Interface Preference
+-------------------------------------------- ------- --------- ----------
 Domain name is not configured
 
 
 Name Server Table
 
-                 IP Address                  Source  Interface Preference 
--------------------------------------------- ------- --------- ---------- 
+                 IP Address                  Source  Interface Preference
+-------------------------------------------- ------- --------- ----------
 Name server is not configured
 
 
@@ -25,9 +25,8 @@ STA - Static, DYN - Dynamic
 OK - Okay, NE - Negative Cache, ?? - No Response
 
                                                                Remaining
-          Host                   Addresses         Type State     TTL     
-------------------------- ------------------------ ---- ------ ---------- 
+          Host                   Addresses         Type State     TTL
+------------------------- ------------------------ ---- ------ ----------
 No hostname is mapped to an IP address
 
 
-
diff --git a/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_interface_status.txt b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_interface_status.txt
new file mode 100644
index 0000000..990d901
--- /dev/null
+++ b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_interface_status.txt
@@ -0,0 +1,65 @@
+                                             Flow Link          Back   Mdix
+Port     Type         Duplex  Speed Neg      ctrl State       Pressure Mode
+-------- ------------ ------  ----- -------- ---- ----------- -------- -------
+gi1/1/1  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/2  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/3  1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
+gi1/1/4  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/5  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/6  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/7  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/8  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/9  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/10 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/11 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/12 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
+gi1/1/13 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/14 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
+gi1/1/15 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
+gi1/1/16 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/17 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/18 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/19 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/20 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/21 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/22 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/23 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/24 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/25 1G-Combo-C     --      --     --     --  Down           --     --
+gi1/1/26 1G-Combo-F   Full    1000  Disabled Off  Up          Disabled Off
+
+                                          Flow    Link
+Ch       Type    Duplex  Speed  Neg      control  State
+-------- ------- ------  -----  -------- -------  -----------
+Po1         --     --      --      --       --    Not Present
+Po2         --     --      --      --       --    Not Present
+Po3         --     --      --      --       --    Not Present
+Po4         --     --      --      --       --    Not Present
+Po5         --     --      --      --       --    Not Present
+Po6         --     --      --      --       --    Not Present
+Po7         --     --      --      --       --    Not Present
+Po8         --     --      --      --       --    Not Present
+Po9         --     --      --      --       --    Not Present
+Po10        --     --      --      --       --    Not Present
+Po11        --     --      --      --       --    Not Present
+Po12        --     --      --      --       --    Not Present
+Po13        --     --      --      --       --    Not Present
+Po14        --     --      --      --       --    Not Present
+Po15        --     --      --      --       --    Not Present
+Po16        --     --      --      --       --    Not Present
+Po17        --     --      --      --       --    Not Present
+Po18        --     --      --      --       --    Not Present
+Po19        --     --      --      --       --    Not Present
+Po20        --     --      --      --       --    Not Present
+Po21        --     --      --      --       --    Not Present
+Po22        --     --      --      --       --    Not Present
+Po23        --     --      --      --       --    Not Present
+Po24        --     --      --      --       --    Not Present
+Po25        --     --      --      --       --    Not Present
+Po26        --     --      --      --       --    Not Present
+Po27        --     --      --      --       --    Not Present
+Po28        --     --      --      --       --    Not Present
+Po29        --     --      --      --       --    Not Present
+Po30        --     --      --      --       --    Not Present
+Po31        --     --      --      --       --    Not Present
+Po32        --     --      --      --       --    Not Present
diff --git a/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_inventory.txt b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_inventory.txt
new file mode 100644
index 0000000..ae69ee6
--- /dev/null
+++ b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_inventory.txt
@@ -0,0 +1,3 @@
+
+NAME: "1"   DESCR: "SG500-28 28-Port Gigabit Stackable Managed Switch"
+PID: SG500-28-K9   VID: V02   SN: A1B2C3F4G5
diff --git a/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_system.txt b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_system.txt
new file mode 100644
index 0000000..a921d5c
--- /dev/null
+++ b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_system.txt
@@ -0,0 +1,18 @@
+
+Unit          Type
+---- ----------------------
+ 1          SG500-28
+
+Unit   FAN
+       Status
+----   ---------
+ 1       N/A
+
+Unit   Temperature (Celsius)   Temperature Sensor Status
+---- ------------------------- -------------------------
+ 1                                        N/A
+
+
+Unit     Up time
+---- ---------------
+ 1     00,00:21:27
diff --git a/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_version.txt b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_version.txt
new file mode 100644
index 0000000..8c3e2f9
--- /dev/null
+++ b/test/unit/mocked_data/test_get_facts/SG500-28-K9/show_version.txt
@@ -0,0 +1,4 @@
+
+       Unit             SW version         Boot version         HW version
+------------------- ------------------- ------------------- -------------------
+         1               1.4.11.5            1.3.5.06               V02
diff --git a/test/unit/mocked_data/test_get_interfaces/SG300-10/expected_result.json b/test/unit/mocked_data/test_get_interfaces/SG300-10/expected_result.json
deleted file mode 100644
index 24cd62c..0000000
--- a/test/unit/mocked_data/test_get_interfaces/SG300-10/expected_result.json
+++ /dev/null
@@ -1,92 +0,0 @@
-{
-  "gi1": {
-    "description": "test1",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  },
-  "gi10": {
-    "description": "",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  },
-  "gi2": {
-    "description": "test2",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  },
-  "gi3": {
-    "description": "",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  },
-  "gi4": {
-    "description": "",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  },
-  "gi5": {
-    "description": "test5",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  },
-  "gi6": {
-    "description": "",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  },
-  "gi7": {
-    "description": "",
-    "is_enabled": true,
-    "is_up": true,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 1000
-  },
-  "gi8": {
-    "description": "",
-    "is_enabled": true,
-    "is_up": true,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 1000
-  },
-  "gi9": {
-    "description": "",
-    "is_enabled": false,
-    "is_up": false,
-    "last_flapped": -1.0,
-    "mac_address": "50:F7:22:AA:BB:CC",
-    "mtu": 1518,
-    "speed": 0
-  }
-}
diff --git a/test/unit/mocked_data/test_get_interfaces/SG300-10/show_interfaces_description.txt b/test/unit/mocked_data/test_get_interfaces/SG300-10/show_interfaces_description.txt
deleted file mode 100644
index 4919a57..0000000
--- a/test/unit/mocked_data/test_get_interfaces/SG300-10/show_interfaces_description.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Port      Description
--------   -----------
-gi1       test1
-gi2       test2
-gi3
-gi4
-gi5       test5
-gi6
-gi7
-gi8
-gi9
-gi10
-
-Ch        Description
--------   -----------
-Po1
-Po2
-Po3
-Po4
-Po5
-Po6
-Po7
-Po8
diff --git a/test/unit/mocked_data/test_get_interfaces/SG300-10/show_interfaces_status.txt b/test/unit/mocked_data/test_get_interfaces/SG300-10/show_interfaces_status.txt
deleted file mode 100644
index 8f9b9a9..0000000
--- a/test/unit/mocked_data/test_get_interfaces/SG300-10/show_interfaces_status.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-                                             Flow Link          Back   Mdix
-Port     Type         Duplex  Speed Neg      ctrl State       Pressure Mode
--------- ------------ ------  ----- -------- ---- ----------- -------- -------
-gi1      1G-Copper      --      --     --     --  Down           --     --
-gi2      1G-Copper      --      --     --     --  Down           --     --
-gi3      1G-Copper      --      --     --     --  Down           --     --
-gi4      1G-Copper      --      --     --     --  Down           --     --
-gi5      1G-Copper      --      --     --     --  Down           --     --
-gi6      1G-Copper      --      --     --     --  Down           --     --
-gi7      1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
-gi8      1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
-gi9      1G-Combo-C     --      --     --     --  Down           --     --
-gi10     1G-Combo-C     --      --     --     --  Down           --     --
-
-                                          Flow    Link
-Ch       Type    Duplex  Speed  Neg      control  State
--------- ------- ------  -----  -------- -------  -----------
-Po1         --     --      --      --       --    Not Present
-Po2         --     --      --      --       --    Not Present
-Po3         --     --      --      --       --    Not Present
-Po4         --     --      --      --       --    Not Present
-Po5         --     --      --      --       --    Not Present
-Po6         --     --      --      --       --    Not Present
-Po7         --     --      --      --       --    Not Present
-Po8         --     --      --      --       --    Not Present
diff --git a/test/unit/mocked_data/test_get_interfaces/SG300-10/show_lldp_local_gi1.txt b/test/unit/mocked_data/test_get_interfaces/SG300-10/show_lldp_local_gi1.txt
deleted file mode 100644
index 4ae9b8e..0000000
--- a/test/unit/mocked_data/test_get_interfaces/SG300-10/show_lldp_local_gi1.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-Device ID: 50:f7:22:aa:bb:cc
-Port ID: gi1
-Capabilities: Bridge
-System Name: switchaabbcc
-
-802.3 EEE:
-
-17
-17
-17
-17
-
-
-802.1 PVID: 1
-802.1 PPVID:
-802.1 VLAN:
-802.1 Protocol:
-
diff --git a/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..80f7864
--- /dev/null
+++ b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/expected_result.json
@@ -0,0 +1,236 @@
+{ 
+  "gi1/1/1" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/2" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/3" : { 
+      "description" : "",
+      "is_enabled" : true,
+      "is_up" : true,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 1000
+    },
+  "gi1/1/4" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/5" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/6" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/7" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/8" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/9" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/10" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/11" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/12" : { 
+      "description" : "",
+      "is_enabled" : true,
+      "is_up" : true,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 1000
+    },
+  "gi1/1/13" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/14" : { 
+      "description" : "",
+      "is_enabled" : true,
+      "is_up" : true,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 1000
+    },
+  "gi1/1/15" : { 
+      "description" : "",
+      "is_enabled" : true,
+      "is_up" : true,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 1000
+    },
+  "gi1/1/16" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/17" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/18" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/19" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/20" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/21" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/22" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/23" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/24" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/25" : { 
+      "description" : "",
+      "is_enabled" : false,
+      "is_up" : false,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 0
+    },
+  "gi1/1/26" : { 
+      "description" : "",
+      "is_enabled" : true,
+      "is_up" : true,
+      "last_flapped" : -1.0,
+      "mac_address" : "0C:68:03:9C:39:C1",
+      "mtu" : 1518,
+      "speed" : 1000
+    }
+}
diff --git a/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_interfaces_description.txt b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_interfaces_description.txt
new file mode 100644
index 0000000..5d5477b
--- /dev/null
+++ b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_interfaces_description.txt
@@ -0,0 +1,63 @@
+Port      Description
+-------   -----------
+gi1/1/1
+gi1/1/2
+gi1/1/3
+gi1/1/4
+gi1/1/5
+gi1/1/6
+gi1/1/7
+gi1/1/8
+gi1/1/9
+gi1/1/10
+gi1/1/11
+gi1/1/12
+gi1/1/13
+gi1/1/14
+gi1/1/15
+gi1/1/16
+gi1/1/17
+gi1/1/18
+gi1/1/19
+gi1/1/20
+gi1/1/21
+gi1/1/22
+gi1/1/23
+gi1/1/24
+gi1/1/25
+gi1/1/26
+
+Ch        Description
+-------   -----------
+Po1
+Po2
+Po3
+Po4
+Po5
+Po6
+Po7
+Po8
+Po9
+Po10
+Po11
+Po12
+Po13
+Po14
+Po15
+Po16
+Po17
+Po18
+Po19
+Po20
+Po21
+Po22
+Po23
+Po24
+Po25
+Po26
+Po27
+Po28
+Po29
+Po30
+Po31
+Po32
diff --git a/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_interfaces_status.txt b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_interfaces_status.txt
new file mode 100644
index 0000000..990d901
--- /dev/null
+++ b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_interfaces_status.txt
@@ -0,0 +1,65 @@
+                                             Flow Link          Back   Mdix
+Port     Type         Duplex  Speed Neg      ctrl State       Pressure Mode
+-------- ------------ ------  ----- -------- ---- ----------- -------- -------
+gi1/1/1  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/2  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/3  1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
+gi1/1/4  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/5  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/6  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/7  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/8  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/9  1G-Copper      --      --     --     --  Down           --     --
+gi1/1/10 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/11 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/12 1G-Copper    Full    1000  Enabled  Off  Up          Disabled Off
+gi1/1/13 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/14 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
+gi1/1/15 1G-Copper    Full    1000  Enabled  Off  Up          Disabled On
+gi1/1/16 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/17 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/18 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/19 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/20 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/21 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/22 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/23 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/24 1G-Copper      --      --     --     --  Down           --     --
+gi1/1/25 1G-Combo-C     --      --     --     --  Down           --     --
+gi1/1/26 1G-Combo-F   Full    1000  Disabled Off  Up          Disabled Off
+
+                                          Flow    Link
+Ch       Type    Duplex  Speed  Neg      control  State
+-------- ------- ------  -----  -------- -------  -----------
+Po1         --     --      --      --       --    Not Present
+Po2         --     --      --      --       --    Not Present
+Po3         --     --      --      --       --    Not Present
+Po4         --     --      --      --       --    Not Present
+Po5         --     --      --      --       --    Not Present
+Po6         --     --      --      --       --    Not Present
+Po7         --     --      --      --       --    Not Present
+Po8         --     --      --      --       --    Not Present
+Po9         --     --      --      --       --    Not Present
+Po10        --     --      --      --       --    Not Present
+Po11        --     --      --      --       --    Not Present
+Po12        --     --      --      --       --    Not Present
+Po13        --     --      --      --       --    Not Present
+Po14        --     --      --      --       --    Not Present
+Po15        --     --      --      --       --    Not Present
+Po16        --     --      --      --       --    Not Present
+Po17        --     --      --      --       --    Not Present
+Po18        --     --      --      --       --    Not Present
+Po19        --     --      --      --       --    Not Present
+Po20        --     --      --      --       --    Not Present
+Po21        --     --      --      --       --    Not Present
+Po22        --     --      --      --       --    Not Present
+Po23        --     --      --      --       --    Not Present
+Po24        --     --      --      --       --    Not Present
+Po25        --     --      --      --       --    Not Present
+Po26        --     --      --      --       --    Not Present
+Po27        --     --      --      --       --    Not Present
+Po28        --     --      --      --       --    Not Present
+Po29        --     --      --      --       --    Not Present
+Po30        --     --      --      --       --    Not Present
+Po31        --     --      --      --       --    Not Present
+Po32        --     --      --      --       --    Not Present
diff --git a/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_ip_int.txt b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_ip_int.txt
new file mode 100644
index 0000000..1293d54
--- /dev/null
+++ b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_ip_int.txt
@@ -0,0 +1,10 @@
+
+
+    IP Address         I/F      I/F Status      Type       Status
+                                admin/oper
+------------------- ---------- ------------- ----------- -----------
+10.0.3.5/8          vlan 202   UP/UP         Static      Valid
+
+
+  Gateway IP Address      Type
+----------------------- --------
diff --git a/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_lldp_local_gi1_1_1.txt b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_lldp_local_gi1_1_1.txt
new file mode 100644
index 0000000..6bc6a35
--- /dev/null
+++ b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_lldp_local_gi1_1_1.txt
@@ -0,0 +1,11 @@
+
+Device ID: 0c:68:03:9c:39:c1
+Port ID: gi1/1/1
+Capabilities: Bridge
+System Name: switch1
+
+
+802.1 PVID: 488
+802.1 PPVID:
+802.1 VLAN:
+802.1 Protocol:
diff --git a/test/unit/mocked_data/test_get_interfaces/SG300-10/show_ports_jumbo_frame.txt b/test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_ports_jumbo_frame.txt
similarity index 100%
rename from test/unit/mocked_data/test_get_interfaces/SG300-10/show_ports_jumbo_frame.txt
rename to test/unit/mocked_data/test_get_interfaces/SG500-28-K9/show_ports_jumbo_frame.txt
diff --git a/test/unit/mocked_data/test_get_interfaces_ip/SG300-10/expected_result.json b/test/unit/mocked_data/test_get_interfaces_ip/SG300-10/expected_result.json
deleted file mode 100644
index 143a01d..0000000
--- a/test/unit/mocked_data/test_get_interfaces_ip/SG300-10/expected_result.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{ "vlan 1" : { "ipv4" : { "192.168.1.254" : { "prefix_length" : 24 } } } }
diff --git a/test/unit/mocked_data/test_get_interfaces_ip/SG300-10/show_ip_int.txt b/test/unit/mocked_data/test_get_interfaces_ip/SG300-10/show_ip_int.txt
deleted file mode 100644
index a5856f3..0000000
--- a/test/unit/mocked_data/test_get_interfaces_ip/SG300-10/show_ip_int.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-    IP Address        I/F    I/F Status  Type   Redirect Status
-                             admin/oper
------------------- --------- ---------- ------- -------- ------
-0.0.0.0/32         vlan 1    UP/UP      DHCP    enable   Not
-                                                         receiv
-                                                         ed
-192.168.1.254/24   vlan 1    UP/UP      Default enable   Valid
-
-
-  Gateway IP Address        Activity status       Type
------------------------ ----------------------- --------
-
diff --git a/test/unit/mocked_data/test_get_interfaces_ip/SG350X-48P-K9/expected_result.json b/test/unit/mocked_data/test_get_interfaces_ip/SG350X-48P-K9/expected_result.json
index 49ac0f8..749b0a4 100644
--- a/test/unit/mocked_data/test_get_interfaces_ip/SG350X-48P-K9/expected_result.json
+++ b/test/unit/mocked_data/test_get_interfaces_ip/SG350X-48P-K9/expected_result.json
@@ -1,4 +1,1 @@
-{ 
-  "vlan 1" : { "ipv4" : { "198.51.100.2" : { "prefix_length" : 24 } } },
-  "vlan 852" : { "ipv4" : { "198.51.100.1" : { "prefix_length" : 16 } } }
-}
+{"vlan": {"ipv4": {"198.51.100.2": {"prefix_length": 24}}}}
diff --git a/test/unit/mocked_data/test_get_interfaces_ip/SG500-28-K9/expected_result.json b/test/unit/mocked_data/test_get_interfaces_ip/SG500-28-K9/expected_result.json
new file mode 100644
index 0000000..0d90d50
--- /dev/null
+++ b/test/unit/mocked_data/test_get_interfaces_ip/SG500-28-K9/expected_result.json
@@ -0,0 +1,1 @@
+{"vlan 202": {"ipv4": {"10.0.3.5": {"prefix_length": 8}}}}
diff --git a/test/unit/mocked_data/test_get_interfaces_ip/SG500-28-K9/show_ip_int.txt b/test/unit/mocked_data/test_get_interfaces_ip/SG500-28-K9/show_ip_int.txt
new file mode 100644
index 0000000..1293d54
--- /dev/null
+++ b/test/unit/mocked_data/test_get_interfaces_ip/SG500-28-K9/show_ip_int.txt
@@ -0,0 +1,10 @@
+
+
+    IP Address         I/F      I/F Status      Type       Status
+                                admin/oper
+------------------- ---------- ------------- ----------- -----------
+10.0.3.5/8          vlan 202   UP/UP         Static      Valid
+
+
+  Gateway IP Address      Type
+----------------------- --------
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10-long_portid/expected_result.json b/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10-long_portid/expected_result.json
deleted file mode 100644
index b3849df..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10-long_portid/expected_result.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "gi7": [
-    {
-      "hostname": "switchcffeedd",
-      "port": "gi8"
-    }
-  ],
-  "gi8": [
-    {
-      "hostname": "test-pc1",
-      "port": "9c:eb:e8:c3:b2:a1"
-    }
-  ]
-}
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10-long_portid/show_lldp_neighbors.txt b/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10-long_portid/show_lldp_neighbors.txt
deleted file mode 100644
index 31fc656..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10-long_portid/show_lldp_neighbors.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-
-System capability legend:
-B - Bridge; R - Router; W - Wlan Access Point; T - telephone;
-D - DOCSIS Cable Device; H - Host; r - Repeater;
-TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other
-
-  Port        Device ID        Port ID       System Name    Capabilities  TTL
---------- ----------------- ------------- ----------------- ------------ -----
-gi7       00:a5:bf:ff:ee:dd      gi8        switchcffeedd        B, R      96
-gi8       f2:18:98:aa:bb:cc 9c:eb:e8:c3:b      test-pc1          B, W      118
-                            2:a1
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10/expected_result.json b/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10/expected_result.json
deleted file mode 100644
index 707e144..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10/expected_result.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "gi7": [
-    {
-      "hostname": "switchcffeedd",
-      "port": "gi8"
-    }
-  ],
-  "gi8": [
-    {
-      "hostname": "test-pc1",
-      "port": "en1"
-    }
-  ]
-}
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10/show_lldp_neighbors.txt b/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10/show_lldp_neighbors.txt
deleted file mode 100644
index 355152c..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG300-10/show_lldp_neighbors.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-System capability legend:
-B - Bridge; R - Router; W - Wlan Access Point; T - telephone;
-D - DOCSIS Cable Device; H - Host; r - Repeater;
-TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other
-
-  Port        Device ID        Port ID       System Name    Capabilities  TTL
---------- ----------------- ------------- ----------------- ------------ -----
-gi7       00:a5:bf:ff:ee:dd      gi8        switchcffeedd        B, R      96
-gi8       f2:18:98:aa:bb:cc      en1           test-pc1          B, W      118
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9-long_systemname/expected_result.json b/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9-long_systemname/expected_result.json
index 591a9c5..942f033 100644
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9-long_systemname/expected_result.json
+++ b/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9-long_systemname/expected_result.json
@@ -4,7 +4,7 @@
         "port" : "74:ac:aa:ff:1a:5f"
       } ],
   "gi1/0/35" : [ { 
-        "hostname" : "",
+        "hostname" : "O",
         "port" : "34:e6:aa:ff:53:a8"
       } ],
   "te1/0/1" : [ { 
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9/expected_result.json b/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9/expected_result.json
index 34b31f9..51fea79 100644
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9/expected_result.json
+++ b/test/unit/mocked_data/test_get_lldp_neighbors/SG350X-48P-K9/expected_result.json
@@ -4,7 +4,7 @@
         "port" : "74:ac:aa:ff:1a:5f"
       } ],
   "gi1/0/35" : [ { 
-        "hostname" : "",
+        "hostname" : "O",
         "port" : "34:e6:aa:ff:53:a8"
       } ],
   "te1/0/1" : [ { 
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_and_sysname/expected_result.json b/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_and_sysname/expected_result.json
deleted file mode 100644
index 5683619..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_and_sysname/expected_result.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{ 
-  "gi7" : [ { 
-        "hostname" : "switchc23cf0",
-        "port" : "gi8"
-      } ],
-  "gi8" : [ { 
-        "hostname" : "iai-sti0067.example.net",
-        "port" : "9c:eb:e8:52:bd:7c"
-      } ]
-}
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_and_sysname/show_lldp_neighbors.txt b/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_and_sysname/show_lldp_neighbors.txt
deleted file mode 100644
index 7da8dbe..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_and_sysname/show_lldp_neighbors.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-
-System capability legend:
-B - Bridge; R - Router; W - Wlan Access Point; T - telephone;
-D - DOCSIS Cable Device; H - Host; r - Repeater;
-TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other
-
-  Port        Device ID        Port ID       System Name    Capabilities  TTL
---------- ----------------- ------------- ----------------- ------------ -----
-gi7       00:a5:bf:c2:3c:f0      gi8        switchc23cf0        B, R      91
-gi8       f2:18:98:43:be:9b 9c:eb:e8:52:b iai-sti0067.examp     B, W      115
-                            d:7c          le.net
-
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_id/expected_result.json b/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_id/expected_result.json
deleted file mode 100644
index 8df5b44..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_id/expected_result.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"gi7": [{"hostname": "switchc23cf0", "port": "gi8"}], "gi8": [{"hostname": "iai-sti006", "port": "9c:eb:e8:52:bd:7c"}]}
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_id/show_lldp_neighbors.txt b/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_id/show_lldp_neighbors.txt
deleted file mode 100644
index cc12440..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors/SG3xx-long_port_id/show_lldp_neighbors.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-
-System capability legend:
-B - Bridge; R - Router; W - Wlan Access Point; T - telephone;
-D - DOCSIS Cable Device; H - Host; r - Repeater;
-TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other
-
-  Port        Device ID        Port ID       System Name    Capabilities  TTL
---------- ----------------- ------------- ----------------- ------------ -----
-gi7       00:a5:bf:c2:3c:f0      gi8        switchc23cf0        B, R      91
-gi8       f2:18:98:43:be:9b 9c:eb:e8:52:b    iai-sti006         B, W      115
-                            d:7c
-
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/expected_result.json b/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/expected_result.json
deleted file mode 100644
index eae9be1..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/expected_result.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "gi7": [
-    {
-      "parent_interface": "N/A",
-      "remote_chassis_id": "00:a5:bf:ff:ee:dd",
-      "remote_port": "gi8",
-      "remote_port_description": "",
-      "remote_system_capab": [
-        "B",
-        "R"
-      ],
-      "remote_system_description": "",
-      "remote_system_enable_capab": [
-        "B",
-        "R"
-      ],
-      "remote_system_name": "switchcffeedd"
-    }
-  ]
-}
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/show_lldp_neighbors.txt b/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/show_lldp_neighbors.txt
deleted file mode 100644
index e62ef21..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/show_lldp_neighbors.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-System capability legend:
-B - Bridge; R - Router; W - Wlan Access Point; T - telephone;
-D - DOCSIS Cable Device; H - Host; r - Repeater;
-TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other
-
-  Port        Device ID        Port ID       System Name    Capabilities  TTL
---------- ----------------- ------------- ----------------- ------------ -----
-gi7       00:a5:bf:ff:ee:dd      gi8        switchcffeedd        B, R      96
diff --git a/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/show_lldp_neighbors_gi7.txt b/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/show_lldp_neighbors_gi7.txt
deleted file mode 100644
index a62ba0b..0000000
--- a/test/unit/mocked_data/test_get_lldp_neighbors_detail/SG300-10/show_lldp_neighbors_gi7.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-Device ID: 00:a5:bf:ff:ee:dd
-Port ID: gi8
-Capabilities: Bridge, Router
-System Name: switchcffeedd
-System description:
-Port description:
-Management Address: 192.168.1.253
-Management Address: 254.128.0.0.0.0
-Time To Live: 118
-
-
-802.3 EEE:
-
-17
-17
-17
-17
-
-
-802.1 PVID: 1
-802.1 PPVID:
-802.1 VLAN:
-802.1 Protocol:
-
-
-
diff --git a/test/unit/mocked_data/test_get_ntp_servers/SG300-10/expected_result.json b/test/unit/mocked_data/test_get_ntp_servers/SG300-10/expected_result.json
deleted file mode 100644
index fcf38c1..0000000
--- a/test/unit/mocked_data/test_get_ntp_servers/SG300-10/expected_result.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "1.2.3.4": {}
-}
diff --git a/test/unit/mocked_data/test_get_ntp_servers/SG300-10/show_sntp_status.txt b/test/unit/mocked_data/test_get_ntp_servers/SG300-10/show_sntp_status.txt
deleted file mode 100644
index 39e82cd..0000000
--- a/test/unit/mocked_data/test_get_ntp_servers/SG300-10/show_sntp_status.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Clock is unsynchronized
-
-Unicast servers:
-
-Server            : 1.2.3.4
-  Source          : Static
-  Stratum         : 255
-  Status          : unknown
-  Last Response   : 00:00:00.0  Jan 1 1900
-  Offset          : 0.0000000 mSec
-  Delay           : 0 mSec
-
-
-
-Anycast server:
-
-
-
-Broadcast:
-
-