@@ -31,8 +31,9 @@ def setUp(self):
3131 """Create a superuser and token for API calls."""
3232 self .site1 = Site .objects .create (name = "USWEST" , slug = "uswest" )
3333
34- def test_ensure_device_manufacturer_missing (self ):
34+ def test_ensure_device_manufacturer_strict_missing (self ):
3535 """Verify ensure_device_manufacturer function when Manufacturer object is not present."""
36+ PLUGIN_SETTINGS ["object_match_strategy" ] = "strict"
3637 onboarding_kwargs = {
3738 "netdev_hostname" : "device1" ,
3839 "netdev_nb_role_slug" : PLUGIN_SETTINGS ["default_device_role" ],
@@ -52,8 +53,54 @@ def test_ensure_device_manufacturer_missing(self):
5253 self .assertIsInstance (nbk .nb_manufacturer , Manufacturer )
5354 self .assertEqual (nbk .nb_manufacturer .slug , slugify (onboarding_kwargs ["netdev_vendor" ]))
5455
55- def test_ensure_device_type_missing (self ):
56+ def test_ensure_device_manufacturer_loose_missing (self ):
57+ """Verify ensure_device_manufacturer function when Manufacturer object is not present."""
58+ PLUGIN_SETTINGS ["object_match_strategy" ] = "loose"
59+ onboarding_kwargs = {
60+ "netdev_hostname" : "device1" ,
61+ "netdev_nb_role_slug" : PLUGIN_SETTINGS ["default_device_role" ],
62+ "netdev_vendor" : "Cisco" ,
63+ "netdev_model" : "CSR1000v" ,
64+ "netdev_nb_site_slug" : self .site1 .slug ,
65+ }
66+
67+ nbk = NetboxKeeper (** onboarding_kwargs )
68+
69+ with self .assertRaises (OnboardException ) as exc_info :
70+ nbk .ensure_device_manufacturer (create_manufacturer = False )
71+ self .assertEqual (exc_info .exception .message , "ERROR manufacturer not found: Cisco" )
72+ self .assertEqual (exc_info .exception .reason , "fail-config" )
73+
74+ nbk .ensure_device_manufacturer (create_manufacturer = True )
75+ self .assertIsInstance (nbk .nb_manufacturer , Manufacturer )
76+ self .assertEqual (nbk .nb_manufacturer .slug , slugify (onboarding_kwargs ["netdev_vendor" ]))
77+
78+ def test_ensure_device_type_strict_missing (self ):
79+ """Verify ensure_device_type function when DeviceType object is not present."""
80+ PLUGIN_SETTINGS ["object_match_strategy" ] = "strict"
81+ onboarding_kwargs = {
82+ "netdev_hostname" : "device1" ,
83+ "netdev_nb_role_slug" : PLUGIN_SETTINGS ["default_device_role" ],
84+ "netdev_vendor" : "Cisco" ,
85+ "netdev_model" : "CSR1000v" ,
86+ "netdev_nb_site_slug" : self .site1 .slug ,
87+ }
88+
89+ nbk = NetboxKeeper (** onboarding_kwargs )
90+ nbk .nb_manufacturer = Manufacturer .objects .create (name = "Cisco" , slug = "cisco" )
91+
92+ with self .assertRaises (OnboardException ) as exc_info :
93+ nbk .ensure_device_type (create_device_type = False )
94+ self .assertEqual (exc_info .exception .message , "ERROR device type not found: CSR1000v" )
95+ self .assertEqual (exc_info .exception .reason , "fail-config" )
96+
97+ nbk .ensure_device_type (create_device_type = True )
98+ self .assertIsInstance (nbk .nb_device_type , DeviceType )
99+ self .assertEqual (nbk .nb_device_type .slug , slugify (onboarding_kwargs ["netdev_model" ]))
100+
101+ def test_ensure_device_type_loose_missing (self ):
56102 """Verify ensure_device_type function when DeviceType object is not present."""
103+ PLUGIN_SETTINGS ["object_match_strategy" ] = "loose"
57104 onboarding_kwargs = {
58105 "netdev_hostname" : "device1" ,
59106 "netdev_nb_role_slug" : PLUGIN_SETTINGS ["default_device_role" ],
@@ -74,8 +121,30 @@ def test_ensure_device_type_missing(self):
74121 self .assertIsInstance (nbk .nb_device_type , DeviceType )
75122 self .assertEqual (nbk .nb_device_type .slug , slugify (onboarding_kwargs ["netdev_model" ]))
76123
77- def test_ensure_device_type_present (self ):
124+ def test_ensure_device_type_strict_present (self ):
125+ """Verify ensure_device_type function when DeviceType object is already present."""
126+ PLUGIN_SETTINGS ["object_match_strategy" ] = "strict"
127+ manufacturer = Manufacturer .objects .create (name = "Juniper" , slug = "juniper" )
128+
129+ device_type = DeviceType .objects .create (slug = "srx3600" , model = "SRX3600" , manufacturer = manufacturer )
130+
131+ onboarding_kwargs = {
132+ "netdev_hostname" : "device2" ,
133+ "netdev_nb_role_slug" : PLUGIN_SETTINGS ["default_device_role" ],
134+ "netdev_vendor" : "Juniper" ,
135+ "netdev_nb_device_type_slug" : device_type .slug ,
136+ "netdev_nb_site_slug" : self .site1 .slug ,
137+ }
138+
139+ nbk = NetboxKeeper (** onboarding_kwargs )
140+ nbk .nb_manufacturer = manufacturer
141+
142+ nbk .ensure_device_type (create_device_type = False )
143+ self .assertEqual (nbk .nb_device_type , device_type )
144+
145+ def test_ensure_device_type_loose_present (self ):
78146 """Verify ensure_device_type function when DeviceType object is already present."""
147+ PLUGIN_SETTINGS ["object_match_strategy" ] = "loose"
79148 manufacturer = Manufacturer .objects .create (name = "Juniper" , slug = "juniper" )
80149
81150 device_type = DeviceType .objects .create (slug = "srx3600" , model = "SRX3600" , manufacturer = manufacturer )
0 commit comments