)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2f01d338544b07461cb6455ce1ebdd98276dbd18","unresolved":false,"context_lines":[{"line_number":10,"context_line":"authentication method, regardless if you used an unscoped token to get a"},{"line_number":11,"context_line":"project scoped one. In that case, the project scoped response should also"},{"line_number":12,"context_line":"return [\u0027saml2\u0027, \u0027token\u0027]."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I327e4c0c5b58e1c1ab2ea7417773ed5c7546baf3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_efb84913","line":13,"updated":"2015-09-30 05:32:27.000000000","message":"reference bug https://bugs.launchpad.net/keystone/+bug/1501032\n\nRelated-Bug: #1501032","commit_id":"2451369867ac0e014e311e01d2a5b93352393e1b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35b1f76e30d1e1b43abb6d78efc06035a0d9f141","unresolved":false,"context_lines":[{"line_number":10,"context_line":"authentication method, regardless if you used an unscoped token to get a"},{"line_number":11,"context_line":"project scoped one. In that case, the project scoped response should also"},{"line_number":12,"context_line":"return [\u0027saml2\u0027, \u0027token\u0027]."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I327e4c0c5b58e1c1ab2ea7417773ed5c7546baf3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a1a9d01_ebb479d5","line":13,"in_reply_to":"9a1a9d01_efb84913","updated":"2015-10-01 13:23:10.000000000","message":"Done; captured in bug 1501032","commit_id":"2451369867ac0e014e311e01d2a5b93352393e1b"}],"keystone/tests/unit/test_v3_federation.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2f01d338544b07461cb6455ce1ebdd98276dbd18","unresolved":false,"context_lines":[{"line_number":1909,"context_line":"        token_resp \u003d r.result[\u0027token\u0027]"},{"line_number":1910,"context_line":"        # NOTE(lbragstad): Check to make sure we have \u0027token\u0027 in the method"},{"line_number":1911,"context_line":"        # list since we rescoped an unscoped token."},{"line_number":1912,"context_line":"        for m in (\u0027saml2\u0027, \u0027token\u0027):"},{"line_number":1913,"context_line":"            self.assertIn(m, token_resp[\u0027methods\u0027])"},{"line_number":1914,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"},{"line_number":1915,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_efe1292b","line":1912,"updated":"2015-09-30 05:32:27.000000000","message":"use an array, not a tuple","commit_id":"2451369867ac0e014e311e01d2a5b93352393e1b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"07317638c708740574735413b1e96a69f58648dc","unresolved":false,"context_lines":[{"line_number":1909,"context_line":"        token_resp \u003d r.result[\u0027token\u0027]"},{"line_number":1910,"context_line":"        # NOTE(lbragstad): Check to make sure we have \u0027token\u0027 in the method"},{"line_number":1911,"context_line":"        # list since we rescoped an unscoped token."},{"line_number":1912,"context_line":"        for m in (\u0027saml2\u0027, \u0027token\u0027):"},{"line_number":1913,"context_line":"            self.assertIn(m, token_resp[\u0027methods\u0027])"},{"line_number":1914,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"},{"line_number":1915,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_8bca9d6d","line":1912,"in_reply_to":"9a1a9d01_efe1292b","updated":"2015-10-01 13:20:57.000000000","message":"this isn\u0027t comparing a list to a list, instead it\u0027s just ensuring that each value in the tuple is in the returned method via the assertion.","commit_id":"2451369867ac0e014e311e01d2a5b93352393e1b"},{"author":{"_account_id":13152,"name":"Jorge Munoz","email":"elkidster@gmail.com","username":"jmunoz"},"change_message_id":"2489471f87a2afe83acdd09e6879ed4657ff522b","unresolved":false,"context_lines":[{"line_number":2481,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2482,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2483,"context_line":"        # NOTE(lbragstad): Ensure \u0027saml2\u0027 is in the method list."},{"line_number":2484,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2485,"context_line":"        self.assertValidMappedUser(token_resp)"},{"line_number":2486,"context_line":"        employee_unscoped_token_id \u003d r.headers.get(\u0027X-Subject-Token\u0027)"},{"line_number":2487,"context_line":"        r \u003d self.get(\u0027/auth/projects\u0027, token\u003demployee_unscoped_token_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_8e010b09","line":2484,"updated":"2015-10-02 18:29:49.000000000","message":"Should verify that \u0027token\u0027 or \u0027password\u0027 are not in methods.","commit_id":"d0bee92aabaf800bcb3bacdb3b48d0522c99811d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"be6d98ce7ec9b2fef657753d994f23d54e46c849","unresolved":false,"context_lines":[{"line_number":2481,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2482,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2483,"context_line":"        # NOTE(lbragstad): Ensure \u0027saml2\u0027 is in the method list."},{"line_number":2484,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2485,"context_line":"        self.assertValidMappedUser(token_resp)"},{"line_number":2486,"context_line":"        employee_unscoped_token_id \u003d r.headers.get(\u0027X-Subject-Token\u0027)"},{"line_number":2487,"context_line":"        r \u003d self.get(\u0027/auth/projects\u0027, token\u003demployee_unscoped_token_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_93eee689","line":2484,"in_reply_to":"9a1a9d01_8e010b09","updated":"2015-10-05 14:04:37.000000000","message":"Done","commit_id":"d0bee92aabaf800bcb3bacdb3b48d0522c99811d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"660fdbbe0abdc687b6e65373084300cc3e00f593","unresolved":false,"context_lines":[{"line_number":2497,"context_line":"        # FIXME(lbragstad): \u0027saml2\u0027 should be in the list of methods returned"},{"line_number":2498,"context_line":"        # but it isn\u0027t. This is documented in bug 1501032. Once bug 1501032 is"},{"line_number":2499,"context_line":"        # fixed, we can reverse the logic of the next assertion to ensure"},{"line_number":2500,"context_line":"        # \u0027saml2\u0027 is in the method list returned in the response."},{"line_number":2501,"context_line":"        self.assertIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2502,"context_line":"        self.assertNotIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2503,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_eb0e7431","line":2500,"updated":"2015-10-02 19:56:03.000000000","message":"I think we should use the @wip annotation here.\n\nYou should make the test as it should be. Theorically it would then fail, but will be skipped if using @wip. Once fixed in a subsequent patch, the test will pass and the @wip will make it to fail, and everything we will need to do is to remove the annotation, the test won\u0027t be touched anymore.\n\nSee [1] and test_get_policy_association at [2] for an example.\n\n[1] https://github.com/openstack/keystone/blob/master/keystone/tests/unit/utils.py#L55\n[2] https://review.openstack.org/#/c/212006/6/keystone/tests/unit/backend/endpoint_policy/test_sql.py","commit_id":"d0bee92aabaf800bcb3bacdb3b48d0522c99811d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"be6d98ce7ec9b2fef657753d994f23d54e46c849","unresolved":false,"context_lines":[{"line_number":2497,"context_line":"        # FIXME(lbragstad): \u0027saml2\u0027 should be in the list of methods returned"},{"line_number":2498,"context_line":"        # but it isn\u0027t. This is documented in bug 1501032. Once bug 1501032 is"},{"line_number":2499,"context_line":"        # fixed, we can reverse the logic of the next assertion to ensure"},{"line_number":2500,"context_line":"        # \u0027saml2\u0027 is in the method list returned in the response."},{"line_number":2501,"context_line":"        self.assertIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2502,"context_line":"        self.assertNotIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2503,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a2fa921_16ad5c88","line":2500,"in_reply_to":"9a1a9d01_eb0e7431","updated":"2015-10-05 14:04:37.000000000","message":"Done","commit_id":"d0bee92aabaf800bcb3bacdb3b48d0522c99811d"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"e4467309a243d5b0b7873de35b84a693684921c3","unresolved":false,"context_lines":[{"line_number":2503,"context_line":"        # FIXME(lbragstad): \u0027saml2\u0027 should be in the list of methods returned"},{"line_number":2504,"context_line":"        # but it isn\u0027t. This is documented in bug 1501032. Once bug 1501032 is"},{"line_number":2505,"context_line":"        # fixed, we can reverse the logic of the next assertion to ensure"},{"line_number":2506,"context_line":"        # \u0027saml2\u0027 is in the method list returned in the response."},{"line_number":2507,"context_line":"        self.assertIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2508,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2509,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_f6c0e0e2","line":2506,"updated":"2015-10-05 14:13:25.000000000","message":"Now you can remove this comment :)","commit_id":"c697ad40494e7dad069af08106756ab1e2ba151d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c0a67cd51f27bc8419c3b895c79c70f14e5c732d","unresolved":false,"context_lines":[{"line_number":2503,"context_line":"        # FIXME(lbragstad): \u0027saml2\u0027 should be in the list of methods returned"},{"line_number":2504,"context_line":"        # but it isn\u0027t. This is documented in bug 1501032. Once bug 1501032 is"},{"line_number":2505,"context_line":"        # fixed, we can reverse the logic of the next assertion to ensure"},{"line_number":2506,"context_line":"        # \u0027saml2\u0027 is in the method list returned in the response."},{"line_number":2507,"context_line":"        self.assertIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2508,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2509,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_25061821","line":2506,"in_reply_to":"7a2fa921_f6c0e0e2","updated":"2015-10-05 15:50:12.000000000","message":"Done","commit_id":"c697ad40494e7dad069af08106756ab1e2ba151d"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"ca6089e986c31c8ff6f5ee55db9dd0c5ff61075e","unresolved":false,"context_lines":[{"line_number":1895,"context_line":""},{"line_number":1896,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":1897,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":1898,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."},{"line_number":1899,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1900,"context_line":"        self.assertNotIn(\u0027password\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1901,"context_line":"        self.assertNotIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_7380ecf7","line":1898,"updated":"2015-11-06 09:43:08.000000000","message":"if you want to ensure that only \u0027saml2\u0027 is in the list i suggest using\n\nself.assertListEqual([\u0027saml2\u0027], token_resp[\u0027methods\u0027])","commit_id":"755ca136f567807992516eac84fae0287288548b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d3b91215aee3c456999dde41f427a81ee5ee93e5","unresolved":false,"context_lines":[{"line_number":1895,"context_line":""},{"line_number":1896,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":1897,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":1898,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."},{"line_number":1899,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1900,"context_line":"        self.assertNotIn(\u0027password\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1901,"context_line":"        self.assertNotIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_5c3fec23","line":1898,"in_reply_to":"fa80f949_7380ecf7","updated":"2015-11-06 14:40:50.000000000","message":"Good call, thanks!","commit_id":"755ca136f567807992516eac84fae0287288548b"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"ca6089e986c31c8ff6f5ee55db9dd0c5ff61075e","unresolved":false,"context_lines":[{"line_number":2486,"context_line":""},{"line_number":2487,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2488,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2489,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."},{"line_number":2490,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2491,"context_line":"        self.assertNotIn(\u0027password\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2492,"context_line":"        self.assertNotIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_f374dc36","line":2489,"updated":"2015-11-06 09:43:08.000000000","message":"same","commit_id":"755ca136f567807992516eac84fae0287288548b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d3b91215aee3c456999dde41f427a81ee5ee93e5","unresolved":false,"context_lines":[{"line_number":2486,"context_line":""},{"line_number":2487,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2488,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2489,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."},{"line_number":2490,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2491,"context_line":"        self.assertNotIn(\u0027password\u0027, token_resp[\u0027methods\u0027])"},{"line_number":2492,"context_line":"        self.assertNotIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_dc32fc5e","line":2489,"in_reply_to":"fa80f949_f374dc36","updated":"2015-11-06 14:40:50.000000000","message":"Done","commit_id":"755ca136f567807992516eac84fae0287288548b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"e7dd03bbabf914e5fffa34c342951d47bf5790aa","unresolved":false,"context_lines":[{"line_number":2481,"context_line":"        * Scope token to one of available projects"},{"line_number":2482,"context_line":""},{"line_number":2483,"context_line":"        \"\"\""},{"line_number":2484,"context_line":""},{"line_number":2485,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2486,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2487,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_2274ce9a","line":2484,"updated":"2015-11-08 02:41:54.000000000","message":"We have a check that sayd \"No blank lines after function docstring\", thus pep8 is failing","commit_id":"96965191dd50c40b56ee6505479fa1a16097751c"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"d32262b3708e16329d587246ce45ef125df50db3","unresolved":false,"context_lines":[{"line_number":2481,"context_line":"        * Scope token to one of available projects"},{"line_number":2482,"context_line":""},{"line_number":2483,"context_line":"        \"\"\""},{"line_number":2484,"context_line":""},{"line_number":2485,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2486,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2487,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_b7b0f58c","line":2484,"updated":"2015-11-09 03:09:04.000000000","message":"remove L2484","commit_id":"96965191dd50c40b56ee6505479fa1a16097751c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6836abc656b85a702f32b9c577783a6c1294a25a","unresolved":false,"context_lines":[{"line_number":2481,"context_line":"        * Scope token to one of available projects"},{"line_number":2482,"context_line":""},{"line_number":2483,"context_line":"        \"\"\""},{"line_number":2484,"context_line":""},{"line_number":2485,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2486,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2487,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_67f03668","line":2484,"in_reply_to":"da85f559_2274ce9a","updated":"2015-11-10 18:49:01.000000000","message":"Done","commit_id":"96965191dd50c40b56ee6505479fa1a16097751c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6836abc656b85a702f32b9c577783a6c1294a25a","unresolved":false,"context_lines":[{"line_number":2481,"context_line":"        * Scope token to one of available projects"},{"line_number":2482,"context_line":""},{"line_number":2483,"context_line":"        \"\"\""},{"line_number":2484,"context_line":""},{"line_number":2485,"context_line":"        r \u003d self._issue_unscoped_token()"},{"line_number":2486,"context_line":"        token_resp \u003d r.json_body[\u0027token\u0027]"},{"line_number":2487,"context_line":"        # NOTE(lbragstad): Ensure only \u0027saml2\u0027 is in the method list."}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_c7e00299","line":2484,"in_reply_to":"da85f559_b7b0f58c","updated":"2015-11-10 18:49:01.000000000","message":"Done","commit_id":"96965191dd50c40b56ee6505479fa1a16097751c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"67e17e37693f1a198646484fa22d1c5720f10c08","unresolved":false,"context_lines":[{"line_number":1913,"context_line":"        # but it isn\u0027t. This is documented in bug 1501032. Once bug 1501032 is"},{"line_number":1914,"context_line":"        # fixed, we can reverse the logic of the next assertion to ensure"},{"line_number":1915,"context_line":"        # \u0027token\u0027 is in the method list returned in the response."},{"line_number":1916,"context_line":"        self.assertNotIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1917,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1918,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"},{"line_number":1919,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da85f559_89cd0887","line":1916,"updated":"2015-11-11 14:04:05.000000000","message":"Why not use @wip here too? As you did below .. :)","commit_id":"f1d431e31fcf5fefa676c2d7ccd2036849eb930e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f2359d804e731c72530295228b8e41c9a44c1238","unresolved":false,"context_lines":[{"line_number":1913,"context_line":"        # but it isn\u0027t. This is documented in bug 1501032. Once bug 1501032 is"},{"line_number":1914,"context_line":"        # fixed, we can reverse the logic of the next assertion to ensure"},{"line_number":1915,"context_line":"        # \u0027token\u0027 is in the method list returned in the response."},{"line_number":1916,"context_line":"        self.assertNotIn(\u0027token\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1917,"context_line":"        self.assertIn(\u0027saml2\u0027, token_resp[\u0027methods\u0027])"},{"line_number":1918,"context_line":"        self._check_project_scoped_token_attributes(token_resp, project[\u0027id\u0027])"},{"line_number":1919,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_7abd29b6","line":1916,"in_reply_to":"da85f559_89cd0887","updated":"2016-01-04 21:40:54.000000000","message":"Done","commit_id":"f1d431e31fcf5fefa676c2d7ccd2036849eb930e"}]}
