)]}'
{"\tkeystone/tests/unit/credential/test_backend_sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"22cf79ee085d75d58d17a12507d4e1b2c5f3e69d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            self.credentials.append(cred)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_backend_credential_sql_hints_none(self):"},{"line_number":86,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":87,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_backend_credential_sql_no_hints(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a629dbe_3d5d05ea","line":86,"updated":"2016-11-07 15:50:03.000000000","message":"Another test case we could add here would be: \n\n  - create several credentials\n    - create two with `project_id` set to a random uuid\n    - create two with `project_id` set to None\n  - assert that listing credentials without hints returns four credentials\n  - build a hints object asking for all credentials with None for a `project_id` value: \n    - hints.add_filter(\u0027project_id\u0027, None)\n  - assert two credentials are returned in the list and they both have a `project_id` value of None.\n\nWhat I should have clarified earlier was using hints from the  keystone.common.driver_hints module. That way we can build hints objects to ask for specific data from the backend. The tests here are just asserting all credentials are returned when we don\u0027t pass any hints at all.\n\nHere is an attempt at what I was trying to do originally: \n\nhttp://cdn.pasteraw.com/pp626dyueny2aiprvo15uankbus97nf","commit_id":"c5bcc34c945729469fdc848152964bb2de241899"}],"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"34d7e202386bc019283437f9bd4af7713f3cd6f0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     nitin-29-gupta \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-19 18:31:00 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added test cases for verifying the fix regarding bug #1614154"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I2e6fde1696e44f1b9456737f7c643e757cd3b758"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa6399be_0878ac2a","line":7,"updated":"2016-10-19 15:03:14.000000000","message":"Here we should try and define why we should merge the patch and why it is beneficial to the project. We can also add:\n\n  Partial-Bug: 1614154\n\nto the footer of the commit message so that our launchpad/openstack tooling will pick it up and automatically comment on the bug report.\n\nWe have some good documentation around commit messages here - https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"11b8bcf23d55434f63d6923a2ef597105c05cbc4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     nitin-29-gupta \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-19 18:31:00 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added test cases for verifying the fix regarding bug #1614154"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I2e6fde1696e44f1b9456737f7c643e757cd3b758"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa6399be_b8236057","line":7,"in_reply_to":"fa6399be_0878ac2a","updated":"2016-10-21 17:03:36.000000000","message":"Added Partial-Bug: 1614154\nAlso reason for adding test case is mentioned.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de8ea72ad68d621f41eabdd9c7b1becbd7e91aa4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ba5da102_c242083e","updated":"2016-11-01 01:12:11.000000000","message":"i recommend reading the examples here: https://wiki.openstack.org/wiki/GitCommitMessages#Examples_of_good_practice_2","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de8ea72ad68d621f41eabdd9c7b1becbd7e91aa4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NITIN GUPTA \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-22 10:13:22 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added test cases for verifying the fix regarding bug #1614154"},{"line_number":8,"context_line":"Test cases are added to verify the code with \"None\" Value of hints."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Partial-Bug: 1614154"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I2e6fde1696e44f1b9456737f7c643e757cd3b758"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ba5da102_c26928c0","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":20},"updated":"2016-11-01 01:12:11.000000000","message":"rewrite this to the standard described in the wiki, something like:\n\nAdd test cases for hints\n\n\nseveral resources in keystone make use of hints for querying when a list request is performed. currently, there are no tests for when hints are set to None, causing inconsistent results in various APIs\n\n\nPartial-Bug: 1614154\n\n\nor something like that...","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"79a5f0085d890736b67e507f2dbf8064f1af560c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NITIN GUPTA \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-22 10:13:22 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added test cases for verifying the fix regarding bug #1614154"},{"line_number":8,"context_line":"Test cases are added to verify the code with \"None\" Value of hints."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Partial-Bug: 1614154"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I2e6fde1696e44f1b9456737f7c643e757cd3b758"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"ba5da102_7845686e","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":20},"in_reply_to":"ba5da102_c26928c0","updated":"2016-11-01 08:18:03.000000000","message":"Done","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a46d24316f5f4183b285cb5dc834ae1299d50936","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NITIN GUPTA \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-01 09:12:00 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added test cases for hints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Several resources in keystone make use of hints for querying when a list"},{"line_number":10,"context_line":"request is performed."},{"line_number":11,"context_line":"Test cases are added to verify the APIs with \"None\" Value of hints,"},{"line_number":12,"context_line":"causing inconsistent results in various APIs"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partial-Bug: 1614154"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ba5da102_fa2b2892","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":44},"updated":"2016-11-01 11:32:37.000000000","message":"I know Steve suggested this text, but the change you are making doesn\u0027t seem to follow this text.  As far as I can tell\"\n\na) we already have lots of hints testing\nb) the specific  test you want to do is the one when  passing in None, since this was not tested\nc) since you have to test this with *something* , you chose credentials\n\nSo let\u0027s say something like that!","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NITIN GUPTA \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-01 09:12:00 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added test cases for hints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Several resources in keystone make use of hints for querying when a list"},{"line_number":10,"context_line":"request is performed."},{"line_number":11,"context_line":"Test cases are added to verify the APIs with \"None\" Value of hints,"},{"line_number":12,"context_line":"causing inconsistent results in various APIs"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partial-Bug: 1614154"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ba5da102_eb98a0c2","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":44},"in_reply_to":"ba5da102_4b07e917","updated":"2016-11-02 06:18:16.000000000","message":"Here, purpose of adding test cases is to test that functionality is not breaking if \"None\" or no value of hints is provided, which was causing inconsistent results.\nAlso at the same time i tried to test whether normal functionality i.e with some value of hints provided is also working fine.\nSo, in my opinion, following text would be sufficient enough:\n\"Test cases are added to verify the APIs with \"None\" and no value of hints, which was causing inconsistent results in various APIs.\"\n\nPlease suggest if there could be better text.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f2a1b494b43d7ac2f9fa9852d8145990c8bd5428","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NITIN GUPTA \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-01 09:12:00 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added test cases for hints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Several resources in keystone make use of hints for querying when a list"},{"line_number":10,"context_line":"request is performed."},{"line_number":11,"context_line":"Test cases are added to verify the APIs with \"None\" Value of hints,"},{"line_number":12,"context_line":"causing inconsistent results in various APIs"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partial-Bug: 1614154"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ba5da102_4b07e917","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":44},"in_reply_to":"ba5da102_fa2b2892","updated":"2016-11-01 12:04:31.000000000","message":"thanks henry :)","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"518a54dd0a550cca736aab40fe7338e323315e39","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NITIN GUPTA \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-02 06:22:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added test cases for hints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Several resources in keystone make use of hints for querying when a list"},{"line_number":10,"context_line":"request is performed."},{"line_number":11,"context_line":"Test cases are added to verify the APIs with \"None\" Value of hints,"},{"line_number":12,"context_line":"causing inconsistent results in various APIs"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partial-Bug: 1614154"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba5da102_cad6734e","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":44},"updated":"2016-11-02 08:11:00.000000000","message":"how about:\n\n-----\nAdd test cases for passing \"None\" as a hint\n\nAlthough various components test their respective use of hints, we don\u0027t test what happens if you pass in \"None\". These new tests validate the expected behaviour that all entities should be returned in this case. The tests use the credentials API as an example to show this validation.\n-----","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"2c59d59fb55858a770c63039cd1badae6334b99f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     NITIN GUPTA \u003cnitin291989@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-11-02 06:22:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added test cases for hints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Several resources in keystone make use of hints for querying when a list"},{"line_number":10,"context_line":"request is performed."},{"line_number":11,"context_line":"Test cases are added to verify the APIs with \"None\" Value of hints,"},{"line_number":12,"context_line":"causing inconsistent results in various APIs"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Partial-Bug: 1614154"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba5da102_ea7fb714","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":44},"in_reply_to":"ba5da102_cad6734e","updated":"2016-11-02 09:15:29.000000000","message":"Sounds better, i will add this in next patch.","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"ce47338b7d188249c06eee29450c75397a19f519","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Although various components test their respective use of hints, we don\u0027t"},{"line_number":10,"context_line":"test what happens if you pass in \"None\". These new tests validate the"},{"line_number":11,"context_line":"expected behaviour that all entities should be returned in this case."},{"line_number":12,"context_line":"The tests use the credentials API as an example to show this validation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related-Bug: 1614154"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"ba5da102_d327f5b3","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":72},"updated":"2016-11-02 16:42:36.000000000","message":"Sorry, but i dislike it. The way it looks now is that only credentials are tested, while other things are not. Why can i be sure that users (the most obvious use case) are tested? Projects?","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c9aa0fe16d843805b29b66b0afb36a6101fe9d1e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Although various components test their respective use of hints, we don\u0027t"},{"line_number":10,"context_line":"test what happens if you pass in \"None\". These new tests validate the"},{"line_number":11,"context_line":"expected behaviour that all entities should be returned in this case."},{"line_number":12,"context_line":"The tests use the credentials API as an example to show this validation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Related-Bug: 1614154"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"ba5da102_13b24d06","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":72},"in_reply_to":"ba5da102_d327f5b3","updated":"2016-11-02 16:51:17.000000000","message":"This is really testing that credentials is filtering properly. If we want to explicitly test other APIs then we can do that. I have a patch to test the behavior of filter_limit_query() that I\u0027m working on in response to this one.","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"}],"keystone/tests/unit/credential/test_sql_backend.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"0e37e5a54a24c175b379a3af4f97c5aa62b71905","unresolved":false,"context_lines":[{"line_number":46,"context_line":"class SqlCredential(SqlTests):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003dNone):"},{"line_number":49,"context_line":"        if not(user_id):"},{"line_number":50,"context_line":"                user_id \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":52,"context_line":"                                             extra\u003duuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5da102_2010d958","line":49,"range":{"start_line":49,"start_character":11,"end_line":49,"end_character":23},"updated":"2016-11-02 16:43:48.000000000","message":"why not:\n\nif not user_id:","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c9aa0fe16d843805b29b66b0afb36a6101fe9d1e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"class SqlCredential(SqlTests):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003dNone):"},{"line_number":49,"context_line":"        if not(user_id):"},{"line_number":50,"context_line":"                user_id \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":52,"context_line":"                                             extra\u003duuid.uuid4().hex,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5da102_73cd4984","line":49,"range":{"start_line":49,"start_character":11,"end_line":49,"end_character":23},"in_reply_to":"ba5da102_2010d958","updated":"2016-11-02 16:51:17.000000000","message":"Done","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"0e37e5a54a24c175b379a3af4f97c5aa62b71905","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003dNone):"},{"line_number":49,"context_line":"        if not(user_id):"},{"line_number":50,"context_line":"                user_id \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":52,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":53,"context_line":"                                             type\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5da102_802445c5","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":16},"updated":"2016-11-02 16:43:48.000000000","message":"extra large indentation","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c9aa0fe16d843805b29b66b0afb36a6101fe9d1e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003dNone):"},{"line_number":49,"context_line":"        if not(user_id):"},{"line_number":50,"context_line":"                user_id \u003d uuid.uuid4().hex"},{"line_number":51,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":52,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":53,"context_line":"                                             type\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5da102_73946942","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":16},"in_reply_to":"ba5da102_802445c5","updated":"2016-11-02 16:51:17.000000000","message":"Done","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"0e37e5a54a24c175b379a3af4f97c5aa62b71905","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def _validateCredentialList(self, retrieved_credentials,"},{"line_number":58,"context_line":"                                expected_credentials):"},{"line_number":59,"context_line":"        self.assertEqual(len(expected_credentials), len(retrieved_credentials))"},{"line_number":60,"context_line":"        retrived_ids \u003d [c[\u0027id\u0027] for c in retrieved_credentials]"},{"line_number":61,"context_line":"        for cred in expected_credentials:"},{"line_number":62,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5da102_7339c9d6","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":16},"updated":"2016-11-02 16:43:48.000000000","message":"retrieved","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c9aa0fe16d843805b29b66b0afb36a6101fe9d1e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    def _validateCredentialList(self, retrieved_credentials,"},{"line_number":58,"context_line":"                                expected_credentials):"},{"line_number":59,"context_line":"        self.assertEqual(len(expected_credentials), len(retrieved_credentials))"},{"line_number":60,"context_line":"        retrived_ids \u003d [c[\u0027id\u0027] for c in retrieved_credentials]"},{"line_number":61,"context_line":"        for cred in expected_credentials:"},{"line_number":62,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5da102_b371a146","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":16},"in_reply_to":"ba5da102_7339c9d6","updated":"2016-11-02 16:51:17.000000000","message":"Done","commit_id":"545f9cc546fa5fe2c7ba57a7d49b08c9567fba6d"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6e84738c6030695268b13a5ae3906f956ce01952","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.credential_api.create_credential(credential[\u0027id\u0027], credential)"},{"line_number":55,"context_line":"        return credential"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _validateCredentialList(self, retrieved_credentials,"},{"line_number":58,"context_line":"                                expected_credentials):"},{"line_number":59,"context_line":"        self.assertEqual(len(expected_credentials), len(retrieved_credentials))"},{"line_number":60,"context_line":"        retrieved_ids \u003d [c[\u0027id\u0027] for c in retrieved_credentials]"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_73af092a","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":31},"updated":"2016-11-02 17:04:33.000000000","message":"Not sure why only this function uses camel case","commit_id":"71cd20706b3600211e5bb02c70da545d95d4de30"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4a837cb045b5466ae0c23fc75192511c4ff8a37f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self.credential_api.create_credential(credential[\u0027id\u0027], credential)"},{"line_number":55,"context_line":"        return credential"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _validateCredentialList(self, retrieved_credentials,"},{"line_number":58,"context_line":"                                expected_credentials):"},{"line_number":59,"context_line":"        self.assertEqual(len(expected_credentials), len(retrieved_credentials))"},{"line_number":60,"context_line":"        retrieved_ids \u003d [c[\u0027id\u0027] for c in retrieved_credentials]"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_96756bfb","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":31},"in_reply_to":"ba5da102_73af092a","updated":"2016-11-02 17:17:30.000000000","message":"Done","commit_id":"71cd20706b3600211e5bb02c70da545d95d4de30"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"da48ca2ebbf3019f4f47c3f0e4110de8a8e1ae53","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_backend_credential_sql_hints(self):"},{"line_number":91,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":92,"context_line":"        hints.add_filter(\u0027credentials[user_id]\u0027, None, comparator\u003d\u0027equals\u0027)"},{"line_number":93,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":94,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_backend_credential_sql_no_hints(self):"},{"line_number":97,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba5da102_b6117654","line":94,"range":{"start_line":91,"start_character":0,"end_line":94,"end_character":73},"updated":"2016-11-03 08:16:00.000000000","message":"I\u0027m sorry to be delaying what should be a simple patch, but I still don\u0027t understand what this specific test is doing.  What\u0027s this got to do with testing for None?","commit_id":"de7f02bc9a2501830bbe6fbb6865b8c890d0d2c1"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0dca4475dca38752324dfa5c848a60ad3e49e20a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_backend_credential_sql_hints(self):"},{"line_number":91,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":92,"context_line":"        hints.add_filter(\u0027credentials[user_id]\u0027, None, comparator\u003d\u0027equals\u0027)"},{"line_number":93,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":94,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_backend_credential_sql_no_hints(self):"},{"line_number":97,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba5da102_9128fc9b","line":94,"range":{"start_line":91,"start_character":0,"end_line":94,"end_character":73},"in_reply_to":"ba5da102_51aae485","updated":"2016-11-03 09:20:59.000000000","message":"So the problem is:\n1) The commit message (and bug) are related to None\n2) This isn\u0027t related to that\n\nSo either you need to describe this patch as testing more than when hints is None, or remove this, and submit it in a different patch if you think it is a valid test case (which I question). I am not sure we warrant what happens if you pass in a filter to an attribute that is not valid.\n\nNow I would agree that a passing a valid filter in to show that filtering is working at all with credentials would be a valid comparison test to have here to show that the result is different than passing in None....but that\u0027s not what this test is.","commit_id":"de7f02bc9a2501830bbe6fbb6865b8c890d0d2c1"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"894656f29a9e52e915f0df948ce468f65055b2bc","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_backend_credential_sql_hints(self):"},{"line_number":91,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":92,"context_line":"        hints.add_filter(\u0027credentials[user_id]\u0027, None, comparator\u003d\u0027equals\u0027)"},{"line_number":93,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":94,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_backend_credential_sql_no_hints(self):"},{"line_number":97,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba5da102_77cc38bb","line":94,"range":{"start_line":91,"start_character":0,"end_line":94,"end_character":73},"in_reply_to":"ba5da102_9128fc9b","updated":"2016-11-03 09:55:04.000000000","message":"Removed this test as here all the values are generated randomly, be it user_id, project_id, etc. So it will not be possible to have the desired final output with valid comparison test as it was intended just to check if there is any inconsistent behavior for any \"not None\" value of hints.","commit_id":"de7f02bc9a2501830bbe6fbb6865b8c890d0d2c1"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"588f0d35b34da86fdadef8c31d3218e87776bffb","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_backend_credential_sql_hints(self):"},{"line_number":91,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":92,"context_line":"        hints.add_filter(\u0027credentials[user_id]\u0027, None, comparator\u003d\u0027equals\u0027)"},{"line_number":93,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":94,"context_line":"        self._validate_credential_list(credentials, self.user_credentials)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_backend_credential_sql_no_hints(self):"},{"line_number":97,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba5da102_51aae485","line":94,"range":{"start_line":91,"start_character":0,"end_line":94,"end_character":73},"in_reply_to":"ba5da102_b6117654","updated":"2016-11-03 09:05:56.000000000","message":"This has nothing to do with testing for None.\nThis test case was added just to check if there is any inconsistent behavior for any \"not None\" value of hints.\n\nI think its nice to have this simple test as well here.\nPlease suggest if it need to be removed!","commit_id":"de7f02bc9a2501830bbe6fbb6865b8c890d0d2c1"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"35f171746499c03b4d6ffad909f43f09a03acfef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"ba5da102_3ee0c328","updated":"2016-11-03 18:12:58.000000000","message":"throughout the code, we use \"test_backend_sql\" or \"backends/test_sql\" instead of \"test_sql_backend\"","commit_id":"874ff5fc52fddf1eb66101a85bf4297d8598204c"}],"keystone/tests/unit/test_backend_credential_sql.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a46d24316f5f4183b285cb5dc834ae1299d50936","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# File Name: test_backend_credential_sql.py"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_9a55cc51","line":2,"range":{"start_line":2,"start_character":1,"end_line":2,"end_character":43},"updated":"2016-11-01 11:32:37.000000000","message":"nit: we don\u0027t normally give the file name here...","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# File Name: test_backend_credential_sql.py"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_30768306","line":2,"range":{"start_line":2,"start_character":1,"end_line":2,"end_character":43},"in_reply_to":"ba5da102_9a55cc51","updated":"2016-11-02 06:18:16.000000000","message":"Ok, I will remove this.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"075d58a7d6202339ba68118df2a24c8a2bdc6294","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def setUp(self):"},{"line_number":67,"context_line":"        self.useFixture(database.Database())"},{"line_number":68,"context_line":"        super(SqlCredential, self).setUp()"},{"line_number":69,"context_line":"        self.useFixture("},{"line_number":70,"context_line":"            ksfixtures.KeyRepository("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_3dc11355","line":67,"updated":"2016-11-01 14:19:11.000000000","message":"I asked in prior revisions why we are setting this up twice and also why we don\u0027t just mock it out. Seems like a waste.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def setUp(self):"},{"line_number":67,"context_line":"        self.useFixture(database.Database())"},{"line_number":68,"context_line":"        super(SqlCredential, self).setUp()"},{"line_number":69,"context_line":"        self.useFixture("},{"line_number":70,"context_line":"            ksfixtures.KeyRepository("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_10541f51","line":67,"in_reply_to":"ba5da102_3dc11355","updated":"2016-11-02 06:18:16.000000000","message":"I had removed this, but due to some revision mistakes it got introduced again. Sorry for this.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            self.user_credentials.append(cred)"},{"line_number":85,"context_line":"            self.credentials.append(cred)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_sqlalchemy_bug_hints_None(self):"},{"line_number":88,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":89,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":90,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_269e4d63","line":87,"range":{"start_line":87,"start_character":8,"end_line":87,"end_character":38},"updated":"2016-11-02 06:18:16.000000000","message":"changing this function name to test_backend_credential_sql_hints_none","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a46d24316f5f4183b285cb5dc834ae1299d50936","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            self.credentials.append(cred)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_sqlalchemy_bug_hints_None(self):"},{"line_number":88,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":89,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":90,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":91,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_5aa09443","line":89,"range":{"start_line":88,"start_character":8,"end_line":89,"end_character":64},"updated":"2016-11-01 11:32:37.000000000","message":"maybe I\u0027m being dumb, but what\u0027s the point of these 2 lines?","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"075d58a7d6202339ba68118df2a24c8a2bdc6294","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            self.credentials.append(cred)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_sqlalchemy_bug_hints_None(self):"},{"line_number":88,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":89,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":90,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":91,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_9d985fc2","line":89,"range":{"start_line":88,"start_character":8,"end_line":89,"end_character":64},"in_reply_to":"ba5da102_5aa09443","updated":"2016-11-01 14:19:11.000000000","message":"You\u0027re not. I\u0027ve been asking for this for a while: https://review.openstack.org/#/c/388541/5/keystone/tests/unit/test_sqlalchemy_bug.py@84","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            self.credentials.append(cred)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def test_sqlalchemy_bug_hints_None(self):"},{"line_number":88,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":89,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":90,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":91,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_90ce6f2c","line":89,"range":{"start_line":88,"start_character":8,"end_line":89,"end_character":64},"in_reply_to":"ba5da102_9d985fc2","updated":"2016-11-02 06:18:16.000000000","message":"I had removed this, but due to some revision mistakes it got introduced again. Sorry for this.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"075d58a7d6202339ba68118df2a24c8a2bdc6294","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":91,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_sqlalchemy_bug_hints(self):"},{"line_number":94,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":95,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_3de4b3df","line":93,"updated":"2016-11-01 14:19:11.000000000","message":"What exactly is the bug we are checking for?","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":91,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_sqlalchemy_bug_hints(self):"},{"line_number":94,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":95,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_668a051d","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":33},"updated":"2016-11-02 06:18:16.000000000","message":"changing this function name to test_backend_credential_sql_hints","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":91,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_sqlalchemy_bug_hints(self):"},{"line_number":94,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":95,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_0b95d43d","line":93,"in_reply_to":"ba5da102_3de4b3df","updated":"2016-11-02 06:18:16.000000000","message":"Exactly the bug is regarding the \"None\" or no value of hints, which was causing inconsistent results.\nWhile in this particular test case, i tried to test whether normal functionality i.e with some value of hints provided is working fine or not.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a46d24316f5f4183b285cb5dc834ae1299d50936","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_sqlalchemy_bug_hints(self):"},{"line_number":94,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":95,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":97,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_9a6eac2d","line":95,"range":{"start_line":95,"start_character":55,"end_line":95,"end_character":62},"updated":"2016-11-01 11:32:37.000000000","message":"is this a comparator we support?","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def test_sqlalchemy_bug_hints(self):"},{"line_number":94,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":95,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":97,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_66a3e5b2","line":95,"range":{"start_line":95,"start_character":55,"end_line":95,"end_character":62},"in_reply_to":"ba5da102_9a6eac2d","updated":"2016-11-02 06:18:16.000000000","message":"Currently, this comparator (notlike) is not supported. I just tried to use a random/dummy filter, which is not making any difference as here we are just checking on hints having atleast some value, not \"None\" or no value.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"075d58a7d6202339ba68118df2a24c8a2bdc6294","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":97,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_sqlalchemy_bug_no_hints(self):"},{"line_number":100,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":101,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":102,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_5de5e7d9","line":99,"updated":"2016-11-01 14:19:11.000000000","message":"What exactly is the bug we are checking for?","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":97,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_sqlalchemy_bug_no_hints(self):"},{"line_number":100,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":101,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":102,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_26756d31","line":99,"range":{"start_line":99,"start_character":8,"end_line":99,"end_character":36},"updated":"2016-11-02 06:18:16.000000000","message":"changing this function name to test_backend_credential_sql_no_hints","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":97,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_sqlalchemy_bug_no_hints(self):"},{"line_number":100,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":101,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":102,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_cb859c07","line":99,"in_reply_to":"ba5da102_5de5e7d9","updated":"2016-11-02 06:18:16.000000000","message":"Exactly the bug is regarding the \"None\" or no value of hints, which was causing inconsistent results.\nWhile in this particular test case, i tried to test with no value of hints provided, which in turn will use the default value (None).","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a46d24316f5f4183b285cb5dc834ae1299d50936","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_sqlalchemy_bug_no_hints(self):"},{"line_number":100,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":101,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":102,"context_line":"        credentials \u003d self.credential_api.list_credentials()"},{"line_number":103,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_5ab7b485","line":101,"range":{"start_line":100,"start_character":8,"end_line":101,"end_character":64},"updated":"2016-11-01 11:32:37.000000000","message":"same here, what\u0027s the point of these?","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"43edce1224b0a9aa000fc9559239f519c1b9bad4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def test_sqlalchemy_bug_no_hints(self):"},{"line_number":100,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":101,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":102,"context_line":"        credentials \u003d self.credential_api.list_credentials()"},{"line_number":103,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_f0ddebe0","line":101,"range":{"start_line":100,"start_character":8,"end_line":101,"end_character":64},"in_reply_to":"ba5da102_5ab7b485","updated":"2016-11-02 06:18:16.000000000","message":"I had removed this, but due to some revision mistakes it got introduced again. Sorry for this.","commit_id":"1452109cb4e88aadffc8206d363a9dd8851370f9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"518a54dd0a550cca736aab40fe7338e323315e39","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class SqlCredential(SqlTests):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _create_credential_with_user_id(self, user_id\u003dNone):"},{"line_number":50,"context_line":"        if not(user_id):"},{"line_number":51,"context_line":"                user_id \u003d uuid.uuid4().hex"},{"line_number":52,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":53,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":54,"context_line":"                                             type\u003duuid.uuid4().hex)"},{"line_number":55,"context_line":"        self.credential_api.create_credential(credential[\u0027id\u0027], credential)"},{"line_number":56,"context_line":"        return credential"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _validateCredentialList(self, retrieved_credentials,"},{"line_number":59,"context_line":"                                expected_credentials):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_aa4e9f6c","line":56,"range":{"start_line":49,"start_character":0,"end_line":56,"end_character":25},"updated":"2016-11-02 08:11:00.000000000","message":"could this be an internal function inside setUp() ?","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"2c59d59fb55858a770c63039cd1badae6334b99f","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class SqlCredential(SqlTests):"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _create_credential_with_user_id(self, user_id\u003dNone):"},{"line_number":50,"context_line":"        if not(user_id):"},{"line_number":51,"context_line":"                user_id \u003d uuid.uuid4().hex"},{"line_number":52,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":53,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":54,"context_line":"                                             type\u003duuid.uuid4().hex)"},{"line_number":55,"context_line":"        self.credential_api.create_credential(credential[\u0027id\u0027], credential)"},{"line_number":56,"context_line":"        return credential"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _validateCredentialList(self, retrieved_credentials,"},{"line_number":59,"context_line":"                                expected_credentials):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_ad64f921","line":56,"range":{"start_line":49,"start_character":0,"end_line":56,"end_character":25},"in_reply_to":"ba5da102_aa4e9f6c","updated":"2016-11-02 09:15:29.000000000","message":"I think its fine enough to be a separate protected function so as to increase the modularity and readability.","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"518a54dd0a550cca736aab40fe7338e323315e39","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        for cred in expected_credentials:"},{"line_number":63,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(SqlCredential, self).setUp()"},{"line_number":67,"context_line":"        self.useFixture("},{"line_number":68,"context_line":"            ksfixtures.KeyRepository("}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_2a3c4fc7","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":20},"updated":"2016-11-02 08:11:00.000000000","message":"nit: It might be nice just to add a doc string saying that the test data that will be setup will be 6 credentials, 3 with a given user_id, three with random user_ids","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"2c59d59fb55858a770c63039cd1badae6334b99f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        for cred in expected_credentials:"},{"line_number":63,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def setUp(self):"},{"line_number":66,"context_line":"        super(SqlCredential, self).setUp()"},{"line_number":67,"context_line":"        self.useFixture("},{"line_number":68,"context_line":"            ksfixtures.KeyRepository("}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_aa969fed","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":20},"in_reply_to":"ba5da102_2a3c4fc7","updated":"2016-11-02 09:15:29.000000000","message":"Agreed. \nI will add the doc string as suggested.","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"518a54dd0a550cca736aab40fe7338e323315e39","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_backend_credential_sql_hints(self):"},{"line_number":90,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":91,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":92,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":93,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_backend_credential_sql_no_hints(self):"},{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_aa277fb4","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":72},"updated":"2016-11-02 08:11:00.000000000","message":"so if you want this check to show that filtering credentials actually works, then I\u0027d suggest you pass in a valid comparator and make sure the list you get back is the correct sublist (e.g. filter on  user_id). Using a non-supported comparator just confuses the issue.","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"2c59d59fb55858a770c63039cd1badae6334b99f","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_backend_credential_sql_hints(self):"},{"line_number":90,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":91,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":92,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints)"},{"line_number":93,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_backend_credential_sql_no_hints(self):"},{"line_number":96,"context_line":"        credentials \u003d self.credential_api.list_credentials()"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_2d56295c","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":72},"in_reply_to":"ba5da102_aa277fb4","updated":"2016-11-02 09:15:29.000000000","message":"Agreed.\ni will use \"equals\", a valid comparator supported currently and use \"credentials[user_id]\" for filtering out of the following options: type, id, user_id, blob and project_id.","commit_id":"963dff9c721cbe4095631e968939eb15789aac74"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f017a3d6e19abe3bdec8c767fd8dc25b63dd13c7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from keystone.tests.unit import default_fixtures"},{"line_number":24,"context_line":"from keystone.tests.unit import ksfixtures"},{"line_number":25,"context_line":"from keystone.tests.unit.ksfixtures import database"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5da102_95900f45","line":26,"updated":"2016-11-02 13:19:53.000000000","message":"Missing a newline here. See http://docs.openstack.org/developer/hacking/#import-order-template for more info","commit_id":"98a855dc049a5d8ed76ee69b7afbcb04837de7db"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"88dfdcb826f736e13e24a4e979bcbcb2d4b203a7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from keystone.tests.unit import default_fixtures"},{"line_number":24,"context_line":"from keystone.tests.unit import ksfixtures"},{"line_number":25,"context_line":"from keystone.tests.unit.ksfixtures import database"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5da102_f03872a2","line":26,"in_reply_to":"ba5da102_168086bf","updated":"2016-11-02 15:47:28.000000000","message":"No, I\u0027m saying that you need a newline here.","commit_id":"98a855dc049a5d8ed76ee69b7afbcb04837de7db"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"db1f529239382aab95eee298b4f55fb590c09bd1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from keystone.tests.unit import default_fixtures"},{"line_number":24,"context_line":"from keystone.tests.unit import ksfixtures"},{"line_number":25,"context_line":"from keystone.tests.unit.ksfixtures import database"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5da102_168086bf","line":26,"in_reply_to":"ba5da102_95900f45","updated":"2016-11-02 14:17:28.000000000","message":"Couldn\u0027t see any issues here.\nBut the issue is with the doc string added at line no. 66.","commit_id":"98a855dc049a5d8ed76ee69b7afbcb04837de7db"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4266f7179893022ef2e76e46b94077fa77334f45","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from keystone.tests.unit import default_fixtures"},{"line_number":24,"context_line":"from keystone.tests.unit import ksfixtures"},{"line_number":25,"context_line":"from keystone.tests.unit.ksfixtures import database"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5da102_400f8d87","line":26,"in_reply_to":"ba5da102_c08b9d66","updated":"2016-11-02 16:35:34.000000000","message":"Take a look at the link. It show a template for the format of imports. Also I\u0027ve fixed up the other pep8 issues, so hopefully another core can come along and approve this.","commit_id":"98a855dc049a5d8ed76ee69b7afbcb04837de7db"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"fa5f403bf224853f8cde31a59f966202b703486c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from keystone.tests.unit import default_fixtures"},{"line_number":24,"context_line":"from keystone.tests.unit import ksfixtures"},{"line_number":25,"context_line":"from keystone.tests.unit.ksfixtures import database"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba5da102_c08b9d66","line":26,"in_reply_to":"ba5da102_f03872a2","updated":"2016-11-02 16:26:44.000000000","message":"Ok, but i am not getting any issue in pep8 checker here.\n\nAny specific reason for adding a newline here?","commit_id":"98a855dc049a5d8ed76ee69b7afbcb04837de7db"}],"keystone/tests/unit/test_sqlalchemy_bug.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fb3a3e1fcf0a363175df5bfe14c9d1b1cbd4b421","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_67c07c2b","line":2,"updated":"2016-10-19 13:40:03.000000000","message":"Is this the correct copyright? Was this code copied from old foundation code?","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"b40ff148972cd159cac9282d3f54b7bf6932a47d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_bdf3b509","line":2,"in_reply_to":"da6895a0_e3ad9589","updated":"2016-10-22 07:39:07.000000000","message":"Done","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"11b8bcf23d55434f63d6923a2ef597105c05cbc4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_f56ec12d","line":2,"in_reply_to":"fa6399be_67c07c2b","updated":"2016-10-21 17:03:36.000000000","message":"No, this is not the copied code.\nI just used the same file header as used in other files.\nPlease let me know if these is any predefined/default template for adding new files.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"b6bd58ca874692d51c85de57e3b5b08922555888","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_e3ad9589","line":2,"in_reply_to":"fa6399be_f56ec12d","updated":"2016-10-21 21:46:54.000000000","message":"Just remove the copyright then. If you don\u0027t work for the Foundation then they shouldn\u0027t get a copyright to this work.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fb3a3e1fcf0a363175df5bfe14c9d1b1cbd4b421","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class SqlCredential(SqlTests):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003duuid.uuid4().hex):"},{"line_number":49,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":50,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":51,"context_line":"                                             type\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_e7864cda","line":48,"updated":"2016-10-19 13:40:03.000000000","message":"Having that be the default means that every call to _create_credential_with_user_id() will have the exact same default. It\u0027s probably better to use None and in the method so something like \u0027user_id \u003d user_id or uuid.uuid4().hex\u0027.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"b40ff148972cd159cac9282d3f54b7bf6932a47d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class SqlCredential(SqlTests):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003duuid.uuid4().hex):"},{"line_number":49,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":50,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":51,"context_line":"                                             type\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_9dd51145","line":48,"in_reply_to":"da6895a0_23b6addc","updated":"2016-10-22 07:39:07.000000000","message":"I have rechecked it, it is producing the same value every time.\nSo, as suggested by you, i have used \"user_id\" value as \"None\" as default value and assigned uuid.uuid4().hex to user_id in case of \"None\" value.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"b6bd58ca874692d51c85de57e3b5b08922555888","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class SqlCredential(SqlTests):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003duuid.uuid4().hex):"},{"line_number":49,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":50,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":51,"context_line":"                                             type\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6895a0_23b6addc","line":48,"in_reply_to":"fa6399be_b59c490f","updated":"2016-10-21 21:46:54.000000000","message":"Are you sure that this is actually getting a new value each time? Have you tested it?","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"11b8bcf23d55434f63d6923a2ef597105c05cbc4","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"class SqlCredential(SqlTests):"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def _create_credential_with_user_id(self, user_id\u003duuid.uuid4().hex):"},{"line_number":49,"context_line":"        credential \u003d unit.new_credential_ref(user_id\u003duser_id,"},{"line_number":50,"context_line":"                                             extra\u003duuid.uuid4().hex,"},{"line_number":51,"context_line":"                                             type\u003duuid.uuid4().hex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_b59c490f","line":48,"in_reply_to":"fa6399be_e7864cda","updated":"2016-10-21 17:03:36.000000000","message":"since \"uuid.uuid4().hex\" is generating new value every time the _create_credential_with_user_id() function is called, so i can\u0027t see any issue in using this as default value.\nPlease correct me if there is any gap.\nAlso, using None, it is breaking the code.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fb3a3e1fcf0a363175df5bfe14c9d1b1cbd4b421","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def setUp(self):"},{"line_number":63,"context_line":"        self.useFixture(database.Database())"},{"line_number":64,"context_line":"        super(SqlCredential, self).setUp()"},{"line_number":65,"context_line":"        self.useFixture("},{"line_number":66,"context_line":"            ksfixtures.KeyRepository("}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_5235f8d7","line":63,"updated":"2016-10-19 13:40:03.000000000","message":"Why is this setting up the database fixture when the parent already does it?","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"11b8bcf23d55434f63d6923a2ef597105c05cbc4","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            self.assertIn(cred[\u0027id\u0027], retrived_ids)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def setUp(self):"},{"line_number":63,"context_line":"        self.useFixture(database.Database())"},{"line_number":64,"context_line":"        super(SqlCredential, self).setUp()"},{"line_number":65,"context_line":"        self.useFixture("},{"line_number":66,"context_line":"            ksfixtures.KeyRepository("}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_b806001a","line":63,"in_reply_to":"fa6399be_5235f8d7","updated":"2016-10-21 17:03:36.000000000","message":"That was by mistake. Removed","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fb3a3e1fcf0a363175df5bfe14c9d1b1cbd4b421","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            self.credentials.append(cred)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_sqlalchemy_bug_hints_None(self):"},{"line_number":84,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":85,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":86,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":87,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_8763d019","line":84,"updated":"2016-10-19 13:40:03.000000000","message":"Why make a Hints instance if you don\u0027t use it?","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"11b8bcf23d55434f63d6923a2ef597105c05cbc4","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            self.credentials.append(cred)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def test_sqlalchemy_bug_hints_None(self):"},{"line_number":84,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":85,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":86,"context_line":"        credentials \u003d self.credential_api.list_credentials(hints\u003dNone)"},{"line_number":87,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_782708b6","line":84,"in_reply_to":"fa6399be_8763d019","updated":"2016-10-21 17:03:36.000000000","message":"Agreed, Removed.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"fb3a3e1fcf0a363175df5bfe14c9d1b1cbd4b421","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_sqlalchemy_bug_no_hints(self):"},{"line_number":96,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":97,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":98,"context_line":"        credentials \u003d self.credential_api.list_credentials()"},{"line_number":99,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_678f9ccc","line":96,"updated":"2016-10-19 13:40:03.000000000","message":"Why make a Hints instance if you don\u0027t use it?","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"11b8bcf23d55434f63d6923a2ef597105c05cbc4","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_sqlalchemy_bug_no_hints(self):"},{"line_number":96,"context_line":"        hints \u003d driver_hints.Hints()"},{"line_number":97,"context_line":"        hints.add_filter(\u0027key_hash\u0027, None, comparator\u003d\u0027notlike\u0027)"},{"line_number":98,"context_line":"        credentials \u003d self.credential_api.list_credentials()"},{"line_number":99,"context_line":"        self._validateCredentialList(credentials, self.user_credentials)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_982cdc9a","line":96,"in_reply_to":"fa6399be_678f9ccc","updated":"2016-10-21 17:03:36.000000000","message":"Agreed, Removed.","commit_id":"c7011a3c136a4aa7d842522a2819abb55c507f7b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de8ea72ad68d621f41eabdd9c7b1becbd7e91aa4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ba5da102_a20d1439","updated":"2016-11-01 01:12:11.000000000","message":"please don\u0027t call this \"test_sqlalchemy_bug\", add it to https://github.com/openstack/keystone/blob/master/keystone/tests/unit/common/test_sql_core.py instead or call it test_backend_credential_sql.py","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"79a5f0085d890736b67e507f2dbf8064f1af560c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"ba5da102_58d7c422","in_reply_to":"ba5da102_a20d1439","updated":"2016-11-01 08:18:03.000000000","message":"Agreed.\nRenaming the file as \"test_backend_credential_sql.py\".","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de8ea72ad68d621f41eabdd9c7b1becbd7e91aa4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# File Name: test_sqlalchemy_bug.py"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5da102_57195887","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":35},"updated":"2016-11-01 01:12:11.000000000","message":"remove this line","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"79a5f0085d890736b67e507f2dbf8064f1af560c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- coding: utf-8 -*-"},{"line_number":2,"context_line":"# File Name: test_sqlalchemy_bug.py"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5da102_d8f594cb","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":35},"in_reply_to":"ba5da102_57195887","updated":"2016-11-01 08:18:03.000000000","message":"Should i replace the file name with the new name as suggested by you in your previous comment, or, just simply remove the file name.\nAs of now, i am replacing the file name with the new name.","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"de8ea72ad68d621f41eabdd9c7b1becbd7e91aa4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from keystone.common import driver_hints"},{"line_number":17,"context_line":"import keystone.conf"},{"line_number":18,"context_line":"from keystone.credential.providers import fernet as credential_provider"},{"line_number":19,"context_line":"from keystone.tests import unit"},{"line_number":20,"context_line":"from keystone.tests.unit import default_fixtures"},{"line_number":21,"context_line":"from keystone.tests.unit import ksfixtures"},{"line_number":22,"context_line":"from keystone.tests.unit.ksfixtures import database"},{"line_number":23,"context_line":"from six.moves import range"},{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5da102_9713f065","line":24,"range":{"start_line":16,"start_character":0,"end_line":24,"end_character":11},"updated":"2016-11-01 01:12:11.000000000","message":"imports are grouped in a specific way:\n\n1. standard lib\n\n2. third party lib\n\n3. keystone libs\n\nso this should be:\n\n  import uuid\n\n\n  from six.moves import range\n\n\n  from keystone.common import driver_hints\n  import keystone.conf\n  from keystone.credential.providers import fernet as credential_provider\n  from keystone.tests import unit\n  from keystone.tests.unit import default_fixtures\n  from keystone.tests.unit import ksfixtures\n  from keystone.tests.unit.ksfixtures import database","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"},{"author":{"_account_id":23886,"name":"NITIN GUPTA","email":"nitin291989@gmail.com","username":"nitin-29-gupta"},"change_message_id":"79a5f0085d890736b67e507f2dbf8064f1af560c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from keystone.common import driver_hints"},{"line_number":17,"context_line":"import keystone.conf"},{"line_number":18,"context_line":"from keystone.credential.providers import fernet as credential_provider"},{"line_number":19,"context_line":"from keystone.tests import unit"},{"line_number":20,"context_line":"from keystone.tests.unit import default_fixtures"},{"line_number":21,"context_line":"from keystone.tests.unit import ksfixtures"},{"line_number":22,"context_line":"from keystone.tests.unit.ksfixtures import database"},{"line_number":23,"context_line":"from six.moves import range"},{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"CONF \u003d keystone.conf.CONF"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5da102_58bee4d4","line":24,"range":{"start_line":16,"start_character":0,"end_line":24,"end_character":11},"in_reply_to":"ba5da102_9713f065","updated":"2016-11-01 08:18:03.000000000","message":"Agreed.","commit_id":"b55f6b1e57a710a165d1643061d38b2e2155860b"}]}
