def test_invalid_racktivity_port(self, zboot, rack): zboot.list = MagicMock( return_value=[self._valid_data['zerobootClient']]) rack.list = MagicMock(return_value=self._rack_clients) data = { 'zerobootClient': 'zboot1-zb', 'racktivities': [ { 'client': 'zboot1-rack', 'powermodule': 'P1', }, ], 'mac': 'well:this:a:weird:mac:address', 'ip': '10.10.1.1', 'network': '10.10.1.0/24', 'hostname': 'test-01', 'lkrnUrl': 'some.ixpe.url', } instance = ZerobootRacktivityHost(name="test", data=data) with pytest.raises( ValueError, message="Should fail due to missing racktivity port"): instance.validate() data = { 'zerobootClient': 'zboot1-zb', 'racktivities': [ { 'client': 'zboot1-rack', 'port': 'FOO', 'powermodule': 'P1', }, ], 'mac': 'well:this:a:weird:mac:address', 'ip': '10.10.1.1', 'network': '10.10.1.0/24', 'hostname': 'test-01', 'lkrnUrl': 'some.ixpe.url', } instance = ZerobootRacktivityHost(name="test", data=data) with pytest.raises( ValueError, message="Should fail due to invalid racktivity port"): instance.validate()
def test_validate_no_zboot_instance(self, zboot, rack): instance = ZerobootRacktivityHost(name="test", data=self._valid_data) zboot.list = MagicMock(return_value=[]) rack.list = MagicMock(return_value=self._rack_clients) instance.power_status = MagicMock(return_value=True) with pytest.raises( LookupError, message="zeroboot instance should not be present") as excinfo: instance.validate() if "zboot client" not in str(excinfo.value): pytest.fail( "Received unexpected error message for missing zboot instance: %s" % str(excinfo.value))
def test_validation_required_fields(self, zboot, rack): zboot.list = MagicMock( return_value=[self._valid_data['zerobootClient']]) rack.list = MagicMock(return_value=self._rack_clients) test_cases = [ { 'data': { 'racktivities': [ { 'client': 'zboot1-rack', 'port': 6, 'powermodule': 'P1', }, { 'client': 'zboot1-rack', 'port': 7, 'powermodule': 'P1', }, ], 'mac': 'well:this:a:weird:mac:address', 'ip': '10.10.1.1', 'network': '10.10.1.0/24', 'hostname': 'test-01', 'lkrnUrl': 'some.ixpe.url', }, 'message': "Should fail: missing zerobootClient", 'missing': 'zerobootClient', }, { 'data': { 'zerobootClient': 'zboot1-zb', 'mac': 'well:this:a:weird:mac:address', 'ip': '10.10.1.1', 'network': '10.10.1.0/24', 'hostname': 'test-01', 'lkrnUrl': 'some.ixpe.url', }, 'message': "Should fail: missing racktivities", 'missing': 'racktivities', }, { 'data': { 'zerobootClient': 'zboot1-zb', 'racktivities': [ { 'client': 'zboot1-rack', 'port': 6, 'powermodule': 'P1', }, { 'client': 'zboot1-rack', 'port': 7, 'powermodule': 'P1', }, ], 'mac': 'well:this:a:weird:mac:address', 'ip': '10.10.1.1', 'hostname': 'test-01', 'lkrnUrl': 'some.ixpe.url', }, 'message': "Should fail: missing network", 'missing': 'network', }, { 'data': { 'zerobootClient': 'zboot1-zb', 'racktivities': [ { 'client': 'zboot1-rack', 'port': 6, 'powermodule': 'P1', }, { 'client': 'zboot1-rack', 'port': 7, 'powermodule': 'P1', }, ], 'mac': 'well:this:a:weird:mac:address', 'ip': '10.10.1.1', 'network': '10.10.1.0/24', 'lkrnUrl': 'some.ixpe.url', }, 'message': "Should fail: missing hostname", 'missing': 'hostname', }, { 'data': { 'zerobootClient': 'zboot1-zb', 'racktivities': [ { 'client': 'zboot1-rack', 'port': 6, 'powermodule': 'P1', }, { 'client': 'zboot1-rack', 'port': 7, 'powermodule': 'P1', }, ], 'ip': '10.10.1.1', 'network': '10.10.1.0/24', 'hostname': 'test-01', 'lkrnUrl': 'some.ixpe.url', }, 'message': "Should fail: missing mac address", 'missing': 'mac', }, { 'data': { 'zerobootClient': 'zboot1-zb', 'racktivities': [ { 'client': 'zboot1-rack', 'port': 6, 'powermodule': 'P1', }, { 'client': 'zboot1-rack', 'port': 7, 'powermodule': 'P1', }, ], 'network': '10.10.1.0/24', 'mac': 'well:this:a:weird:mac:address', 'hostname': 'test-01', }, 'message': "Should fail: missing ip address", 'missing': 'ip', }, ] for tc in test_cases: instance = ZerobootRacktivityHost(name="test", data=tc['data']) with pytest.raises(ValueError, message="Unexpected success: %s\n\nData: %s" % (tc['message'], tc['data'])) as excinfo: instance.validate() if tc['missing'] not in str(excinfo): pytest.fail( "Error message did not contain missing field('%s'): %s" % (tc['missing'], str(excinfo)))