def test_node_request_urllib2_urlerror(self): def raise_exc(*args, **kwargs): raise URLError("something bad") controller = BaseController({}, self.app) with patch(base, 'urlopen', raise_exc): with self.assertRaises(NodeError) as cm: controller.node_request(self.node, 'PUT', '/volumes/vol-01') # Assert the exception details are correct self.assertEquals( cm.exception.detail, "PUT on http://localhost:8080/volumes/vol-01 " "failed with 'something bad'") self.assertEquals(cm.exception.code, 503) self.assertEquals(cm.exception.reason, "something bad")
def test_node_request_urllib2_httperror(self): def raise_exc(*args, **kwargs): fp = StringIO('{"reason": "something bad"}') raise HTTPError('http://localhost/volumes/vol-01', 500, 'Internal Error', {}, fp) controller = BaseController({}, self.app) with patch(base, 'urlopen', raise_exc): with self.assertRaises(NodeError) as cm: controller.node_request(self.node, 'PUT', '/volumes/vol-01') # Assert the exception details are correct self.assertEquals( cm.exception.detail, "PUT on http://localhost:8080/volumes/vol-01 " "returned '500' with 'something bad'") self.assertEquals(cm.exception.code, 500) self.assertEquals(cm.exception.reason, "something bad")
def setUp(self): self.mock_app = MockApp() self.db = self.mock_app.helper self.vtype = db.models.VolumeType('vtype') self.db.add(self.vtype) self.nodes = {} for i in range(10): n = db.models.Node('node%s' % i, 100, volume_type=self.vtype, hostname='10.127.0.%s' % i, port=8080 + i) self.nodes[i] = n self.db.add(n) self.account = db.models.Account(id='someaccount') self.db.add(self.account) self.db.commit() self.controller = BaseController({}, self.mock_app) self.controller._account_id = self.account.id