)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c341fb44c3c50dce6f0708c2b7a06a72ab60326","unresolved":false,"context_lines":[{"line_number":7,"context_line":"The name can be just white character except project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The reason for this bug is that the name is not cleaned when create"},{"line_number":10,"context_line":"role,domain and groups.The clean function has been written but is"},{"line_number":11,"context_line":"not used.I just use the function to make sure the name is not"},{"line_number":12,"context_line":"empty."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"7a5de9d1_1a4a5f84","line":10,"range":{"start_line":10,"start_character":4,"end_line":10,"end_character":5},"updated":"2016-01-27 15:12:22.000000000","message":"nit on punctuation spacing.\n\n    role, domain and groups. The","commit_id":"e6cb5e314fb3d56a1504ffcfb719fc1fb31d76ab"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c341fb44c3c50dce6f0708c2b7a06a72ab60326","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The reason for this bug is that the name is not cleaned when create"},{"line_number":10,"context_line":"role,domain and groups.The clean function has been written but is"},{"line_number":11,"context_line":"not used.I just use the function to make sure the name is not"},{"line_number":12,"context_line":"empty."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ie7bd79bede3b405b3798bdb584d2fcab66104317"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"7a5de9d1_fa166354","line":11,"range":{"start_line":11,"start_character":8,"end_line":11,"end_character":9},"updated":"2016-01-27 15:12:22.000000000","message":"nit: add a space after the period.","commit_id":"e6cb5e314fb3d56a1504ffcfb719fc1fb31d76ab"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"9fa888ea6a50d8f669811edc05a9fc2e2602b53e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"The name can be just white character except project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The reason for this bug is that the name is not validated when create"},{"line_number":10,"context_line":" role, domain and groups.In the V3 verison we use jsonschme to validate"},{"line_number":11,"context_line":" them.So I changed the code of schme files to validate the name."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When I wrote the test code, I found that there was a lack of some tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a5de9d1_0345e415","line":10,"range":{"start_line":10,"start_character":35,"end_line":10,"end_character":42},"updated":"2016-01-28 13:43:56.000000000","message":"nit: version","commit_id":"281abba3a68923aef6a2b55a3856a63c88309fed"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"9fa888ea6a50d8f669811edc05a9fc2e2602b53e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The reason for this bug is that the name is not validated when create"},{"line_number":10,"context_line":" role, domain and groups.In the V3 verison we use jsonschme to validate"},{"line_number":11,"context_line":" them.So I changed the code of schme files to validate the name."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When I wrote the test code, I found that there was a lack of some tests"},{"line_number":14,"context_line":" in the file.And then I added to write the test code."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a5de9d1_43099cdc","line":11,"range":{"start_line":11,"start_character":31,"end_line":11,"end_character":36},"updated":"2016-01-28 13:43:56.000000000","message":"nit: schema","commit_id":"281abba3a68923aef6a2b55a3856a63c88309fed"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"9fa888ea6a50d8f669811edc05a9fc2e2602b53e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The reason for this bug is that the name is not validated when create"},{"line_number":10,"context_line":" role, domain and groups.In the V3 verison we use jsonschme to validate"},{"line_number":11,"context_line":" them.So I changed the code of schme files to validate the name."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When I wrote the test code, I found that there was a lack of some tests"},{"line_number":14,"context_line":" in the file.And then I added to write the test code."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a5de9d1_8368f488","line":11,"range":{"start_line":11,"start_character":1,"end_line":11,"end_character":8},"updated":"2016-01-28 13:43:56.000000000","message":"nit: them. So","commit_id":"281abba3a68923aef6a2b55a3856a63c88309fed"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"9fa888ea6a50d8f669811edc05a9fc2e2602b53e","unresolved":false,"context_lines":[{"line_number":11,"context_line":" them.So I changed the code of schme files to validate the name."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When I wrote the test code, I found that there was a lack of some tests"},{"line_number":14,"context_line":" in the file.And then I added to write the test code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"I changed the comment in identity/schme.py because the name length is"},{"line_number":17,"context_line":" limited in other schme files.The keystone is removing the support for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a5de9d1_e30f68df","line":14,"range":{"start_line":14,"start_character":8,"end_line":14,"end_character":16},"updated":"2016-01-28 13:43:56.000000000","message":"nit: file and then","commit_id":"281abba3a68923aef6a2b55a3856a63c88309fed"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"9fa888ea6a50d8f669811edc05a9fc2e2602b53e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"When I wrote the test code, I found that there was a lack of some tests"},{"line_number":14,"context_line":" in the file.And then I added to write the test code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"I changed the comment in identity/schme.py because the name length is"},{"line_number":17,"context_line":" limited in other schme files.The keystone is removing the support for"},{"line_number":18,"context_line":" LDAP and only here is the comment of LDAP.So I think the comment here"},{"line_number":19,"context_line":" need to change,too."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a5de9d1_a3fad0bb","line":16,"range":{"start_line":16,"start_character":34,"end_line":16,"end_character":39},"updated":"2016-01-28 13:43:56.000000000","message":"nit: schema","commit_id":"281abba3a68923aef6a2b55a3856a63c88309fed"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"9fa888ea6a50d8f669811edc05a9fc2e2602b53e","unresolved":false,"context_lines":[{"line_number":14,"context_line":" in the file.And then I added to write the test code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"I changed the comment in identity/schme.py because the name length is"},{"line_number":17,"context_line":" limited in other schme files.The keystone is removing the support for"},{"line_number":18,"context_line":" LDAP and only here is the comment of LDAP.So I think the comment here"},{"line_number":19,"context_line":" need to change,too."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a5de9d1_03e164fe","line":17,"range":{"start_line":17,"start_character":18,"end_line":17,"end_character":23},"updated":"2016-01-28 13:43:56.000000000","message":"schema","commit_id":"281abba3a68923aef6a2b55a3856a63c88309fed"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"9fa888ea6a50d8f669811edc05a9fc2e2602b53e","unresolved":false,"context_lines":[{"line_number":14,"context_line":" in the file.And then I added to write the test code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"I changed the comment in identity/schme.py because the name length is"},{"line_number":17,"context_line":" limited in other schme files.The keystone is removing the support for"},{"line_number":18,"context_line":" LDAP and only here is the comment of LDAP.So I think the comment here"},{"line_number":19,"context_line":" need to change,too."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Ie7bd79bede3b405b3798bdb584d2fcab66104317"},{"line_number":22,"context_line":"Closes-Bug: #1537697"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"7a5de9d1_e3e768e2","line":19,"range":{"start_line":17,"start_character":30,"end_line":19,"end_character":20},"updated":"2016-01-28 13:43:56.000000000","message":"This is confuse, can you rewrite this? Something like:\n\nIn Mitaka, Keystone are deprecating the LDAP backend support for Idendity and Assignment.","commit_id":"281abba3a68923aef6a2b55a3856a63c88309fed"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"bbda63a04ec56c5a3864ce36ca3ebdee331eb0dd","unresolved":false,"context_lines":[{"line_number":10,"context_line":" role, domain and groups.In the V3 version we use jsonschema to validate"},{"line_number":11,"context_line":" them. So I changed the code of schema files to validate the name."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"When I wrote the test code, I found that there was a lack of some tests"},{"line_number":14,"context_line":" in the file and then I added to write the test code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"I deleted the comment in identity/schema.py because the name length is"},{"line_number":17,"context_line":" limited in other schema files. In Mitaka, Keystone are deprecating the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7a5de9d1_7eadd999","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":53},"updated":"2016-02-01 07:40:08.000000000","message":"why mix those testcases with what you are want to address in this patch? generally speaking, the testcase added is to prove your fixing, so that we can keep it focused.","commit_id":"93ace55ebf5860e6e73aa631fb42e3cf9ab7c738"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"bbda63a04ec56c5a3864ce36ca3ebdee331eb0dd","unresolved":false,"context_lines":[{"line_number":14,"context_line":" in the file and then I added to write the test code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"I deleted the comment in identity/schema.py because the name length is"},{"line_number":17,"context_line":" limited in other schema files. In Mitaka, Keystone are deprecating the"},{"line_number":18,"context_line":" LDAP backend support for Idendity and Assignment. So I think the comment"},{"line_number":19,"context_line":" here need to be deleted,too."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Ie7bd79bede3b405b3798bdb584d2fcab66104317"},{"line_number":22,"context_line":"Closes-Bug: #1537697"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"7a5de9d1_be3271a5","line":19,"range":{"start_line":17,"start_character":32,"end_line":19,"end_character":29},"updated":"2016-02-01 07:40:08.000000000","message":"yep, it has been deprecated but not removed yet. I am not fan of changing the behavior that keystone still supports.","commit_id":"93ace55ebf5860e6e73aa631fb42e3cf9ab7c738"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a64e439711b8c881f18274d62215f3dacc564c2a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"The name can be just white character except project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The reason for this bug is that the name is not validated when create"},{"line_number":10,"context_line":" role, domain and groups.In the V3 version we use jsonschema to"},{"line_number":11,"context_line":"validate them. So I changed the code of schema files to validate"},{"line_number":12,"context_line":"the name."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"7af24918_5888de22","line":10,"updated":"2016-03-01 21:32:01.000000000","message":"nit: add a space between . and In.","commit_id":"7887aee191828bf7cb4f8d7af4a891972c889729"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a64e439711b8c881f18274d62215f3dacc564c2a","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"I deleted the comment in identity/schema.py because the name length is"},{"line_number":18,"context_line":" limited in other schema files. In Mitaka, Keystone are deprecating"},{"line_number":19,"context_line":"the LDAP backend support for Idendity and Assignment. So I think the"},{"line_number":20,"context_line":" comment here need to be deleted,too."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Ie7bd79bede3b405b3798bdb584d2fcab66104317"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"7af24918_9899c671","line":19,"updated":"2016-03-01 21:32:01.000000000","message":"Identity*","commit_id":"7887aee191828bf7cb4f8d7af4a891972c889729"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a64e439711b8c881f18274d62215f3dacc564c2a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"I deleted the comment in identity/schema.py because the name length is"},{"line_number":18,"context_line":" limited in other schema files. In Mitaka, Keystone are deprecating"},{"line_number":19,"context_line":"the LDAP backend support for Idendity and Assignment. So I think the"},{"line_number":20,"context_line":" comment here need to be deleted,too."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: Ie7bd79bede3b405b3798bdb584d2fcab66104317"},{"line_number":23,"context_line":"Closes-Bug: #1537697"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"7af24918_d8a34e9d","line":20,"updated":"2016-03-01 21:32:01.000000000","message":"nit: add a space after the comma.","commit_id":"7887aee191828bf7cb4f8d7af4a891972c889729"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f8f1ba00deba78328d529dc8732bd80cbcb84ae0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"The name can be just white character except project and user"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The reason for this bug is that the name is not validated when create"},{"line_number":10,"context_line":" role, domain and groups. In the V3 version we use jsonschema to"},{"line_number":11,"context_line":"validate them. So I changed the code of schema files to validate"},{"line_number":12,"context_line":"the name."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"5aef4532_34d51d43","line":10,"range":{"start_line":9,"start_character":58,"end_line":10,"end_character":5},"updated":"2016-03-07 21:44:52.000000000","message":"s/when create role, domain and groups/while creating a role, domain or groups","commit_id":"720515db287391b3788eb6a27b42d3ed654a9df6"}],"keystone/assignment/core.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"a7d53f974f2f6068dece9a5584d988e2d9b3b384","unresolved":false,"context_lines":[{"line_number":1301,"context_line":"    def create_role(self, role_id, role, initiator\u003dNone):"},{"line_number":1302,"context_line":"        ret \u003d self.driver.create_role(role_id, role)"},{"line_number":1303,"context_line":"        notifications.Audit.created(self._ROLE, role_id, initiator)"},{"line_number":1304,"context_line":"        role[\u0027name\u0027] \u003d clean.role_name(role[\u0027name\u0027])"},{"line_number":1305,"context_line":"        if MEMOIZE.should_cache(ret):"},{"line_number":1306,"context_line":"            self.get_role.set(ret, self, role_id)"},{"line_number":1307,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a68dd71_8aa36b00","line":1304,"range":{"start_line":1304,"start_character":8,"end_line":1304,"end_character":52},"updated":"2016-01-26 06:27:16.000000000","message":"So this should be above line 1302 I believe since it calls driver create role on that line.","commit_id":"001b05bb299a44bef5d2d96699a2fa1f08559cd6"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"d5ee69c320220ce80a3fad04878b431fac08e78f","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"        return self.driver.list_roles(hints or driver_hints.Hints())"},{"line_number":1312,"context_line":""},{"line_number":1313,"context_line":"    def update_role(self, role_id, role, initiator\u003dNone):"},{"line_number":1314,"context_line":"        ret \u003d self.driver.update_role(role_id, role)"},{"line_number":1315,"context_line":"        notifications.Audit.updated(self._ROLE, role_id, initiator)"},{"line_number":1316,"context_line":"        self.get_role.invalidate(self, role_id)"},{"line_number":1317,"context_line":"        return ret"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_2aeeffb4","line":1314,"range":{"start_line":1314,"start_character":8,"end_line":1314,"end_character":52},"updated":"2016-01-26 06:49:39.000000000","message":"What about checking the role name on an update?","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"}],"keystone/common/clean.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"8efc28b1f214cbdde2bfa26edfa4f2671e1773ed","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"def role_name(name):"},{"line_number":91,"context_line":"    return check_name(\u0027Role\u0027, name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_1bc7d064","line":91,"range":{"start_line":91,"start_character":11,"end_line":91,"end_character":35},"updated":"2016-01-26 04:58:27.000000000","message":"This now imposes a max role name length of 64 where as the SQL backend permitted 255 before.  So this is a backward incompatible change.","commit_id":"28c8a5a1af16a29b049725de9fed970a0917a469"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"ecb4d903ee388b6b790ac0799ffac6c95296b38b","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"def role_name(name):"},{"line_number":91,"context_line":"    return check_name(\u0027Role\u0027, name, max_length\u003d64)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_6778b22c","line":91,"range":{"start_line":91,"start_character":36,"end_line":91,"end_character":49},"updated":"2016-01-26 05:57:19.000000000","message":"should be 255 to be backward compatible. see:\n\nhttps://github.com/openstack/keystone/blob/master/keystone/assignment/role_backends/sql.py#L159","commit_id":"2a84914b15d226d7a3ef651b4be98faef1e839f1"}],"keystone/common/validation/parameter_types.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"addf7d12bbaac0cc9fe462e5d404808ee79bd6ab","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":27,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":28,"context_line":"    \u0027maxLength\u0027: 255,"},{"line_number":29,"context_line":"    \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":30,"context_line":"}"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"external_id_string \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_7a259808","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":22},"updated":"2016-01-26 11:55:13.000000000","message":"why change here?","commit_id":"418c21293d189385fe62a98f3845d2b5c91f0dc2"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9f976dcd8ad203e4793c57e270501c15a3e46243","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":27,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":28,"context_line":"    \u0027maxLength\u0027: 255,"},{"line_number":29,"context_line":"    \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":30,"context_line":"}"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"external_id_string \u003d {"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba0121b8_79f8517d","line":29,"updated":"2016-03-29 00:14:27.000000000","message":"is this supposed to be [\\S]+ not [\\S+]?\n\nThe \u0027[\\S+]\u0027 means \"match either a non-whitespace character *or* a +\n\nthe \u0027[\\S]+\u0027 would be \"match one or more non-whitespace characters\" in traditional regex parlance","commit_id":"053acfe28c6bcd98303f2720e37c6fe61728aec4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"daa8900b26cb7f465b3a235d15db9a2e04c5a6f4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":27,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":28,"context_line":"    \u0027maxLength\u0027: 255,"},{"line_number":29,"context_line":"    \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":30,"context_line":"}"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"external_id_string \u003d {"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba0121b8_2c279d13","line":29,"in_reply_to":"ba0121b8_79f8517d","updated":"2016-03-29 13:23:48.000000000","message":"Wouldn\u0027t this have failed test that already have usernames in keystone? \n\nhttps://github.com/openstack/keystone/blob/master/keystone/tests/unit/test_validation.py#L1761","commit_id":"053acfe28c6bcd98303f2720e37c6fe61728aec4"}],"keystone/identity/core.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fdb4f2f1720550a113598f89345b74f9c8681383","unresolved":false,"context_lines":[{"line_number":934,"context_line":"    @exception_translated(\u0027group\u0027)"},{"line_number":935,"context_line":"    def create_group(self, group_ref, initiator\u003dNone):"},{"line_number":936,"context_line":"        group \u003d group_ref.copy()"},{"line_number":937,"context_line":"        group[\u0027name\u0027] \u003d clean.group_name(group[\u0027name\u0027])"},{"line_number":938,"context_line":"        group.setdefault(\u0027description\u0027, \u0027\u0027)"},{"line_number":939,"context_line":"        domain_id \u003d group[\u0027domain_id\u0027]"},{"line_number":940,"context_line":"        self.resource_api.get_domain(domain_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_ca2963f4","line":937,"range":{"start_line":937,"start_character":8,"end_line":937,"end_character":55},"updated":"2016-01-26 06:47:49.000000000","message":"remove this, `group` only exists in V3, this is implemented in the controller layer.\nsee: \nhttps://github.com/openstack/keystone/blob/master/keystone/identity/controllers.py#L299-L300","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"a3e63a4845a69cc4541d6cb5ca738e3ce64cb80e","unresolved":false,"context_lines":[{"line_number":934,"context_line":"    @exception_translated(\u0027group\u0027)"},{"line_number":935,"context_line":"    def create_group(self, group_ref, initiator\u003dNone):"},{"line_number":936,"context_line":"        group \u003d group_ref.copy()"},{"line_number":937,"context_line":"        group[\u0027name\u0027] \u003d clean.group_name(group[\u0027name\u0027])"},{"line_number":938,"context_line":"        group.setdefault(\u0027description\u0027, \u0027\u0027)"},{"line_number":939,"context_line":"        domain_id \u003d group[\u0027domain_id\u0027]"},{"line_number":940,"context_line":"        self.resource_api.get_domain(domain_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_4d94ad43","line":937,"range":{"start_line":937,"start_character":8,"end_line":937,"end_character":55},"in_reply_to":"9a68dd71_ca2963f4","updated":"2016-01-26 07:22:00.000000000","message":"Does the jsonschema check for a name of one whitespace character?  Appears it only checks for len \u003e 0.","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"d5ee69c320220ce80a3fad04878b431fac08e78f","unresolved":false,"context_lines":[{"line_number":980,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":981,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"},{"line_number":982,"context_line":"        group \u003d self._clear_domain_id_if_domain_unaware(driver, group)"},{"line_number":983,"context_line":"        ref \u003d driver.update_group(entity_id, group)"},{"line_number":984,"context_line":"        self.get_group.invalidate(self, group_id)"},{"line_number":985,"context_line":"        notifications.Audit.updated(self._GROUP, group_id, initiator)"},{"line_number":986,"context_line":"        return self._set_domain_id_and_mapping("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_ea7c67ed","line":983,"range":{"start_line":983,"start_character":8,"end_line":983,"end_character":51},"updated":"2016-01-26 06:49:39.000000000","message":"What about calling clean on the update of a group name?","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"842f0de49e0159e7b8323d0e43693a9f2c67ff2a","unresolved":false,"context_lines":[{"line_number":980,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":981,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"},{"line_number":982,"context_line":"        group \u003d self._clear_domain_id_if_domain_unaware(driver, group)"},{"line_number":983,"context_line":"        ref \u003d driver.update_group(entity_id, group)"},{"line_number":984,"context_line":"        self.get_group.invalidate(self, group_id)"},{"line_number":985,"context_line":"        notifications.Audit.updated(self._GROUP, group_id, initiator)"},{"line_number":986,"context_line":"        return self._set_domain_id_and_mapping("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_ca93a3ff","line":983,"range":{"start_line":983,"start_character":8,"end_line":983,"end_character":51},"in_reply_to":"9a68dd71_ea7c67ed","updated":"2016-01-26 06:54:24.000000000","message":"no need to do this, it has been checked in control layer by jsonschema.","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"}],"keystone/identity/schema.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7c341fb44c3c50dce6f0708c2b7a06a72ab60326","unresolved":false,"context_lines":[{"line_number":19,"context_line":"_identity_name \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":21,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":22,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":23,"context_line":"    \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a5de9d1_5d3451dd","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":20},"updated":"2016-01-27 15:12:22.000000000","message":"This seems unrelated to the change. I\u0027m not sure we can limit the max length of identity names - see lhcheng\u0027s comment above.","commit_id":"e6cb5e314fb3d56a1504ffcfb719fc1fb31d76ab"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a2f96e02c0c660d660fc9e3cf2b61151cbad2acd","unresolved":false,"context_lines":[{"line_number":19,"context_line":"_group_name \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":21,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":22,"context_line":"    \u0027maxLength\u0027: 64,"},{"line_number":23,"context_line":"    \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_9b87150f","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":20},"updated":"2016-01-28 05:30:12.000000000","message":"this change is irrelevant, pls revert this change.\n\nkeystone has ldap backend beside the SQL, i think lhcheng\u0027s comments is still valid.\n\nIf you think this should be changed, pls propose another review!","commit_id":"542cc37207e7dc24fe2d72d288883dcdd302f12e"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"0578743195972c6028ec5f2e0d2ce00a5acdc08d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from keystone.common.validation import parameter_types"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# In the V3 version, we use jsonschme to validate the name\u0027s length."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"_group_name \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027string\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_ed5527c6","line":17,"range":{"start_line":17,"start_character":28,"end_line":17,"end_character":37},"updated":"2016-01-28 09:03:19.000000000","message":"jsonschema","commit_id":"f24eb73a74e5266f211479489020d903429e0011"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"0578743195972c6028ec5f2e0d2ce00a5acdc08d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"_group_properties \u003d {"},{"line_number":52,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description),"},{"line_number":53,"context_line":"    \u0027domain_id\u0027: parameter_types.id_string,"},{"line_number":54,"context_line":"    \u0027name\u0027: _group_name"},{"line_number":55,"context_line":"}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"group_create \u003d {"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_ed9f675d","line":54,"range":{"start_line":54,"start_character":12,"end_line":54,"end_character":23},"updated":"2016-01-28 09:03:19.000000000","message":"_group_name is only used once (here), so might as well just include the values of _group_name here instead","commit_id":"f24eb73a74e5266f211479489020d903429e0011"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"b1caceb1533f71931d532735930f3a9232e9e7f4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    \u0027description\u0027: validation.nullable(parameter_types.description),"},{"line_number":20,"context_line":"    \u0027domain_id\u0027: parameter_types.id_string,"},{"line_number":21,"context_line":"    \u0027enabled\u0027: parameter_types.boolean,"},{"line_number":22,"context_line":"    \u0027name\u0027: parameter_types.name,"},{"line_number":23,"context_line":"    \u0027password\u0027: {"},{"line_number":24,"context_line":"        \u0027type\u0027: [\u0027string\u0027, \u0027null\u0027]"},{"line_number":25,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":26,"id":"bae84128_fbc5880a","line":22,"range":{"start_line":22,"start_character":12,"end_line":22,"end_character":33},"updated":"2016-02-24 21:04:39.000000000","message":"i think we should revert this change because it is adding a length limitation to the ldap backend.","commit_id":"98750c437fa7fbf806ebcfd3dbe8a1f1826877f9"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"b1caceb1533f71931d532735930f3a9232e9e7f4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    \u0027name\u0027: {"},{"line_number":46,"context_line":"        \u0027type\u0027: \u0027string\u0027,"},{"line_number":47,"context_line":"        \u0027minLength\u0027: 1,"},{"line_number":48,"context_line":"        \u0027maxLength\u0027: 64,"},{"line_number":49,"context_line":"        \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":50,"context_line":"    }"},{"line_number":51,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":26,"id":"bae84128_dbf1a46c","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":24},"updated":"2016-02-24 21:04:39.000000000","message":"i think we should not set a maxLength. What do you think?","commit_id":"98750c437fa7fbf806ebcfd3dbe8a1f1826877f9"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"f6257245840d2ddbd4ef35728988ec08c25fa876","unresolved":false,"context_lines":[{"line_number":19,"context_line":"_identity_name \u003d {"},{"line_number":20,"context_line":"    \u0027type\u0027: \u0027string\u0027,"},{"line_number":21,"context_line":"    \u0027minLength\u0027: 1,"},{"line_number":22,"context_line":"    \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"_user_properties \u003d {"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba0121b8_d916bda6","line":22,"updated":"2016-03-29 00:15:28.000000000","message":"See previous comment.","commit_id":"053acfe28c6bcd98303f2720e37c6fe61728aec4"}],"keystone/resource/core.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"fdb4f2f1720550a113598f89345b74f9c8681383","unresolved":false,"context_lines":[{"line_number":512,"context_line":"            self._raise_reserved_character_exception(\u0027Domain\u0027, domain[\u0027name\u0027])"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"        self.assert_domain_not_federated(domain_id, domain)"},{"line_number":515,"context_line":"        domain[\u0027name\u0027] \u003d clean.domain_name(domain[\u0027name\u0027])"},{"line_number":516,"context_line":"        domain.setdefault(\u0027enabled\u0027, True)"},{"line_number":517,"context_line":"        domain[\u0027enabled\u0027] \u003d clean.domain_enabled(domain[\u0027enabled\u0027])"},{"line_number":518,"context_line":"        ret \u003d self.driver.create_domain(domain_id, domain)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_8a336b62","line":515,"range":{"start_line":515,"start_character":8,"end_line":515,"end_character":58},"updated":"2016-01-26 06:47:49.000000000","message":"same here, remove it, this is implemented in control layer by jsonschema.","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"d5ee69c320220ce80a3fad04878b431fac08e78f","unresolved":false,"context_lines":[{"line_number":551,"context_line":"            self._raise_reserved_character_exception(\u0027Domain\u0027, domain[\u0027name\u0027])"},{"line_number":552,"context_line":"        if \u0027enabled\u0027 in domain:"},{"line_number":553,"context_line":"            domain[\u0027enabled\u0027] \u003d clean.domain_enabled(domain[\u0027enabled\u0027])"},{"line_number":554,"context_line":"        ret \u003d self.driver.update_domain(domain_id, domain)"},{"line_number":555,"context_line":"        notifications.Audit.updated(self._DOMAIN, domain_id, initiator)"},{"line_number":556,"context_line":"        # disable owned users \u0026 projects when the API user specifically set"},{"line_number":557,"context_line":"        #     enabled\u003dFalse"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_ea630740","line":554,"range":{"start_line":554,"start_character":8,"end_line":554,"end_character":58},"updated":"2016-01-26 06:49:39.000000000","message":"check here too?","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"842f0de49e0159e7b8323d0e43693a9f2c67ff2a","unresolved":false,"context_lines":[{"line_number":551,"context_line":"            self._raise_reserved_character_exception(\u0027Domain\u0027, domain[\u0027name\u0027])"},{"line_number":552,"context_line":"        if \u0027enabled\u0027 in domain:"},{"line_number":553,"context_line":"            domain[\u0027enabled\u0027] \u003d clean.domain_enabled(domain[\u0027enabled\u0027])"},{"line_number":554,"context_line":"        ret \u003d self.driver.update_domain(domain_id, domain)"},{"line_number":555,"context_line":"        notifications.Audit.updated(self._DOMAIN, domain_id, initiator)"},{"line_number":556,"context_line":"        # disable owned users \u0026 projects when the API user specifically set"},{"line_number":557,"context_line":"        #     enabled\u003dFalse"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_4a8813c7","line":554,"range":{"start_line":554,"start_character":8,"end_line":554,"end_character":58},"in_reply_to":"9a68dd71_ea630740","updated":"2016-01-26 06:54:24.000000000","message":"same here, really unnecessary.","commit_id":"6aef86151f8c65492ff6dee401ce4ce8a15c8a1a"}],"keystone/resource/schema.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"f6257245840d2ddbd4ef35728988ec08c25fa876","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        \u0027type\u0027: \u0027string\u0027,"},{"line_number":26,"context_line":"        \u0027minLength\u0027: 1,"},{"line_number":27,"context_line":"        \u0027maxLength\u0027: 64,"},{"line_number":28,"context_line":"        \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":"}"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"ba0121b8_5923cd05","line":28,"updated":"2016-03-29 00:15:28.000000000","message":"See previous comment","commit_id":"053acfe28c6bcd98303f2720e37c6fe61728aec4"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"f6257245840d2ddbd4ef35728988ec08c25fa876","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027type\u0027: \u0027string\u0027,"},{"line_number":55,"context_line":"        \u0027minLength\u0027: 1,"},{"line_number":56,"context_line":"        \u0027maxLength\u0027: 64,"},{"line_number":57,"context_line":"        \u0027pattern\u0027: \u0027[\\S+]\u0027"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":"}"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"ba0121b8_b92029f9","line":57,"updated":"2016-03-29 00:15:28.000000000","message":"see previous comment","commit_id":"053acfe28c6bcd98303f2720e37c6fe61728aec4"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ce680899680a30244f5ef2514da38553ef58133c","unresolved":false,"context_lines":[{"line_number":2440,"context_line":"        self.assertEqual(DEFAULT_DOMAIN_ID, ref[\u0027domain_id\u0027])"},{"line_number":2441,"context_line":""},{"line_number":2442,"context_line":"    def test_create_domain_blank_name_fails(self):"},{"line_number":2443,"context_line":"        domain \u003d unit.new_domain_ref(name\u003d\u0027\u0027)"},{"line_number":2444,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":2445,"context_line":"                          self.resource_api.create_domain,"},{"line_number":2446,"context_line":"                          domain)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_db7b78f3","line":2443,"updated":"2016-01-26 05:12:04.000000000","message":"This should probably be name\u003d\u0027 \u0027 not name\u003d\u0027\u0027, checking to ensure we\u0027re looking for a space-only string vs an empty-string isn\u0027t different but it looks like the bug is related to \u0027 \u0027 not \u0027\u0027 as \u0027 \u0027 evaluates to a \"true\" value compared to \u0027\u0027 evaluating to a \"false\" value.\n\nThis might also need to be tested twice, once each of the name\u003d\u0027\u0027 and name\u003d\u0027 \u0027.","commit_id":"2a84914b15d226d7a3ef651b4be98faef1e839f1"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ce680899680a30244f5ef2514da38553ef58133c","unresolved":false,"context_lines":[{"line_number":2462,"context_line":"                          domain)"},{"line_number":2463,"context_line":""},{"line_number":2464,"context_line":"    def test_create_role_blank_name_fails(self):"},{"line_number":2465,"context_line":"        role \u003d unit.new_role_ref(name\u003d\u0027\u0027)"},{"line_number":2466,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":2467,"context_line":"                          self.role_api.create_role,"},{"line_number":2468,"context_line":"                          role)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_fb7e7ce2","line":2465,"updated":"2016-01-26 05:12:04.000000000","message":"same as above.","commit_id":"2a84914b15d226d7a3ef651b4be98faef1e839f1"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ce680899680a30244f5ef2514da38553ef58133c","unresolved":false,"context_lines":[{"line_number":2484,"context_line":"                          role)"},{"line_number":2485,"context_line":""},{"line_number":2486,"context_line":"    def test_create_group_blank_name_fails(self):"},{"line_number":2487,"context_line":"        group \u003d unit.new_group_ref(name\u003d\u0027\u0027,"},{"line_number":2488,"context_line":"                                   domain_id\u003dDEFAULT_DOMAIN_ID)"},{"line_number":2489,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":2490,"context_line":"                          self.identity_api.create_group,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_9b8180c5","line":2487,"updated":"2016-01-26 05:12:04.000000000","message":"Same as above.","commit_id":"2a84914b15d226d7a3ef651b4be98faef1e839f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"58d0de49ccb2d1602cecfa05d8caae0f57089523","unresolved":false,"context_lines":[{"line_number":2508,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":2509,"context_line":"                          self.identity_api.create_group,"},{"line_number":2510,"context_line":"                          group)"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":2513,"context_line":"    @test_utils.wip(\u0027waiting for sub projects acting as domains support\u0027)"},{"line_number":2514,"context_line":"    def test_is_domain_sub_project_has_parent_domain_id(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a68dd71_cd03bdbd","line":2511,"updated":"2016-01-26 07:22:29.000000000","message":"You now need tests for update_role, etc with invalid lengths and characters.","commit_id":"ff068c4de395bdfda66df4810500b8ffed217937"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"addf7d12bbaac0cc9fe462e5d404808ee79bd6ab","unresolved":false,"context_lines":[{"line_number":2439,"context_line":"        self.assertTrue(ref[\u0027is_domain\u0027])"},{"line_number":2440,"context_line":"        self.assertEqual(DEFAULT_DOMAIN_ID, ref[\u0027domain_id\u0027])"},{"line_number":2441,"context_line":""},{"line_number":2442,"context_line":"    def test_create_domain_blank_name_fails(self):"},{"line_number":2443,"context_line":"        domain \u003d unit.new_domain_ref(name\u003d\u0027\u0027)"},{"line_number":2444,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":2445,"context_line":"                          self.resource_api.create_domain,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_3ae400ab","line":2442,"updated":"2016-01-26 11:55:13.000000000","message":"this is not a good place to hold these testcases, suggest to move to test_validation.py.","commit_id":"418c21293d189385fe62a98f3845d2b5c91f0dc2"}],"keystone/tests/unit/test_validation.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"a2f96e02c0c660d660fc9e3cf2b61151cbad2acd","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def test_validate_project_create_fails_with_invalid_name_fails(self):"},{"line_number":452,"context_line":"        \"\"\"Exception when validating an create request with invalid `name`.\"\"\""},{"line_number":453,"context_line":"        request_to_validate \u003d {\u0027name\u0027: True}"},{"line_number":454,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":455,"context_line":"                          self.create_project_validator.validate,"},{"line_number":456,"context_line":"                          request_to_validate)"},{"line_number":457,"context_line":"        request_to_validate \u003d {\u0027name\u0027: 24}"},{"line_number":458,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":459,"context_line":"                          self.create_project_validator.validate,"},{"line_number":460,"context_line":"                          request_to_validate)"},{"line_number":461,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027  \u0027}"},{"line_number":462,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":463,"context_line":"                          self.create_project_validator.validate,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a5de9d1_9bb5d5ce","line":460,"range":{"start_line":453,"start_character":0,"end_line":460,"end_character":46},"updated":"2016-01-28 05:30:12.000000000","message":"these testcases itself it good, but they are irrelevant with the fixing here.\n\nAgain, if you think these testcases is needed but missed, pls propose another review!","commit_id":"542cc37207e7dc24fe2d72d288883dcdd302f12e"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"84577956bafbd438e9177e7635ab4595aeea01fa","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                          request_to_validate)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def test_validate_project_create_fails_with_invalid_name_fails(self):"},{"line_number":452,"context_line":"        \"\"\"Exception when validating an create request with invalid `name`.\"\"\""},{"line_number":453,"context_line":"        request_to_validate \u003d {\u0027name\u0027: True}"},{"line_number":454,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":455,"context_line":"                          self.create_project_validator.validate,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_ed4be757","line":452,"range":{"start_line":452,"start_character":37,"end_line":452,"end_character":39},"updated":"2016-01-28 09:00:17.000000000","message":"a","commit_id":"f24eb73a74e5266f211479489020d903429e0011"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"84577956bafbd438e9177e7635ab4595aeea01fa","unresolved":false,"context_lines":[{"line_number":617,"context_line":"                          request_to_validate)"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"    def test_validate_domain_create_fails_with_invalid_name_fails(self):"},{"line_number":620,"context_line":"        \"\"\"Exception when validating an create request with invalid `name`.\"\"\""},{"line_number":621,"context_line":"        request_to_validate \u003d {\u0027name\u0027: True}"},{"line_number":622,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":623,"context_line":"                          self.create_domain_validator.validate,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_2d69ffbe","line":620,"range":{"start_line":620,"start_character":37,"end_line":620,"end_character":39},"updated":"2016-01-28 09:00:17.000000000","message":"a","commit_id":"f24eb73a74e5266f211479489020d903429e0011"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"84577956bafbd438e9177e7635ab4595aeea01fa","unresolved":false,"context_lines":[{"line_number":700,"context_line":"                          request_to_validate)"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":"    def test_validate_role_create_fails_with_invalid_name_fails(self):"},{"line_number":703,"context_line":"        \"\"\"Exception when validating an create request with invalid `name`.\"\"\""},{"line_number":704,"context_line":"        request_to_validate \u003d {\u0027name\u0027: True}"},{"line_number":705,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":706,"context_line":"                          self.create_role_validator.validate,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_8daa73d3","line":703,"range":{"start_line":703,"start_character":37,"end_line":703,"end_character":39},"updated":"2016-01-28 09:00:17.000000000","message":"a","commit_id":"f24eb73a74e5266f211479489020d903429e0011"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"84577956bafbd438e9177e7635ab4595aeea01fa","unresolved":false,"context_lines":[{"line_number":1899,"context_line":"                          request_to_validate)"},{"line_number":1900,"context_line":""},{"line_number":1901,"context_line":"    def test_validate_user_create_fails_with_invalid_name_fails(self):"},{"line_number":1902,"context_line":"        \"\"\"Exception when validating an create request with invalid `name`.\"\"\""},{"line_number":1903,"context_line":"        request_to_validate \u003d {\u0027name\u0027: True}"},{"line_number":1904,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":1905,"context_line":"                          self.create_user_validator.validate,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_0d8e8378","line":1902,"range":{"start_line":1902,"start_character":37,"end_line":1902,"end_character":39},"updated":"2016-01-28 09:00:17.000000000","message":"a","commit_id":"f24eb73a74e5266f211479489020d903429e0011"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"84577956bafbd438e9177e7635ab4595aeea01fa","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"                          request_to_validate)"},{"line_number":2016,"context_line":""},{"line_number":2017,"context_line":"    def test_validate_group_create_fails_with_invalid_name_fails(self):"},{"line_number":2018,"context_line":"        \"\"\"Exception when validating an create request with invalid `name`.\"\"\""},{"line_number":2019,"context_line":"        request_to_validate \u003d {\u0027name\u0027: True}"},{"line_number":2020,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":2021,"context_line":"                          self.create_group_validator.validate,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a5de9d1_2ddedf6d","line":2018,"range":{"start_line":2018,"start_character":37,"end_line":2018,"end_character":39},"updated":"2016-01-28 09:00:17.000000000","message":"a","commit_id":"f24eb73a74e5266f211479489020d903429e0011"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a64e439711b8c881f18274d62215f3dacc564c2a","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027  \u0027}"},{"line_number":462,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":463,"context_line":"                          self.create_project_validator.validate,"},{"line_number":464,"context_line":"                          request_to_validate)"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def test_validate_project_request_with_valid_parent_id(self):"},{"line_number":467,"context_line":"        \"\"\"Test that we validate `parent_id` in create project requests.\"\"\""}],"source_content_type":"text/x-python","patch_set":27,"id":"7af24918_f84baaae","line":464,"updated":"2016-03-01 21:32:01.000000000","message":"These could all be simplified into a single loop:\n\n    for invalid_name in [True, 24, \u0027 \u0027]:\n        request_to_validate \u003d {\u0027name\u0027: invalid_name}\n        self.assertRaises(exception.SchemaValidationError,\n                          self.create_project_validator.validate,\n                          request_to_validate)","commit_id":"7887aee191828bf7cb4f8d7af4a891972c889729"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a64e439711b8c881f18274d62215f3dacc564c2a","unresolved":false,"context_lines":[{"line_number":515,"context_line":""},{"line_number":516,"context_line":"    def test_validate_project_update_fails_with_invalid_name_fails(self):"},{"line_number":517,"context_line":"        \"\"\"Exception when validating an update request with invalid `name`.\"\"\""},{"line_number":518,"context_line":"        request_to_validate \u003d {\u0027name\u0027: True}"},{"line_number":519,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":520,"context_line":"                          self.update_project_validator.validate,"},{"line_number":521,"context_line":"                          request_to_validate)"}],"source_content_type":"text/x-python","patch_set":27,"id":"7af24918_18abf61e","line":518,"updated":"2016-03-01 21:32:01.000000000","message":"Since these values are used multiple times we should store them in a variable instead of redefining them every time.\n\n     _INVALID_NAMES \u003d [True, 24, \u0027 \u0027]","commit_id":"7887aee191828bf7cb4f8d7af4a891972c889729"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a64e439711b8c881f18274d62215f3dacc564c2a","unresolved":false,"context_lines":[{"line_number":523,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":524,"context_line":"                          self.update_project_validator.validate,"},{"line_number":525,"context_line":"                          request_to_validate)"},{"line_number":526,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027  \u0027}"},{"line_number":527,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":528,"context_line":"                          self.update_project_validator.validate,"},{"line_number":529,"context_line":"                          request_to_validate)"}],"source_content_type":"text/x-python","patch_set":27,"id":"7af24918_389a3215","line":526,"updated":"2016-03-01 21:32:01.000000000","message":"same comments here as above.","commit_id":"7887aee191828bf7cb4f8d7af4a891972c889729"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a64e439711b8c881f18274d62215f3dacc564c2a","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":631,"context_line":"                          self.create_domain_validator.validate,"},{"line_number":632,"context_line":"                          request_to_validate)"},{"line_number":633,"context_line":""},{"line_number":634,"context_line":"    def test_validate_domain_update_request(self):"},{"line_number":635,"context_line":"        \"\"\"Test that we validate a domain update request.\"\"\""},{"line_number":636,"context_line":"        request_to_validate \u003d {\u0027domain_id\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":27,"id":"7af24918_b88642b7","line":633,"updated":"2016-03-01 21:32:01.000000000","message":"same comments here as above.","commit_id":"7887aee191828bf7cb4f8d7af4a891972c889729"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f8f1ba00deba78328d529dc8732bd80cbcb84ae0","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                          self.create_project_validator.validate,"},{"line_number":482,"context_line":"                          request_to_validate)"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def test_validate_project_create_fails_with_invalid_name_fails(self):"},{"line_number":485,"context_line":"        \"\"\"Exception when validating a create request with invalid `name`.\"\"\""},{"line_number":486,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":487,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"}],"source_content_type":"text/x-python","patch_set":30,"id":"5aef4532_2f3ca492","line":484,"range":{"start_line":484,"start_character":36,"end_line":484,"end_character":43},"updated":"2016-03-07 21:44:52.000000000","message":"remove this _fails_ here","commit_id":"720515db287391b3788eb6a27b42d3ed654a9df6"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f8f1ba00deba78328d529dc8732bd80cbcb84ae0","unresolved":false,"context_lines":[{"line_number":539,"context_line":"                          self.update_project_validator.validate,"},{"line_number":540,"context_line":"                          request_to_validate)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    def test_validate_project_update_fails_with_invalid_name_fails(self):"},{"line_number":543,"context_line":"        \"\"\"Exception when validating an update request with invalid `name`.\"\"\""},{"line_number":544,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":545,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"}],"source_content_type":"text/x-python","patch_set":30,"id":"5aef4532_cf72607c","line":542,"range":{"start_line":542,"start_character":36,"end_line":542,"end_character":43},"updated":"2016-03-07 21:44:52.000000000","message":"remove _fails_","commit_id":"720515db287391b3788eb6a27b42d3ed654a9df6"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4039044a68d7a92e3fde2f31b1daf2de4b201ff7","unresolved":false,"context_lines":[{"line_number":635,"context_line":"                          self.create_domain_validator.validate,"},{"line_number":636,"context_line":"                          request_to_validate)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"    def test_validate_domain_create_fails_with_invalid_name_fails(self):"},{"line_number":639,"context_line":"        \"\"\"Exception when validating a create request with invalid `name`.\"\"\""},{"line_number":640,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":641,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"}],"source_content_type":"text/x-python","patch_set":30,"id":"5aef4532_9999ca71","line":638,"range":{"start_line":638,"start_character":36,"end_line":638,"end_character":41},"updated":"2016-03-07 21:14:06.000000000","message":"you have the \"fails\" word duplicated in all tests. I suggest keeping only the last one: test_validate_domain_create_with_invalid_name_fails","commit_id":"720515db287391b3788eb6a27b42d3ed654a9df6"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4039044a68d7a92e3fde2f31b1daf2de4b201ff7","unresolved":false,"context_lines":[{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def test_validate_domain_update_fails_with_invalid_name_fails(self):"},{"line_number":674,"context_line":"        \"\"\"Exception when validating an update request with invalid `name`.\"\"\""},{"line_number":675,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":676,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":677,"context_line":"            self.assertRaises(exception.SchemaValidationError,"},{"line_number":678,"context_line":"                              self.update_domain_validator.validate,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5aef4532_39e236d6","line":675,"updated":"2016-03-07 21:14:06.000000000","message":"suggestion: too much repetition of this. If you want, you can create a method to do this, and pass the callable as a parameter","commit_id":"720515db287391b3788eb6a27b42d3ed654a9df6"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f8f1ba00deba78328d529dc8732bd80cbcb84ae0","unresolved":false,"context_lines":[{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def test_validate_domain_update_fails_with_invalid_name_fails(self):"},{"line_number":674,"context_line":"        \"\"\"Exception when validating an update request with invalid `name`.\"\"\""},{"line_number":675,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":676,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":677,"context_line":"            self.assertRaises(exception.SchemaValidationError,"},{"line_number":678,"context_line":"                              self.update_domain_validator.validate,"}],"source_content_type":"text/x-python","patch_set":30,"id":"5aef4532_4f05b0c0","line":675,"in_reply_to":"5aef4532_39e236d6","updated":"2016-03-07 21:44:52.000000000","message":"+1","commit_id":"720515db287391b3788eb6a27b42d3ed654a9df6"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a876546f434ce0f979a2c21e291958091e0f38e8","unresolved":false,"context_lines":[{"line_number":672,"context_line":"                          request_to_validate)"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def role_invalid_name(self, validate):"},{"line_number":675,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":676,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":677,"context_line":"            self.assertRaises(exception.SchemaValidationError,"},{"line_number":678,"context_line":"                              validate,"},{"line_number":679,"context_line":"                              request_to_validate)"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    def test_validate_role_create_fails_with_invalid_name(self):"},{"line_number":682,"context_line":"        \"\"\"Exception when validating a create request with invalid `name`.\"\"\""}],"source_content_type":"text/x-python","patch_set":31,"id":"5aef4532_4d391c41","line":679,"range":{"start_line":675,"start_character":0,"end_line":679,"end_character":50},"updated":"2016-03-08 12:23:51.000000000","message":"I think you need only one function, not individual ones for projects, domains, users, roles... (the code is the same)","commit_id":"41bac9cf19eca32e826268076618e41c8be35055"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"08bf2440f5544582e416bc442b86da6ff17eac9e","unresolved":false,"context_lines":[{"line_number":100,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def invalid_name(self, validate):"},{"line_number":104,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":105,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":106,"context_line":"            self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":32,"id":"5aef4532_2897f9ec","line":103,"updated":"2016-03-09 21:33:26.000000000","message":"I would consider this test behavior and it should be included in the test class.","commit_id":"ffe016ca609c922a3c4af278912c9465a8d5a5fe"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"b3e62182152ccb07686e98a4e75ed1d13db2b874","unresolved":false,"context_lines":[{"line_number":100,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def invalid_name(self, validate):"},{"line_number":104,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":105,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":106,"context_line":"            self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":32,"id":"5aef4532_73dc5673","line":103,"in_reply_to":"5aef4532_2897f9ec","updated":"2016-03-09 21:41:55.000000000","message":"+1","commit_id":"ffe016ca609c922a3c4af278912c9465a8d5a5fe"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"baf27120b5413aadd6fc8199f6a3970cdabc5000","unresolved":false,"context_lines":[{"line_number":100,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def invalid_name(self, validate):"},{"line_number":104,"context_line":"        for invalid_name in _INVALID_NAMES:"},{"line_number":105,"context_line":"            request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":106,"context_line":"            self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":32,"id":"5aef4532_272f0840","line":103,"in_reply_to":"5aef4532_73dc5673","updated":"2016-03-10 12:14:47.000000000","message":"Actually...\n\nWe have several classes here, one option is to have this like that (maybe change the method name to \"_assert_valid_entity_name\") or have it replicated across the classes.","commit_id":"ffe016ca609c922a3c4af278912c9465a8d5a5fe"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2473eb2cc6c57a5d66785670a8dd6bc6dc3578b9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def _assert_valid_entity_name(self, validate):"},{"line_number":104,"context_line":"    for invalid_name in _INVALID_NAMES:"},{"line_number":105,"context_line":"        request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":106,"context_line":"        self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5aef4532_527be67a","line":103,"updated":"2016-03-10 16:11:23.000000000","message":"If this take a self then it should be a method.","commit_id":"43f19a6e45d01588e2d46abd78ad2e56ba763115"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"beb534b34d72ed40e76bc5151a9fa5a9346f0244","unresolved":false,"context_lines":[{"line_number":100,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def _assert_valid_entity_name(self, validate):"},{"line_number":104,"context_line":"    for invalid_name in _INVALID_NAMES:"},{"line_number":105,"context_line":"        request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":106,"context_line":"        self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5aef4532_d24d36c5","line":103,"in_reply_to":"5aef4532_527be67a","updated":"2016-03-10 16:16:54.000000000","message":"*class method*?","commit_id":"43f19a6e45d01588e2d46abd78ad2e56ba763115"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"8de265e59d904261d314a03619c9470ed815cbaa","unresolved":false,"context_lines":[{"line_number":100,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def _assert_valid_entity_name(self, validate):"},{"line_number":104,"context_line":"    for invalid_name in _INVALID_NAMES:"},{"line_number":105,"context_line":"        request_to_validate \u003d {\u0027name\u0027: invalid_name}"},{"line_number":106,"context_line":"        self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5aef4532_12df993a","line":103,"in_reply_to":"5aef4532_d24d36c5","updated":"2016-03-10 17:28:05.000000000","message":"just remove the \"self\" here and this is fine imho","commit_id":"43f19a6e45d01588e2d46abd78ad2e56ba763115"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f046c72051ca9900e8021729ea3366e1706fecf4","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    def test_validate_project_create_fails_with_invalid_name(self):"},{"line_number":462,"context_line":"        \"\"\"Exception when validating a create request with invalid `name`.\"\"\""},{"line_number":463,"context_line":"        _assert_valid_entity_name(self,"},{"line_number":464,"context_line":"                                  self.create_project_validator.validate)"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def test_validate_project_request_with_valid_parent_id(self):"},{"line_number":467,"context_line":"        \"\"\"Test that we validate `parent_id` in create project requests.\"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"5aef4532_efe209d4","line":464,"updated":"2016-03-10 16:02:39.000000000","message":"To maintain consistency with the rest of the tests in this module, I might consider doing something like the following:\n\n    def test_validate_project_create_fails_with_invalid_name(self):\n        for invalid_name in _INVALID_NAMES:\n            request_to_validate \u003d {\u0027name\u0027: invalid_name}\n            self.assertRaises(...)\n\n    def test_validate_project_update_fails_with_invalid_name(self):\n        for invalid_name in _INVALID_NAMES:\n            request_to_validate \u003d {\u0027name\u0027: invalid_name}\n            self.assertRaises(...)\n\nThis pattern could be repeated for domains, roles, users, and groups in their respective classes.","commit_id":"43f19a6e45d01588e2d46abd78ad2e56ba763115"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"8de265e59d904261d314a03619c9470ed815cbaa","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    def test_validate_project_create_fails_with_invalid_name(self):"},{"line_number":462,"context_line":"        \"\"\"Exception when validating a create request with invalid `name`.\"\"\""},{"line_number":463,"context_line":"        _assert_valid_entity_name(self,"},{"line_number":464,"context_line":"                                  self.create_project_validator.validate)"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def test_validate_project_request_with_valid_parent_id(self):"},{"line_number":467,"context_line":"        \"\"\"Test that we validate `parent_id` in create project requests.\"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"5aef4532_d231b1a3","line":464,"in_reply_to":"5aef4532_b2b86a12","updated":"2016-03-10 17:28:05.000000000","message":"it is the *same* code, why repeat it if we can use a single common method?","commit_id":"43f19a6e45d01588e2d46abd78ad2e56ba763115"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"2473eb2cc6c57a5d66785670a8dd6bc6dc3578b9","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    def test_validate_project_create_fails_with_invalid_name(self):"},{"line_number":462,"context_line":"        \"\"\"Exception when validating a create request with invalid `name`.\"\"\""},{"line_number":463,"context_line":"        _assert_valid_entity_name(self,"},{"line_number":464,"context_line":"                                  self.create_project_validator.validate)"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def test_validate_project_request_with_valid_parent_id(self):"},{"line_number":467,"context_line":"        \"\"\"Test that we validate `parent_id` in create project requests.\"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"5aef4532_b2b86a12","line":464,"in_reply_to":"5aef4532_efe209d4","updated":"2016-03-10 16:11:23.000000000","message":"I agree.","commit_id":"43f19a6e45d01588e2d46abd78ad2e56ba763115"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9b2d7e31c9e09139ee97ab1056690d79f7a0880f","unresolved":false,"context_lines":[{"line_number":712,"context_line":"                              self.create_role_validator.validate,"},{"line_number":713,"context_line":"                              request_to_validate)"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"    def test_validate_role_create_fails_with_name_of_zero_length(self):"},{"line_number":716,"context_line":"        \"\"\"Exception is raised on role create with a zero-length `name`.\"\"\""},{"line_number":717,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027\u0027}"},{"line_number":718,"context_line":"        self.assertRaises(exception.SchemaValidationError,"}],"source_content_type":"text/x-python","patch_set":35,"id":"1af94dfe_aa28fd9a","line":715,"updated":"2016-03-18 18:36:19.000000000","message":"This is an interesting test case - should we add it to the list of invalid types? \n\n    _INVALID_NAMES \u003d [True, 24, \u0027 \u0027, \u0027\u0027]","commit_id":"915ce26e2cc3d56561c64c4f662138b8ba0431ff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9b2d7e31c9e09139ee97ab1056690d79f7a0880f","unresolved":false,"context_lines":[{"line_number":1913,"context_line":""},{"line_number":1914,"context_line":"    def test_validate_user_update_fails_with_name_of_zero_length(self):"},{"line_number":1915,"context_line":"        \"\"\"Exception raised when validating a username with length of zero.\"\"\""},{"line_number":1916,"context_line":"        request_to_validate \u003d {\u0027name\u0027: \u0027\u0027}"},{"line_number":1917,"context_line":"        self.assertRaises(exception.SchemaValidationError,"},{"line_number":1918,"context_line":"                          self.update_user_validator.validate,"},{"line_number":1919,"context_line":"                          request_to_validate)"}],"source_content_type":"text/x-python","patch_set":35,"id":"1af94dfe_0a1e516f","line":1916,"updated":"2016-03-18 18:36:19.000000000","message":"same comment here","commit_id":"915ce26e2cc3d56561c64c4f662138b8ba0431ff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"daa8900b26cb7f465b3a235d15db9a2e04c5a6f4","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"_INVALID_FILTERS \u003d [\u0027some string\u0027, 1, 0, True, False]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"_INVALID_NAMES \u003d [True, 24, \u0027 \u0027, \u0027\u0027]"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"def expected_validation_failure(msg):"}],"source_content_type":"text/x-python","patch_set":37,"id":"ba0121b8_4cc65168","line":109,"updated":"2016-03-29 13:23:48.000000000","message":"Based on Morgan\u0027s comment - we should add another entry to this list that is multiple non-whitespace characters.","commit_id":"053acfe28c6bcd98303f2720e37c6fe61728aec4"}]}
