)]}'
{"keystone/identity/schema.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3b49a432253654725423b8ce378dc4a42bbb67ca","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027properties\u0027: _user_properties_v2,"},{"line_number":41,"context_line":"    \u0027anyOf\u0027: ["},{"line_number":42,"context_line":"        {"},{"line_number":43,"context_line":"            \u0027required\u0027: [\u0027username\u0027]"},{"line_number":44,"context_line":"        },"},{"line_number":45,"context_line":"        {"},{"line_number":46,"context_line":"            \u0027required\u0027: [\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_47cb9a1e","line":43,"range":{"start_line":43,"start_character":25,"end_line":43,"end_character":35},"updated":"2016-07-29 11:38:30.000000000","message":"this is not included in user properties.","commit_id":"be9aecf3be5ec0a19c065ab67a9d8eca2854201a"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"186c7c5ea427700afdd5ce61d1dfd5cb5e77a3b8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027properties\u0027: _user_properties_v2,"},{"line_number":41,"context_line":"    \u0027anyOf\u0027: ["},{"line_number":42,"context_line":"        {"},{"line_number":43,"context_line":"            \u0027required\u0027: [\u0027username\u0027]"},{"line_number":44,"context_line":"        },"},{"line_number":45,"context_line":"        {"},{"line_number":46,"context_line":"            \u0027required\u0027: [\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_b5006035","line":43,"range":{"start_line":43,"start_character":25,"end_line":43,"end_character":35},"in_reply_to":"bacf61ea_47cb9a1e","updated":"2016-08-01 15:47:25.000000000","message":"There are existing tests that just use \u0027username\u0027 and I\u0027m currently trying to find where I saw it, but I thought I saw some docs that said v2 supported either \u0027name\u0027 OR \u0027username\u0027","commit_id":"be9aecf3be5ec0a19c065ab67a9d8eca2854201a"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"a01cf41d1c88917663ae7226b8130ea4f3a1e9e3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \u0027properties\u0027: _user_properties_v2,"},{"line_number":41,"context_line":"    \u0027anyOf\u0027: ["},{"line_number":42,"context_line":"        {"},{"line_number":43,"context_line":"            \u0027required\u0027: [\u0027username\u0027]"},{"line_number":44,"context_line":"        },"},{"line_number":45,"context_line":"        {"},{"line_number":46,"context_line":"            \u0027required\u0027: [\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_e64870b5","line":43,"range":{"start_line":43,"start_character":25,"end_line":43,"end_character":35},"in_reply_to":"bacf61ea_b5006035","updated":"2016-08-01 16:35:01.000000000","message":"nvm I read this wrong, I will include it.","commit_id":"be9aecf3be5ec0a19c065ab67a9d8eca2854201a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"ff2be0b7f19f7e3f44a2bd78ebd3107ed87423b8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \u0027tenantId\u0027: validation.nullable(parameter_types.id_string),"},{"line_number":31,"context_line":"    \u0027name\u0027: _identity_name,"},{"line_number":32,"context_line":"    \u0027username\u0027: _identity_name,"},{"line_number":33,"context_line":"    \u0027email\u0027: validation.nullable(parameter_types.email),"},{"line_number":34,"context_line":"    \u0027password\u0027: {"},{"line_number":35,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":36,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_0d2f55a2","line":33,"range":{"start_line":33,"start_character":5,"end_line":33,"end_character":56},"updated":"2016-08-02 23:29:32.000000000","message":"seems like this is failing tempest too:\n\nu\u0027message\u0027: u\"Invalid input for field \u0027email\u0027: u\u0027\u0027 is not a \u0027email\u0027\", u\u0027code\u0027: 400\n\nlet\u0027s remove this line and update the tests","commit_id":"d96eb7977eede3e64f4de06c355683ef820b9972"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"4c1b34725578fcd4b373187f361765f44d702ba4","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \u0027tenantId\u0027: validation.nullable(parameter_types.id_string),"},{"line_number":31,"context_line":"    \u0027name\u0027: _identity_name,"},{"line_number":32,"context_line":"    \u0027username\u0027: _identity_name,"},{"line_number":33,"context_line":"    \u0027email\u0027: validation.nullable(parameter_types.email),"},{"line_number":34,"context_line":"    \u0027password\u0027: {"},{"line_number":35,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":36,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_da202afa","line":33,"range":{"start_line":33,"start_character":5,"end_line":33,"end_character":56},"in_reply_to":"bacf61ea_0d2f55a2","updated":"2016-08-03 14:48:54.000000000","message":"sure, will do","commit_id":"d96eb7977eede3e64f4de06c355683ef820b9972"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3e3a76327b8f60d2e2c5086d16b109ee0b8dd917","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    \u0027additionalProperties\u0027: True"},{"line_number":50,"context_line":"}"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# NOTE(ghugo 08/16): minProperties value should really be 1, however it"},{"line_number":53,"context_line":"# is currently set to 0 to avoid breaking the API."},{"line_number":54,"context_line":"# Probably should change this in the future"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_82cc4bbc","line":52,"range":{"start_line":52,"start_character":6,"end_line":52,"end_character":19},"updated":"2016-08-04 15:05:41.000000000","message":"no need to add dates, we can use git blame for that :)","commit_id":"918febcfd8449fdac7d7324155e4787685945efc"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"b55e79ee2eb718418d3cbbee0ff626dfac802e1e","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# NOTE(ghugo): minProperties value should really be 1, however it"},{"line_number":53,"context_line":"# is currently set to 0 to avoid breaking backwards compatability,"},{"line_number":54,"context_line":"# and tempest tests."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"user_update_v2 \u003d {"},{"line_number":57,"context_line":"    \u0027type\u0027: \u0027object\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_57031a42","line":54,"updated":"2016-08-05 01:22:16.000000000","message":"@Gage, Thanks for adding this Note ;).","commit_id":"a5264d7f3584b749c30bcccba4d39fb66df36de9"}],"keystone/tests/unit/test_v2_validation.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3b49a432253654725423b8ce378dc4a42bbb67ca","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from keystone.tests import unit"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027, \u0027\u0027]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_VALID_ENABLED_FORMATS \u003d [True, False]"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_a7a09644","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":14},"updated":"2016-07-29 11:38:30.000000000","message":"here.","commit_id":"be9aecf3be5ec0a19c065ab67a9d8eca2854201a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3b49a432253654725423b8ce378dc4a42bbb67ca","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                          self.create_validator.validate,"},{"line_number":189,"context_line":"                          request)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def test_validate_user_create_fails_with_no_params(self):"},{"line_number":192,"context_line":"        request \u003d {}"},{"line_number":193,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":194,"context_line":"                          self.create_validator.validate,"},{"line_number":195,"context_line":"                          request)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test_validate_user_create_fails_with_invalid_name(self):"},{"line_number":198,"context_line":"        request \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_071d22bd","line":195,"range":{"start_line":191,"start_character":4,"end_line":195,"end_character":34},"updated":"2016-07-29 11:38:30.000000000","message":"same here, it is duplicated with the case above, both of them raise exception due to there is no username or name in the body, keep only one of them is enough.","commit_id":"be9aecf3be5ec0a19c065ab67a9d8eca2854201a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3b49a432253654725423b8ce378dc4a42bbb67ca","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test_validate_user_create_fails_with_invalid_name(self):"},{"line_number":198,"context_line":"        request \u003d {"},{"line_number":199,"context_line":"            \u0027name\u0027: 42"},{"line_number":200,"context_line":"        }"},{"line_number":201,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":202,"context_line":"                          self.create_validator.validate,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_87a3d24e","line":199,"range":{"start_line":199,"start_character":12,"end_line":199,"end_character":22},"updated":"2016-07-29 11:38:30.000000000","message":"`name` is required and it\u0027s cannot be whitespace, check it against the list of _INVALID_NAMES.","commit_id":"be9aecf3be5ec0a19c065ab67a9d8eca2854201a"}]}
