)]}'
{"keystone/assignment/schema.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cf92f65612880d25985f922c11e7954c8f5bd8c1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":46,"context_line":"}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# NOTE(lbragstad): Not sure if the delete schema for projects is needed at"},{"line_number":49,"context_line":"# this time since the controller only uses the project_id. There is no"},{"line_number":50,"context_line":"# project reference passed to delete on the server side for V3."},{"line_number":51,"context_line":"project_delete \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"9ad9bd40_c22fe9f4","line":48,"updated":"2014-05-05 13:16:43.000000000","message":"I don\u0027t think we need a delete schema, we don\u0027t actually check the body in any of the controllers for delete functions. \n\nI fear that if we start checking it for delete, then why not get/list. \n\nLet\u0027s try to keep our scope narrow for now and concentrate on create/update.","commit_id":"e4a4e41fb3e3b1555e2aee2d7b4f497ec93c4297"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b3321515ff9dd3d5fd512a952c9a74e77204e51c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"project_create \u003d {"},{"line_number":17,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":18,"context_line":"    \u0027properties\u0027: {"},{"line_number":19,"context_line":"        \u0027name\u0027: parameter_types.name,"},{"line_number":20,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":21,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":22,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":30,"id":"baada198_cc9c1ac3","line":19,"updated":"2014-07-21 19:03:17.000000000","message":"i would think it was better to have these properties in alphabetical - since then reading this against the entity resource definition in the identity-api spec should be easy","commit_id":"e7deefe634110deebb18f74a773fb5591ee811b8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"127570e5adfc4f11e3c35503b5560d727d1ed03e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"project_create \u003d {"},{"line_number":17,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":18,"context_line":"    \u0027properties\u0027: {"},{"line_number":19,"context_line":"        \u0027name\u0027: parameter_types.name,"},{"line_number":20,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":21,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":22,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":30,"id":"baada198_1fb552ec","line":19,"in_reply_to":"baada198_cc9c1ac3","updated":"2014-07-21 19:46:14.000000000","message":"good idea, fixed in next patch set","commit_id":"e7deefe634110deebb18f74a773fb5591ee811b8"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f7ee1fbc49e1c3368eec2da23f5b61834fd9af54","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":18,"context_line":"    \u0027properties\u0027: {"},{"line_number":19,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":20,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":21,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":22,"context_line":"        },"},{"line_number":23,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_3efd7fb2","line":20,"updated":"2014-07-22 14:20:23.000000000","message":"In the previous patch there was a \u0027hex_uuid\u0027 defined. Since there are probably a lot of them I think it might make sense to make a \u0027string_id\u0027 type.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b01dfd109f7c305bdd6bf156b5cdd568bf4bc60d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":18,"context_line":"    \u0027properties\u0027: {"},{"line_number":19,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":20,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":21,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":22,"context_line":"        },"},{"line_number":23,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_fbaaf96f","line":20,"in_reply_to":"baada198_3efd7fb2","updated":"2014-07-23 13:47:52.000000000","message":"Done","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f7ee1fbc49e1c3368eec2da23f5b61834fd9af54","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":46,"context_line":"}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# NOTE(lbragstad): Not sure if the delete schema for projects is needed at"},{"line_number":49,"context_line":"# this time since the controller only uses the project_id. There is no"},{"line_number":50,"context_line":"# project reference passed to delete on the server side for V3."},{"line_number":51,"context_line":"project_delete \u003d {"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_44a7c4a7","line":48,"updated":"2014-07-22 14:20:23.000000000","message":"If we don\u0027t use it I wouldn\u0027t include it.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7cce697f64af81bfebd08faadf9623fd71e4394","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":46,"context_line":"}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# NOTE(lbragstad): Not sure if the delete schema for projects is needed at"},{"line_number":49,"context_line":"# this time since the controller only uses the project_id. There is no"},{"line_number":50,"context_line":"# project reference passed to delete on the server side for V3."},{"line_number":51,"context_line":"project_delete \u003d {"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_882c83ae","line":48,"in_reply_to":"baada198_44a7c4a7","updated":"2014-07-22 17:41:08.000000000","message":"Done","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"3f3848570b8e5c51c76a99a131f9dfdcb674ed53","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"domain_create \u003d {"},{"line_number":59,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":60,"context_line":"    \u0027properties\u0027: {"},{"line_number":61,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":62,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_61a20cfe","line":59,"updated":"2014-07-22 09:04:04.000000000","message":"What about the top level attributes? These should also be alphabetically ordered.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f7ee1fbc49e1c3368eec2da23f5b61834fd9af54","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"domain_create \u003d {"},{"line_number":59,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":60,"context_line":"    \u0027properties\u0027: {"},{"line_number":61,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":62,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_9e792b85","line":59,"in_reply_to":"baada198_61a20cfe","updated":"2014-07-22 14:20:23.000000000","message":"I would vote no to alphabetical ordering here. This is how you would see JSONSchema in their documentation and certain attributes like \u0027type\u0027 will change the what other attributes you\u0027ll find.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f7ee1fbc49e1c3368eec2da23f5b61834fd9af54","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":63,"context_line":"        \u0027name\u0027: parameter_types.name"},{"line_number":64,"context_line":"    },"},{"line_number":65,"context_line":"    # TODO(lbragstad): According to the V3 API spec, name isn\u0027t required but"},{"line_number":66,"context_line":"    # the current implementation in assignment.controller:DomainV3 requires a"},{"line_number":67,"context_line":"    # name for the domain."},{"line_number":68,"context_line":"    \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_0476ac3f","line":65,"updated":"2014-07-22 14:20:23.000000000","message":"Where do you see name not being required? According to http://docs.openstack.org/api/openstack-identity-service/3/content/domains-v3domains.html it is.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d7cce697f64af81bfebd08faadf9623fd71e4394","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":63,"context_line":"        \u0027name\u0027: parameter_types.name"},{"line_number":64,"context_line":"    },"},{"line_number":65,"context_line":"    # TODO(lbragstad): According to the V3 API spec, name isn\u0027t required but"},{"line_number":66,"context_line":"    # the current implementation in assignment.controller:DomainV3 requires a"},{"line_number":67,"context_line":"    # name for the domain."},{"line_number":68,"context_line":"    \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_e39d20bd","line":65,"in_reply_to":"baada198_0476ac3f","updated":"2014-07-22 17:41:08.000000000","message":"Done","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ff21a796ea38ed29effe04331678a4e6bde011e2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":63,"context_line":"        \u0027name\u0027: parameter_types.name"},{"line_number":64,"context_line":"    },"},{"line_number":65,"context_line":"    # TODO(lbragstad): According to the V3 API spec, name isn\u0027t required but"},{"line_number":66,"context_line":"    # the current implementation in assignment.controller:DomainV3 requires a"},{"line_number":67,"context_line":"    # name for the domain."},{"line_number":68,"context_line":"    \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_c8859b0b","line":65,"in_reply_to":"baada198_0476ac3f","updated":"2014-07-22 17:27:36.000000000","message":"Yep, you\u0027re right. Not sure what I meant by that. Thanks for catching. New patch on the way.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f8e13d34c9b623874e802ae8becd07372e9f66be","unresolved":false,"context_lines":[{"line_number":33,"context_line":"project_update \u003d {"},{"line_number":34,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":35,"context_line":"    \u0027properties\u0027: {"},{"line_number":36,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":37,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":38,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":39,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_14c49bf3","line":36,"updated":"2014-08-21 01:48:06.000000000","message":"the properties are copy-pasted from project_create... make a variable and share it.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d3b6007be093a245f4e6bf18072812c1a615a260","unresolved":false,"context_lines":[{"line_number":33,"context_line":"project_update \u003d {"},{"line_number":34,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":35,"context_line":"    \u0027properties\u0027: {"},{"line_number":36,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":37,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":38,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":39,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_19e61945","line":36,"in_reply_to":"1abeadc6_14c49bf3","updated":"2014-08-25 14:35:02.000000000","message":"Done","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f8e13d34c9b623874e802ae8becd07372e9f66be","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    \u0027properties\u0027: {"},{"line_number":36,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":37,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":38,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":39,"context_line":"        },"},{"line_number":40,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":41,"context_line":"        \u0027name\u0027: parameter_types.name"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_d48ea3cf","line":38,"updated":"2014-08-21 01:48:06.000000000","message":"there should be a parameter_types.domain_id.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d3b6007be093a245f4e6bf18072812c1a615a260","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    \u0027properties\u0027: {"},{"line_number":36,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":37,"context_line":"        \u0027domain_id\u0027: {"},{"line_number":38,"context_line":"            \u0027type\u0027: \u0027string\u0027"},{"line_number":39,"context_line":"        },"},{"line_number":40,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":41,"context_line":"        \u0027name\u0027: parameter_types.name"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_39baf50a","line":38,"in_reply_to":"1abeadc6_d48ea3cf","updated":"2014-08-25 14:35:02.000000000","message":"This one I\u0027m not sure about because it would be nice to not have subsystem specific types in there unless they are shared across multiple subsystems.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f8e13d34c9b623874e802ae8becd07372e9f66be","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# NOTE(lbragstad): Not sure if the delete schema for projects is needed at"},{"line_number":49,"context_line":"# this time since the controller only uses the project_id. There is no"},{"line_number":50,"context_line":"# project reference passed to delete on the server side for V3."},{"line_number":51,"context_line":"project_delete \u003d {"},{"line_number":52,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":53,"context_line":"    # NOTE(lbragstad): Don\u0027t allow any parameters on delete"},{"line_number":54,"context_line":"    \u0027maxProperties\u0027: 0"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_d47ce3b7","line":51,"updated":"2014-08-21 01:48:06.000000000","message":"I think the body was always just discarded before so this isn\u0027t backwards compatible.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"705dd6ede2d9327d61814bbc8c767853415a9b37","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# NOTE(lbragstad): Not sure if the delete schema for projects is needed at"},{"line_number":49,"context_line":"# this time since the controller only uses the project_id. There is no"},{"line_number":50,"context_line":"# project reference passed to delete on the server side for V3."},{"line_number":51,"context_line":"project_delete \u003d {"},{"line_number":52,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":53,"context_line":"    # NOTE(lbragstad): Don\u0027t allow any parameters on delete"},{"line_number":54,"context_line":"    \u0027maxProperties\u0027: 0"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_3f5e5513","line":51,"in_reply_to":"1abeadc6_d47ce3b7","updated":"2014-08-25 14:04:24.000000000","message":"++ there\u0027s no request bodies on any delete requests","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d3b6007be093a245f4e6bf18072812c1a615a260","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# NOTE(lbragstad): Not sure if the delete schema for projects is needed at"},{"line_number":49,"context_line":"# this time since the controller only uses the project_id. There is no"},{"line_number":50,"context_line":"# project reference passed to delete on the server side for V3."},{"line_number":51,"context_line":"project_delete \u003d {"},{"line_number":52,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":53,"context_line":"    # NOTE(lbragstad): Don\u0027t allow any parameters on delete"},{"line_number":54,"context_line":"    \u0027maxProperties\u0027: 0"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_7f09addc","line":51,"in_reply_to":"1abeadc6_d47ce3b7","updated":"2014-08-25 14:35:02.000000000","message":"I\u0027ve deleted this since it wasn\u0027t used anyway.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"705dd6ede2d9327d61814bbc8c767853415a9b37","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":63,"context_line":"        \u0027name\u0027: parameter_types.name"},{"line_number":64,"context_line":"    },"},{"line_number":65,"context_line":"    # TODO(lbragstad): According to the V3 API spec, name isn\u0027t required but"},{"line_number":66,"context_line":"    # the current implementation in assignment.controller:DomainV3 requires a"},{"line_number":67,"context_line":"    # name for the domain."},{"line_number":68,"context_line":"    \u0027required\u0027: [\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_ffaa1dd1","line":65,"updated":"2014-08-25 14:04:24.000000000","message":"oops, spec is wrong then!","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f8e13d34c9b623874e802ae8becd07372e9f66be","unresolved":false,"context_lines":[{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"domain_update \u003d {"},{"line_number":73,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":74,"context_line":"    \u0027properties\u0027: {"},{"line_number":75,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":76,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_f4339f11","line":73,"updated":"2014-08-21 01:48:06.000000000","message":"this is a copy-paste of domain_create. make a variable and share it.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d3b6007be093a245f4e6bf18072812c1a615a260","unresolved":false,"context_lines":[{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"domain_update \u003d {"},{"line_number":73,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":74,"context_line":"    \u0027properties\u0027: {"},{"line_number":75,"context_line":"        \u0027description\u0027: parameter_types.description,"},{"line_number":76,"context_line":"        \u0027enabled\u0027: parameter_types.boolean,"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_34ff5cac","line":73,"in_reply_to":"1abeadc6_f4339f11","updated":"2014-08-25 14:35:02.000000000","message":"Done","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f8e13d34c9b623874e802ae8becd07372e9f66be","unresolved":false,"context_lines":[{"line_number":90,"context_line":"}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"role_update \u003d {"},{"line_number":93,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":94,"context_line":"    \u0027properties\u0027: {"},{"line_number":95,"context_line":"        \u0027name\u0027: parameter_types.name"},{"line_number":96,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_94242bc6","line":93,"updated":"2014-08-21 01:48:06.000000000","message":"this is a copy-paste of role_create. make a variable and share it.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d3b6007be093a245f4e6bf18072812c1a615a260","unresolved":false,"context_lines":[{"line_number":90,"context_line":"}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"role_update \u003d {"},{"line_number":93,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":94,"context_line":"    \u0027properties\u0027: {"},{"line_number":95,"context_line":"        \u0027name\u0027: parameter_types.name"},{"line_number":96,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_140260b4","line":93,"in_reply_to":"1abeadc6_94242bc6","updated":"2014-08-25 14:35:02.000000000","message":"Done","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"705dd6ede2d9327d61814bbc8c767853415a9b37","unresolved":false,"context_lines":[{"line_number":90,"context_line":"}"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"role_update \u003d {"},{"line_number":93,"context_line":"    \u0027type\u0027: \u0027object\u0027,"},{"line_number":94,"context_line":"    \u0027properties\u0027: {"},{"line_number":95,"context_line":"        \u0027name\u0027: parameter_types.name"},{"line_number":96,"context_line":"    },"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_3fe3b534","line":93,"in_reply_to":"1abeadc6_94242bc6","updated":"2014-08-25 14:04:24.000000000","message":"not quite... but maybe copy role create and then modify it here? add min properties, drop required, etc","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d9c10c53f3dd4b8b81ec84aaa269e09bed13c095","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":21,"context_line":"    },"},{"line_number":22,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":23,"context_line":"    \u0027name\u0027: parameter_types.name"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"project_create \u003d {"}],"source_content_type":"text/x-python","patch_set":46,"id":"1abeadc6_1fef4288","line":23,"updated":"2014-08-28 17:33:55.000000000","message":"The name property is defined to be 255 characters here: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/common/validation/parameter_types.py#n25\n\nThe actual domain.name column is only 64: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/assignment/backends/sql.py#n598","commit_id":"6e9453093ab595a7cf1486849390b0fa24888a29"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"138d426d5ffd4cb16c0195534a999ee543d7e939","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        \u0027type\u0027: \u0027string\u0027"},{"line_number":21,"context_line":"    },"},{"line_number":22,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":23,"context_line":"    \u0027name\u0027: parameter_types.name"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"project_create \u003d {"}],"source_content_type":"text/x-python","patch_set":46,"id":"1abeadc6_cc3a78cc","line":23,"in_reply_to":"1abeadc6_1fef4288","updated":"2014-08-29 01:59:14.000000000","message":"Done","commit_id":"6e9453093ab595a7cf1486849390b0fa24888a29"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"d9c10c53f3dd4b8b81ec84aaa269e09bed13c095","unresolved":false,"context_lines":[{"line_number":44,"context_line":"_domain_properties \u003d {"},{"line_number":45,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description),"},{"line_number":46,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":47,"context_line":"    \u0027name\u0027: parameter_types.name"},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"domain_create \u003d {"}],"source_content_type":"text/x-python","patch_set":46,"id":"1abeadc6_5f57fa59","line":47,"updated":"2014-08-28 17:33:55.000000000","message":"The name property is defined to be 255 characters here: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/common/validation/parameter_types.py#n25\n\nThe actual domain.name column is only 64: http://git.openstack.org/cgit/openstack/keystone/tree/keystone/assignment/backends/sql.py#n598","commit_id":"6e9453093ab595a7cf1486849390b0fa24888a29"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"138d426d5ffd4cb16c0195534a999ee543d7e939","unresolved":false,"context_lines":[{"line_number":44,"context_line":"_domain_properties \u003d {"},{"line_number":45,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description),"},{"line_number":46,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":47,"context_line":"    \u0027name\u0027: parameter_types.name"},{"line_number":48,"context_line":"}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"domain_create \u003d {"}],"source_content_type":"text/x-python","patch_set":46,"id":"1abeadc6_ec3734e1","line":47,"in_reply_to":"1abeadc6_5f57fa59","updated":"2014-08-29 01:59:14.000000000","message":"Done","commit_id":"6e9453093ab595a7cf1486849390b0fa24888a29"}],"keystone/tests/test_validation.py":[{"author":{"_account_id":11717,"name":"Ryan Oshima","email":"ryan.oshima@hp.com","username":"RyanOshima"},"change_message_id":"691333f0df00dacd3efe6c7a745451d816756359","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.description \u003d \u0027Some valid description\u0027"},{"line_number":44,"context_line":"        self.valid_enabled \u003d True"},{"line_number":45,"context_line":"        self.valid_url \u003d \u0027https://localhost\u0027"},{"line_number":46,"context_line":"        # create two validators, one using the _CREATE schema and the other"},{"line_number":47,"context_line":"        # using the _UPDATE schema. These can be used in the test cases"},{"line_number":48,"context_line":"        # according to what is being validated."},{"line_number":49,"context_line":"        self.create_schema_validator \u003d validators.SchemaValidator(_CREATE)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1ae5cdf2_6d4dcac3","side":"PARENT","line":46,"updated":"2014-06-05 16:33:28.000000000","message":"\"create\"/\"Create\"","commit_id":"4d17db42cceb6aaf7a02abbc1d0735903ccc8f2f"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        request_to_validate \u003d {\u0027name\u0027: self.project_name}"},{"line_number":167,"context_line":"        self.create_project_validator.validate(request_to_validate)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_validate_project_request_without_name_raises_exception(self):"},{"line_number":170,"context_line":"        \"\"\"Test that an exception is raised when `name` isn\u0027t in the project"},{"line_number":171,"context_line":"           creation request."},{"line_number":172,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_9ab31899","line":169,"updated":"2014-06-21 01:15:28.000000000","message":"Some test methods end with \"raises_exception\" others have \"fail\" in their name, one or two others don\u0027t explicit call out it\u0027s a negative test case in the name. For readability and consistency I would like to use one naming scheme e.g. for this particular method\n\ntest_validate_project_request_without_name_fails\n\nSimilarly for the others below.","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        request_to_validate \u003d {\u0027name\u0027: self.project_name}"},{"line_number":167,"context_line":"        self.create_project_validator.validate(request_to_validate)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def test_validate_project_request_without_name_raises_exception(self):"},{"line_number":170,"context_line":"        \"\"\"Test that an exception is raised when `name` isn\u0027t in the project"},{"line_number":171,"context_line":"           creation request."},{"line_number":172,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_4faa8672","line":169,"in_reply_to":"1ae5cdf2_9ab31899","updated":"2014-06-23 18:24:42.000000000","message":"good idea and nice catch, done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        for valid_enabled in _VALID_ENABLED_FORMATS:"},{"line_number":183,"context_line":"            request_to_validate \u003d {\u0027name\u0027: self.project_name,"},{"line_number":184,"context_line":"                                   \u0027enabled\u0027: valid_enabled}"},{"line_number":185,"context_line":"            # Make sure an exception isn\u0027t raised"},{"line_number":186,"context_line":"            self.create_project_validator.validate(request_to_validate)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def test_validate_project_request_with_invalid_enabled_fails(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_3a50442b","line":185,"updated":"2014-06-21 01:15:28.000000000","message":"Do we need this comment? If there is an exception the test will fail.","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        for valid_enabled in _VALID_ENABLED_FORMATS:"},{"line_number":183,"context_line":"            request_to_validate \u003d {\u0027name\u0027: self.project_name,"},{"line_number":184,"context_line":"                                   \u0027enabled\u0027: valid_enabled}"},{"line_number":185,"context_line":"            # Make sure an exception isn\u0027t raised"},{"line_number":186,"context_line":"            self.create_project_validator.validate(request_to_validate)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    def test_validate_project_request_with_invalid_enabled_fails(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_afdf8a0b","line":185,"in_reply_to":"1ae5cdf2_3a50442b","updated":"2014-06-23 18:24:42.000000000","message":"Done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                               \u0027description\u0027: \u0027My Project\u0027}"},{"line_number":203,"context_line":"        self.create_project_validator.validate(request_to_validate)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def test_validate_project_request_with_invalid_description(self):"},{"line_number":206,"context_line":"        \"\"\"Test that an exception is raised when validating `description` as a"},{"line_number":207,"context_line":"           non-string value."},{"line_number":208,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_5a643021","line":205,"updated":"2014-06-21 01:15:28.000000000","message":"Indicate in the function name that this test covers a negative use case and we expect it to fail e.g. rename to: \n\ntest_validate_project_request_with_invalid_description_fails","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                               \u0027description\u0027: \u0027My Project\u0027}"},{"line_number":203,"context_line":"        self.create_project_validator.validate(request_to_validate)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def test_validate_project_request_with_invalid_description(self):"},{"line_number":206,"context_line":"        \"\"\"Test that an exception is raised when validating `description` as a"},{"line_number":207,"context_line":"           non-string value."},{"line_number":208,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_6fd582e4","line":205,"in_reply_to":"1ae5cdf2_5a643021","updated":"2014-06-23 18:24:42.000000000","message":"Done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        request_to_validate \u003d {}"},{"line_number":232,"context_line":"        self.delete_project_validator.validate(request_to_validate)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_validate_project_delete_with_parameters_raises_exception(self):"},{"line_number":235,"context_line":"        \"\"\"Test that an exception is raised when validating a delete request"},{"line_number":236,"context_line":"           that has parameters."},{"line_number":237,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_da7760d2","line":234,"updated":"2014-06-21 01:15:28.000000000","message":"For consistency I would vote for using \"fails\" instead of \"raises_exception\".","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        request_to_validate \u003d {}"},{"line_number":232,"context_line":"        self.delete_project_validator.validate(request_to_validate)"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    def test_validate_project_delete_with_parameters_raises_exception(self):"},{"line_number":235,"context_line":"        \"\"\"Test that an exception is raised when validating a delete request"},{"line_number":236,"context_line":"           that has parameters."},{"line_number":237,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_ef00b268","line":234,"in_reply_to":"1ae5cdf2_da7760d2","updated":"2014-06-23 18:24:42.000000000","message":"Done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        request_to_validate \u003d {\u0027name\u0027: self.domain_name}"},{"line_number":260,"context_line":"        self.create_domain_validator.validate(request_to_validate)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_validate_domain_request_without_name_raises_exception(self):"},{"line_number":263,"context_line":"        \"\"\"Make sure we raise an exception when `name` isn\u0027t included.\"\"\""},{"line_number":264,"context_line":"        request_to_validate \u003d {\u0027enabled\u0027: True}"},{"line_number":265,"context_line":"        self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_1a7e28af","line":262,"updated":"2014-06-21 01:15:28.000000000","message":"For consistency I would vote for using \"fails\" instead of \"raises_exception\".","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        request_to_validate \u003d {\u0027name\u0027: self.domain_name}"},{"line_number":260,"context_line":"        self.create_domain_validator.validate(request_to_validate)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def test_validate_domain_request_without_name_raises_exception(self):"},{"line_number":263,"context_line":"        \"\"\"Make sure we raise an exception when `name` isn\u0027t included.\"\"\""},{"line_number":264,"context_line":"        request_to_validate \u003d {\u0027enabled\u0027: True}"},{"line_number":265,"context_line":"        self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_ef37d24b","line":262,"in_reply_to":"1ae5cdf2_1a7e28af","updated":"2014-06-23 18:24:42.000000000","message":"Done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        for valid_enabled in _VALID_ENABLED_FORMATS:"},{"line_number":274,"context_line":"            request_to_validate \u003d {\u0027name\u0027: self.domain_name,"},{"line_number":275,"context_line":"                                   \u0027enabled\u0027: valid_enabled}"},{"line_number":276,"context_line":"            # Make sure an exception isn\u0027t raised"},{"line_number":277,"context_line":"            self.create_domain_validator.validate(request_to_validate)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_validate_domain_request_with_invalid_enabled_fails(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_fa597c5b","line":276,"updated":"2014-06-21 01:15:28.000000000","message":"Do we need this comment? If there is an exception the test will fail automatically.","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        for valid_enabled in _VALID_ENABLED_FORMATS:"},{"line_number":274,"context_line":"            request_to_validate \u003d {\u0027name\u0027: self.domain_name,"},{"line_number":275,"context_line":"                                   \u0027enabled\u0027: valid_enabled}"},{"line_number":276,"context_line":"            # Make sure an exception isn\u0027t raised"},{"line_number":277,"context_line":"            self.create_domain_validator.validate(request_to_validate)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_validate_domain_request_with_invalid_enabled_fails(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_4f4606c2","line":276,"in_reply_to":"1ae5cdf2_fa597c5b","updated":"2014-06-23 18:24:42.000000000","message":"Done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":293,"context_line":"                               \u0027description\u0027: \u0027My Domain\u0027}"},{"line_number":294,"context_line":"        self.create_domain_validator.validate(request_to_validate)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def test_validate_domain_request_with_invalid_description(self):"},{"line_number":297,"context_line":"        \"\"\"Test that an exception is raised when validating `description` as a"},{"line_number":298,"context_line":"           non-string value."},{"line_number":299,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_9a415865","line":296,"updated":"2014-06-21 01:15:28.000000000","message":"For consistency I would vote for explicitly calling out that the test fails here by renaming to:\n\ntest_validate_domain_request_with_invalid_description_fails","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":293,"context_line":"                               \u0027description\u0027: \u0027My Domain\u0027}"},{"line_number":294,"context_line":"        self.create_domain_validator.validate(request_to_validate)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def test_validate_domain_request_with_invalid_description(self):"},{"line_number":297,"context_line":"        \"\"\"Test that an exception is raised when validating `description` as a"},{"line_number":298,"context_line":"           non-string value."},{"line_number":299,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_cf9cd611","line":296,"in_reply_to":"1ae5cdf2_9a415865","updated":"2014-06-23 18:24:42.000000000","message":"Done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"7b0de4e08cccc4323fa0b814b9e1916e6052e45a","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027My New Role\u0027}"},{"line_number":362,"context_line":"        self.update_role_validator.validate(request_to_validate)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def test_validate_role_update_fails_with_invalid_name(self):"},{"line_number":365,"context_line":"        \"\"\"Test that we raise an exception when validating an update request"},{"line_number":366,"context_line":"           with an invalid `name`."},{"line_number":367,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_da5e8044","line":364,"updated":"2014-06-21 01:15:28.000000000","message":"For consistency I would have string \"_fails\" at the end of the method name.","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"38c7f8207c7f666a26149df5efe3ea8d66ba1d97","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027My New Role\u0027}"},{"line_number":362,"context_line":"        self.update_role_validator.validate(request_to_validate)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def test_validate_role_update_fails_with_invalid_name(self):"},{"line_number":365,"context_line":"        \"\"\"Test that we raise an exception when validating an update request"},{"line_number":366,"context_line":"           with an invalid `name`."},{"line_number":367,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_0fadde32","line":364,"in_reply_to":"1ae5cdf2_da5e8044","updated":"2014-06-23 18:24:42.000000000","message":"Done","commit_id":"6529c8f0a59caf4951c9c7d21179df83216be33a"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7109b91cf38bd3dc36320d18657b3abf60e8fd8f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \u0027additionalProperties\u0027: True,"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"_UPDATE \u003d {}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_be2dfaff","line":37,"updated":"2014-07-22 19:23:19.000000000","message":"Remove the extra vertical space.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b01dfd109f7c305bdd6bf156b5cdd568bf4bc60d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \u0027additionalProperties\u0027: True,"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"_UPDATE \u003d {}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_1b196dd1","line":37,"in_reply_to":"baada198_be2dfaff","updated":"2014-07-23 13:47:52.000000000","message":"Done","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7109b91cf38bd3dc36320d18657b3abf60e8fd8f","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"_UPDATE \u003d {}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"_VALID_ENABLED_FORMATS \u003d [True, False]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"_INVALID_ENABLED_FORMATS \u003d [\u0027some string\u0027, 1, 0, \u0027True\u0027, \u0027False\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_1ecee65b","line":40,"updated":"2014-07-22 19:23:19.000000000","message":"Remove the extra vertical space.","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b01dfd109f7c305bdd6bf156b5cdd568bf4bc60d","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"_UPDATE \u003d {}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"_VALID_ENABLED_FORMATS \u003d [True, False]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"_INVALID_ENABLED_FORMATS \u003d [\u0027some string\u0027, 1, 0, \u0027True\u0027, \u0027False\u0027]"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_3b77110a","line":40,"in_reply_to":"baada198_1ecee65b","updated":"2014-07-23 13:47:52.000000000","message":"Done","commit_id":"533a41f9869328761559216dda8a4b2352dc950d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f8e13d34c9b623874e802ae8becd07372e9f66be","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        self.valid_enabled \u003d True"},{"line_number":53,"context_line":"        self.valid_url \u003d \u0027http://example.com\u0027"},{"line_number":54,"context_line":"        self.valid_email \u003d \u0027joe@example.com\u0027"},{"line_number":55,"context_line":"        self.create_schema_validator \u003d validators.SchemaValidator(_CREATE)"},{"line_number":56,"context_line":"        self.update_schema_validator \u003d validators.SchemaValidator(_UPDATE)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_create_schema_with_all_valid_parameters(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_b71be971","line":55,"updated":"2014-08-21 01:48:06.000000000","message":"_CREATE looks like it\u0027s specific to users, so seems like it shouldn\u0027t be the default for all validation test cases.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f8e13d34c9b623874e802ae8becd07372e9f66be","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                          request_to_validate)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"class ProjectValidationTestCase(BaseValidationTestCase):"},{"line_number":174,"context_line":"    \"\"\"Test for V3 Project API validation.\"\"\""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_b76049d0","line":173,"updated":"2014-08-21 01:48:06.000000000","message":"This is going to have a bunch of extra tests like test_create_schema_with_invalid_email... I don\u0027t think that was intended.","commit_id":"757b8ecae3f7a656ad6f77df846cc54cecbca712"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"dbc2241fed443e26f27411f57e1224c1ea13eb47","unresolved":false,"context_lines":[{"line_number":228,"context_line":"    def test_validate_project_update_request(self):"},{"line_number":229,"context_line":"        \"\"\"Test that we validate a project update request.\"\"\""},{"line_number":230,"context_line":"        request_to_validate \u003d {\u0027domain_id\u0027: uuid.uuid4().hex}"},{"line_number":231,"context_line":"        self.update_schema_validator.validate(request_to_validate)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def test_validate_project_update_request_with_no_parameters_fails(self):"},{"line_number":234,"context_line":"        \"\"\"Exception is raised when updating project without parameters.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"1abeadc6_15fdcc3b","line":231,"updated":"2014-08-26 14:29:35.000000000","message":"this should be update_project_validator.validate","commit_id":"07e7a37e7ae1841a47cd3ccbd207ea540a2f6361"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"dbc2241fed443e26f27411f57e1224c1ea13eb47","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    def test_validate_domain_update_request(self):"},{"line_number":297,"context_line":"        \"\"\"Test that we validate a domain update request.\"\"\""},{"line_number":298,"context_line":"        request_to_validate \u003d {\u0027domain_id\u0027: uuid.uuid4().hex}"},{"line_number":299,"context_line":"        self.update_schema_validator.validate(request_to_validate)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def test_validate_domain_update_request_with_no_parameters_fails(self):"},{"line_number":302,"context_line":"        \"\"\"Exception is raised when updating a domain without parameters.\"\"\""}],"source_content_type":"text/x-python","patch_set":40,"id":"1abeadc6_3593a8fb","line":299,"updated":"2014-08-26 14:29:35.000000000","message":"this should be update_domain_validator.validate","commit_id":"07e7a37e7ae1841a47cd3ccbd207ea540a2f6361"}]}
