def test_microversion_406_handling(self): body = '' status = '400 Bad Request' title = '' # Not a 406, no version info required. result = util.json_error_formatter( body, status, title, self.environ) self.assertNotIn('max_version', result['errors'][0]) self.assertNotIn('min_version', result['errors'][0]) # A 406 but not because of microversions (microversion # parsing was successful), no version info # required. status = '406 Not Acceptable' version_obj = microversion.parse_version_string('2.3') self.environ[microversion.MICROVERSION_ENVIRON] = version_obj result = util.json_error_formatter( body, status, title, self.environ) self.assertNotIn('max_version', result['errors'][0]) self.assertNotIn('min_version', result['errors'][0]) # Microversion parsing failed, status is 406, send version info. del self.environ[microversion.MICROVERSION_ENVIRON] result = util.json_error_formatter( body, status, title, self.environ) self.assertEqual(microversion.max_version_string(), result['errors'][0]['max_version']) self.assertEqual(microversion.min_version_string(), result['errors'][0]['min_version'])
def test_microversion_sequential(self): for method_name, method_list in microversion.VERSIONED_METHODS.items(): previous_min_version = method_list[0][0] for method in method_list[1:]: previous_min_version = microversion.parse_version_string( '%s.%s' % (previous_min_version.major, previous_min_version.minor - 1)) self.assertEqual(previous_min_version, method[1], "The microversions aren't sequential in the mehtod %s" % method_name) previous_min_version = method[0]
def test_raise_keyerror_out_of_date_version_string(self): version_obj = microversion.parse_version_string('1.4') self.req.environ['placement.microversion'] = version_obj self.assertRaises(KeyError, microversion.raise_http_status_code_if_not_version, self.req, 999, '1.5')
def test_raise_405_out_of_date_version_max(self): version_obj = microversion.parse_version_string('1.4') self.req.environ['placement.microversion'] = version_obj self.assertRaises(webob.exc.HTTPMethodNotAllowed, microversion.raise_http_status_code_if_not_version, self.req, 405, (1, 2), '1.3')