)]}'
{"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"2b7e5790f61be7c6894294a8ac8d1b3827530a3b","unresolved":false,"context_lines":[{"line_number":4938,"context_line":"    def create_sample_trust(self, new_id, remaining_uses\u003dNone):"},{"line_number":4939,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":4940,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":4941,"context_line":"        expires_at \u003d datetime.datetime.utcnow().replace(year\u003d2031)"},{"line_number":4942,"context_line":"        trust_data \u003d (self.trust_api.create_trust"},{"line_number":4943,"context_line":"                      (new_id,"},{"line_number":4944,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_5e3e57b9","line":4941,"updated":"2015-10-26 15:41:41.000000000","message":"Doesn\u0027t this need to be in ISO 8601 format?","commit_id":"7d86bf8bb3a9a229517a7192e01597232b32d37e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"303f99cf01f249eed8bc03c887b5dfd9b24925a1","unresolved":false,"context_lines":[{"line_number":4938,"context_line":"    def create_sample_trust(self, new_id, remaining_uses\u003dNone):"},{"line_number":4939,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":4940,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":4941,"context_line":"        expires_at \u003d datetime.datetime.utcnow().replace(year\u003d2031)"},{"line_number":4942,"context_line":"        trust_data \u003d (self.trust_api.create_trust"},{"line_number":4943,"context_line":"                      (new_id,"},{"line_number":4944,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_416f2592","line":4941,"updated":"2015-10-30 07:16:27.000000000","message":"what\u0027s the point of this change?","commit_id":"7d86bf8bb3a9a229517a7192e01597232b32d37e"},{"author":{"_account_id":12114,"name":"Kent Wang","email":"kent.wang@intel.com","username":"k.wang"},"change_message_id":"a6c2b1569d74b7524cf1d4a786a9e3e378e44026","unresolved":false,"context_lines":[{"line_number":4938,"context_line":"    def create_sample_trust(self, new_id, remaining_uses\u003dNone):"},{"line_number":4939,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":4940,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":4941,"context_line":"        expires_at \u003d datetime.datetime.utcnow().replace(year\u003d2031)"},{"line_number":4942,"context_line":"        trust_data \u003d (self.trust_api.create_trust"},{"line_number":4943,"context_line":"                      (new_id,"},{"line_number":4944,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_3ab562ed","line":4941,"in_reply_to":"1a26ad4f_416f2592","updated":"2015-10-30 14:47:07.000000000","message":"Other tests were calling this and receiving the static expires_at time, causing some failures with the introduced duplicate constraint","commit_id":"7d86bf8bb3a9a229517a7192e01597232b32d37e"},{"author":{"_account_id":12114,"name":"Kent Wang","email":"kent.wang@intel.com","username":"k.wang"},"change_message_id":"8dc0ed41399ea42d0e25f1bdd70149cea2aeca7a","unresolved":false,"context_lines":[{"line_number":4938,"context_line":"    def create_sample_trust(self, new_id, remaining_uses\u003dNone):"},{"line_number":4939,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":4940,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":4941,"context_line":"        expires_at \u003d datetime.datetime.utcnow().replace(year\u003d2031)"},{"line_number":4942,"context_line":"        trust_data \u003d (self.trust_api.create_trust"},{"line_number":4943,"context_line":"                      (new_id,"},{"line_number":4944,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a29b11f_24eeecec","line":4941,"in_reply_to":"3a29b11f_5e3e57b9","updated":"2015-10-26 17:15:54.000000000","message":"Hi, as far as I\u0027m aware, it just needs a datetime object. I\u0027ve changed this line of code to get different expire times for each test","commit_id":"7d86bf8bb3a9a229517a7192e01597232b32d37e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"303f99cf01f249eed8bc03c887b5dfd9b24925a1","unresolved":false,"context_lines":[{"line_number":5066,"context_line":"                          self.trust_api.get_trust,"},{"line_number":5067,"context_line":"                          trust_data[\u0027id\u0027])"},{"line_number":5068,"context_line":""},{"line_number":5069,"context_line":"    def test_duplicate_trusts_not_allowed(self):"},{"line_number":5070,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":5071,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":5072,"context_line":"        trust_data \u003d {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_01692d8b","line":5069,"updated":"2015-10-30 07:16:27.000000000","message":"we should have a test that checks if two trusts with expires_at not set also pass","commit_id":"7d86bf8bb3a9a229517a7192e01597232b32d37e"},{"author":{"_account_id":12114,"name":"Kent Wang","email":"kent.wang@intel.com","username":"k.wang"},"change_message_id":"a6c2b1569d74b7524cf1d4a786a9e3e378e44026","unresolved":false,"context_lines":[{"line_number":5066,"context_line":"                          self.trust_api.get_trust,"},{"line_number":5067,"context_line":"                          trust_data[\u0027id\u0027])"},{"line_number":5068,"context_line":""},{"line_number":5069,"context_line":"    def test_duplicate_trusts_not_allowed(self):"},{"line_number":5070,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":5071,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":5072,"context_line":"        trust_data \u003d {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a26ad4f_9aa596b6","line":5069,"in_reply_to":"1a26ad4f_01692d8b","updated":"2015-10-30 14:47:07.000000000","message":"will add one in","commit_id":"7d86bf8bb3a9a229517a7192e01597232b32d37e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a94be27c8858bdf8188c8df03f5e13ded901a1d2","unresolved":false,"context_lines":[{"line_number":4786,"context_line":"    def create_sample_trust(self, new_id, remaining_uses\u003dNone):"},{"line_number":4787,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":4788,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":4789,"context_line":"        expires_at \u003d datetime.datetime.utcnow().replace(year\u003d2031)"},{"line_number":4790,"context_line":"        trust_data \u003d (self.trust_api.create_trust"},{"line_number":4791,"context_line":"                      (new_id,"},{"line_number":4792,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_7f538917","line":4789,"updated":"2015-11-19 16:20:57.000000000","message":"Why did this have to change? This doesn\u0027t seem specific to this patch.","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"eafbc3a5f5f0e8dd3817355cfb2ce5c92e23e13e","unresolved":false,"context_lines":[{"line_number":4786,"context_line":"    def create_sample_trust(self, new_id, remaining_uses\u003dNone):"},{"line_number":4787,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":4788,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":4789,"context_line":"        expires_at \u003d datetime.datetime.utcnow().replace(year\u003d2031)"},{"line_number":4790,"context_line":"        trust_data \u003d (self.trust_api.create_trust"},{"line_number":4791,"context_line":"                      (new_id,"},{"line_number":4792,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_ef4a04ac","line":4789,"in_reply_to":"ba8a016a_1f6cbd06","updated":"2015-11-23 05:25:00.000000000","message":"looks like L4888 need this change to make it pass.","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":12114,"name":"Kent Wang","email":"kent.wang@intel.com","username":"k.wang"},"change_message_id":"f68870a139f19b10469ca77db6511c9bb3b308e6","unresolved":false,"context_lines":[{"line_number":4786,"context_line":"    def create_sample_trust(self, new_id, remaining_uses\u003dNone):"},{"line_number":4787,"context_line":"        self.trustor \u003d self.user_foo"},{"line_number":4788,"context_line":"        self.trustee \u003d self.user_two"},{"line_number":4789,"context_line":"        expires_at \u003d datetime.datetime.utcnow().replace(year\u003d2031)"},{"line_number":4790,"context_line":"        trust_data \u003d (self.trust_api.create_trust"},{"line_number":4791,"context_line":"                      (new_id,"},{"line_number":4792,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_1f6cbd06","line":4789,"in_reply_to":"ba8a016a_7f538917","updated":"2015-11-19 16:34:01.000000000","message":"Other tests were calling this and receiving the static expires_at in trust_data, causing some failures with the introduced duplicate constraint.  I simply change it to produce a new expires_at each call","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"bd62282a7de623ba94b5abeac2e38e124f05ff3d","unresolved":false,"context_lines":[{"line_number":4792,"context_line":"                       {\u0027trustor_user_id\u0027: self.trustor[\u0027id\u0027],"},{"line_number":4793,"context_line":"                        \u0027trustee_user_id\u0027: self.user_two[\u0027id\u0027],"},{"line_number":4794,"context_line":"                        \u0027project_id\u0027: self.tenant_bar[\u0027id\u0027],"},{"line_number":4795,"context_line":"                        \u0027expires_at\u0027: expires_at,"},{"line_number":4796,"context_line":"                        \u0027impersonation\u0027: True,"},{"line_number":4797,"context_line":"                        \u0027remaining_uses\u0027: remaining_uses},"},{"line_number":4798,"context_line":"                       roles\u003d[{\"id\": \"member\"},"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a710552_67b0ae8c","line":4795,"updated":"2015-12-14 20:45:51.000000000","message":"This seems to be introducing a race condition with the new behavior, where two tests could run in the exact same second and the second raises a conflict - but I ran keystone.tests.unit.test_backend_sql.SqlTrust about 500 times and did not produce a failure.","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"eafbc3a5f5f0e8dd3817355cfb2ce5c92e23e13e","unresolved":false,"context_lines":[{"line_number":4929,"context_line":"                 {\"id\": \"browser\"}]"},{"line_number":4930,"context_line":"        self.trust_api.create_trust(uuid.uuid4().hex, trust_data, roles)"},{"line_number":4931,"context_line":"        self.assertRaises(exception.Conflict,"},{"line_number":4932,"context_line":"                          self.trust_api.create_trust,"},{"line_number":4933,"context_line":"                          uuid.uuid4().hex,"},{"line_number":4934,"context_line":"                          trust_data,"},{"line_number":4935,"context_line":"                          roles)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_efed24f0","line":4932,"updated":"2015-11-23 05:25:00.000000000","message":"This testcase could be expanded to make it more clear that we expect it\u0027s a combined unique constraint here.\n\nSuppose the unique constraint only apply to trustor_user_id, and not actually apply to other fields this testcase will also pass which is not we want.","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"}],"keystone/tests/unit/test_v3_auth.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"bd62282a7de623ba94b5abeac2e38e124f05ff3d","unresolved":false,"context_lines":[{"line_number":2848,"context_line":"        # Create first trust with extended set of roles"},{"line_number":2849,"context_line":"        ref \u003d self.redelegated_trust_ref"},{"line_number":2850,"context_line":"        ref[\u0027expires_at\u0027] \u003d datetime.datetime.utcnow().replace("},{"line_number":2851,"context_line":"            year\u003d2031).strftime(unit.TIME_FORMAT)"},{"line_number":2852,"context_line":"        ref[\u0027roles\u0027].append({\u0027id\u0027: role[\u0027id\u0027]})"},{"line_number":2853,"context_line":"        r \u003d self.post(\u0027/OS-TRUST/trusts\u0027,"},{"line_number":2854,"context_line":"                      body\u003d{\u0027trust\u0027: ref})"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a710552_ef5d50ed","line":2851,"updated":"2015-12-14 20:45:51.000000000","message":"all these \"2031\"s should really be datetime.MAXYEAR","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0547c1b5330849697b8c9c50e7c18894ec508c43","unresolved":false,"context_lines":[{"line_number":2861,"context_line":"        trust_token \u003d self._get_trust_token(trust)"},{"line_number":2862,"context_line":""},{"line_number":2863,"context_line":"        # Chain second trust with roles subset"},{"line_number":2864,"context_line":"        self.chained_trust_ref[\u0027expires_at\u0027] \u003d ("},{"line_number":2865,"context_line":"            datetime.datetime.utcnow().replace(year\u003d2030).strftime("},{"line_number":2866,"context_line":"                unit.TIME_FORMAT))"},{"line_number":2867,"context_line":"        r \u003d self.post(\u0027/OS-TRUST/trusts\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_8e1f13b6","line":2864,"updated":"2015-11-19 21:32:03.000000000","message":"Revert this change.  It changes the meaning of the unit tests.  If you need to test the exact configuration, add another test that tests it.","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"eafbc3a5f5f0e8dd3817355cfb2ce5c92e23e13e","unresolved":false,"context_lines":[{"line_number":2861,"context_line":"        trust_token \u003d self._get_trust_token(trust)"},{"line_number":2862,"context_line":""},{"line_number":2863,"context_line":"        # Chain second trust with roles subset"},{"line_number":2864,"context_line":"        self.chained_trust_ref[\u0027expires_at\u0027] \u003d ("},{"line_number":2865,"context_line":"            datetime.datetime.utcnow().replace(year\u003d2030).strftime("},{"line_number":2866,"context_line":"                unit.TIME_FORMAT))"},{"line_number":2867,"context_line":"        r \u003d self.post(\u0027/OS-TRUST/trusts\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_8f49f890","line":2864,"in_reply_to":"ba8a016a_8e1f13b6","updated":"2015-11-23 05:25:00.000000000","message":"looks like without this, these testcase will fail since it\u0027s violate unique constraint.\n\nKent - maybe you can consider to address it here\nhttps://github.com/openstack/keystone/blob/master/keystone/tests/unit/core.py#L371 where the refer data was generated rather than in each testcase.\n\nJust give random string to \u0027expires_at\u0027 each time a trust refer is called.","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"bd62282a7de623ba94b5abeac2e38e124f05ff3d","unresolved":false,"context_lines":[{"line_number":2862,"context_line":""},{"line_number":2863,"context_line":"        # Chain second trust with roles subset"},{"line_number":2864,"context_line":"        self.chained_trust_ref[\u0027expires_at\u0027] \u003d ("},{"line_number":2865,"context_line":"            datetime.datetime.utcnow().replace(year\u003d2030).strftime("},{"line_number":2866,"context_line":"                unit.TIME_FORMAT))"},{"line_number":2867,"context_line":"        r \u003d self.post(\u0027/OS-TRUST/trusts\u0027,"},{"line_number":2868,"context_line":"                      body\u003d{\u0027trust\u0027: self.chained_trust_ref},"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a710552_af5748c9","line":2865,"updated":"2015-12-14 20:45:51.000000000","message":"and datetime.MAXYEAR - 1","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0547c1b5330849697b8c9c50e7c18894ec508c43","unresolved":false,"context_lines":[{"line_number":2884,"context_line":"            expires\u003ddict(minutes\u003d1),"},{"line_number":2885,"context_line":"            role_names\u003d[self.role[\u0027name\u0027]],"},{"line_number":2886,"context_line":"            allow_redelegation\u003dTrue)"},{"line_number":2887,"context_line":"        ref[\u0027expires_at\u0027] \u003d datetime.datetime.utcnow().replace("},{"line_number":2888,"context_line":"            year\u003d2031).strftime(unit.TIME_FORMAT)"},{"line_number":2889,"context_line":"        r \u003d self.post(\u0027/OS-TRUST/trusts\u0027,"},{"line_number":2890,"context_line":"                      body\u003d{\u0027trust\u0027: ref})"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_4e7ccbeb","line":2887,"updated":"2015-11-19 21:32:03.000000000","message":"same as above and all the following expires_at changes.","commit_id":"59b09b50ff15df9975832dbfba42e0c984591e48"}]}
