)]}'
{"keystone/federation/utils.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7ee30552bfba7baaa95ea95d08455d5063e2898e","unresolved":false,"context_lines":[{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        Example direct_maps::"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"            [\u0027Bob\u0027, \u0027Thompson\u0027, \u0027bob@example.com\u0027]"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"        :returns: new local mapping reference with replaced values."},{"line_number":659,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a6eadb0_52c44c3f","side":"PARENT","line":656,"updated":"2016-12-19 17:45:47.000000000","message":"We could add roles to part of the example here, too.","commit_id":"31713100f9f4dbf19caef6d54a81518c8cc45b5a"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"24ccd09e7673492c85f1775e5c967baa8d3491a2","unresolved":false,"context_lines":[{"line_number":541,"context_line":"                },"},{"line_number":542,"context_line":"                {"},{"line_number":543,"context_line":"                    \u0027group_ids\u0027: [\u0027abc123\u0027, \u0027def456\u0027, \u00270cd5e9\u0027]"},{"line_number":544,"context_line":"                }"},{"line_number":545,"context_line":"            ]"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"        :returns: dictionary with user name, group_ids and group_names."}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_3cb321eb","line":544,"updated":"2017-01-10 14:20:39.000000000","message":"could add \u0027projects\u0027 to this docstring","commit_id":"1c94ae71d687b2b0b479639193ca44b0588962ba"}],"keystone/tests/unit/contrib/federation/test_utils.py":[{"author":{"_account_id":17645,"name":"Shan Guo","email":"guoshan.jolie@gmail.com","username":"guoshan"},"change_message_id":"5215658abd68c70b83a9bc97ec4e5e7e958d686b","unresolved":false,"context_lines":[{"line_number":748,"context_line":"        ]"},{"line_number":749,"context_line":"        self.assertEquals(expected_roles, values[\u0027roles\u0027])"},{"line_number":750,"context_line":"        return True"},{"line_number":751,"context_line":"\t"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"class TestUnicodeAssertionData(unit.BaseTestCase):"},{"line_number":754,"context_line":"    \"\"\"Ensure that unicode data in the assertion headers works."}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_758f162a","line":751,"range":{"start_line":751,"start_character":0,"end_line":751,"end_character":1},"updated":"2016-12-15 03:16:21.000000000","message":"extra blank","commit_id":"c7937fe3b35d4fabeca67362f45677181abb8d53"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67b727ea30366110af8410138130384a281f5484","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        self.assertItemsEqual([\u0027210mlk\u0027, \u0027321cba\u0027],"},{"line_number":732,"context_line":"                              mapped_properties[\u0027group_ids\u0027])"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"    def test_mapping_roles(self):"},{"line_number":735,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_ROLES"},{"line_number":736,"context_line":"        assertion \u003d mapping_fixtures.EMPLOYEE_ASSERTION"},{"line_number":737,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_0b1c8776","line":734,"updated":"2017-01-09 16:31:17.000000000","message":"Rename to test_mapping_projects","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"29b0054e358ccb75a3b4f4b1dbe79c262c444959","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        self.assertItemsEqual([\u0027210mlk\u0027, \u0027321cba\u0027],"},{"line_number":732,"context_line":"                              mapped_properties[\u0027group_ids\u0027])"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"    def test_mapping_roles(self):"},{"line_number":735,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_ROLES"},{"line_number":736,"context_line":"        assertion \u003d mapping_fixtures.EMPLOYEE_ASSERTION"},{"line_number":737,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_487135e0","line":734,"updated":"2017-01-09 16:31:44.000000000","message":"This is going to have to be renamed to projects instead of roles.","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"372de873b1bf331d2ada3e04256e5e062c48f1bc","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        self.assertItemsEqual([\u0027210mlk\u0027, \u0027321cba\u0027],"},{"line_number":732,"context_line":"                              mapped_properties[\u0027group_ids\u0027])"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"    def test_mapping_roles(self):"},{"line_number":735,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_ROLES"},{"line_number":736,"context_line":"        assertion \u003d mapping_fixtures.EMPLOYEE_ASSERTION"},{"line_number":737,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_31a9b8e0","line":734,"in_reply_to":"ba5201f7_0b1c8776","updated":"2017-01-09 17:03:44.000000000","message":"Done","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"372de873b1bf331d2ada3e04256e5e062c48f1bc","unresolved":false,"context_lines":[{"line_number":731,"context_line":"        self.assertItemsEqual([\u0027210mlk\u0027, \u0027321cba\u0027],"},{"line_number":732,"context_line":"                              mapped_properties[\u0027group_ids\u0027])"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"    def test_mapping_roles(self):"},{"line_number":735,"context_line":"        mapping \u003d mapping_fixtures.MAPPING_ROLES"},{"line_number":736,"context_line":"        assertion \u003d mapping_fixtures.EMPLOYEE_ASSERTION"},{"line_number":737,"context_line":"        rp \u003d mapping_utils.RuleProcessor(FAKE_MAPPING_ID, mapping[\u0027rules\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_51ae3ce8","line":734,"in_reply_to":"ba5201f7_487135e0","updated":"2017-01-09 17:03:44.000000000","message":"Done","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"29b0054e358ccb75a3b4f4b1dbe79c262c444959","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        expected_username \u003d mapping_fixtures.EMPLOYEE_ASSERTION[\u0027UserName\u0027]"},{"line_number":742,"context_line":"        self.assertEqual(expected_username, values[\u0027user\u0027][\u0027name\u0027])"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        expected_roles \u003d ["},{"line_number":745,"context_line":"            {\"name\": \"a\"},"},{"line_number":746,"context_line":"            {\"name\": \"b\"},"},{"line_number":747,"context_line":"            {\"name\": expected_username},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_6bf7d38c","line":744,"updated":"2017-01-09 16:31:44.000000000","message":"We will need to make sure we test that projects are pulled out instead of just roles.","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67b727ea30366110af8410138130384a281f5484","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        expected_username \u003d mapping_fixtures.EMPLOYEE_ASSERTION[\u0027UserName\u0027]"},{"line_number":742,"context_line":"        self.assertEqual(expected_username, values[\u0027user\u0027][\u0027name\u0027])"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        expected_roles \u003d ["},{"line_number":745,"context_line":"            {\"name\": \"a\"},"},{"line_number":746,"context_line":"            {\"name\": \"b\"},"},{"line_number":747,"context_line":"            {\"name\": expected_username},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_4b168f56","line":744,"updated":"2017-01-09 16:31:17.000000000","message":"expected_projects","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"372de873b1bf331d2ada3e04256e5e062c48f1bc","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        expected_username \u003d mapping_fixtures.EMPLOYEE_ASSERTION[\u0027UserName\u0027]"},{"line_number":742,"context_line":"        self.assertEqual(expected_username, values[\u0027user\u0027][\u0027name\u0027])"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        expected_roles \u003d ["},{"line_number":745,"context_line":"            {\"name\": \"a\"},"},{"line_number":746,"context_line":"            {\"name\": \"b\"},"},{"line_number":747,"context_line":"            {\"name\": expected_username},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_91b8a42c","line":744,"in_reply_to":"ba5201f7_4b168f56","updated":"2017-01-09 17:03:44.000000000","message":"Done","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"372de873b1bf331d2ada3e04256e5e062c48f1bc","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        expected_username \u003d mapping_fixtures.EMPLOYEE_ASSERTION[\u0027UserName\u0027]"},{"line_number":742,"context_line":"        self.assertEqual(expected_username, values[\u0027user\u0027][\u0027name\u0027])"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"        expected_roles \u003d ["},{"line_number":745,"context_line":"            {\"name\": \"a\"},"},{"line_number":746,"context_line":"            {\"name\": \"b\"},"},{"line_number":747,"context_line":"            {\"name\": expected_username},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_b1b5a832","line":744,"in_reply_to":"ba5201f7_6bf7d38c","updated":"2017-01-09 17:03:44.000000000","message":"Done","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"}],"keystone/tests/unit/mapping_fixtures.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"71116b669ad5b6c2ed538f97cdbc3fb813ef1917","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"    ]"},{"line_number":1614,"context_line":"}"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"MAPPING_ROLES \u003d {"},{"line_number":1617,"context_line":"    \"rules\": ["},{"line_number":1618,"context_line":"        {"},{"line_number":1619,"context_line":"            \"local\": ["}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_c5f73357","line":1616,"updated":"2016-12-15 18:36:22.000000000","message":"Hmm - what\u0027s the difference between these two? Are they both needed?","commit_id":"f729b36a9136a4469df042b5ef2e9f9dfb692bee"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e7bd8c90e0b3c23e8795bc09ce42d58e6508c59f","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"    ]"},{"line_number":1614,"context_line":"}"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"MAPPING_ROLES \u003d {"},{"line_number":1617,"context_line":"    \"rules\": ["},{"line_number":1618,"context_line":"        {"},{"line_number":1619,"context_line":"            \"local\": ["}],"source_content_type":"text/x-python","patch_set":2,"id":"1a6eadb0_e5326f0f","line":1616,"in_reply_to":"1a6eadb0_c5f73357","updated":"2016-12-15 18:40:58.000000000","message":"lol, no difference. looks like i did a \u0027git commit -a --amend\u0027 and got changes i didn\u0027t want. i\u0027m making some additional tests for a different patch.","commit_id":"f729b36a9136a4469df042b5ef2e9f9dfb692bee"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67b727ea30366110af8410138130384a281f5484","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"    ],"},{"line_number":1590,"context_line":"}"},{"line_number":1591,"context_line":""},{"line_number":1592,"context_line":"MAPPING_ROLES \u003d {"},{"line_number":1593,"context_line":"    \"rules\": ["},{"line_number":1594,"context_line":"        {"},{"line_number":1595,"context_line":"            \"local\": ["}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_360d2e38","line":1592,"updated":"2017-01-09 16:31:17.000000000","message":"MAPPING_PROJECTS","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"372de873b1bf331d2ada3e04256e5e062c48f1bc","unresolved":false,"context_lines":[{"line_number":1589,"context_line":"    ],"},{"line_number":1590,"context_line":"}"},{"line_number":1591,"context_line":""},{"line_number":1592,"context_line":"MAPPING_ROLES \u003d {"},{"line_number":1593,"context_line":"    \"rules\": ["},{"line_number":1594,"context_line":"        {"},{"line_number":1595,"context_line":"            \"local\": ["}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_71d98083","line":1592,"in_reply_to":"ba5201f7_360d2e38","updated":"2017-01-09 17:03:44.000000000","message":"Done","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"29b0054e358ccb75a3b4f4b1dbe79c262c444959","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"                    \"user\": {"},{"line_number":1598,"context_line":"                        \"name\": \"{0}\""},{"line_number":1599,"context_line":"                    },"},{"line_number":1600,"context_line":"                    \"roles\": ["},{"line_number":1601,"context_line":"                        {\"name\": \"a\"},"},{"line_number":1602,"context_line":"                        {\"name\": \"b\"},"},{"line_number":1603,"context_line":"                        {\"name\": \"{0}\"},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_cb735f14","line":1600,"updated":"2017-01-09 16:31:44.000000000","message":"Rename this from roles to projects.","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"67b727ea30366110af8410138130384a281f5484","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"                    \"user\": {"},{"line_number":1598,"context_line":"                        \"name\": \"{0}\""},{"line_number":1599,"context_line":"                    },"},{"line_number":1600,"context_line":"                    \"roles\": ["},{"line_number":1601,"context_line":"                        {\"name\": \"a\"},"},{"line_number":1602,"context_line":"                        {\"name\": \"b\"},"},{"line_number":1603,"context_line":"                        {\"name\": \"{0}\"},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_f629e68a","line":1600,"updated":"2017-01-09 16:31:17.000000000","message":"projects","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"372de873b1bf331d2ada3e04256e5e062c48f1bc","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"                    \"user\": {"},{"line_number":1598,"context_line":"                        \"name\": \"{0}\""},{"line_number":1599,"context_line":"                    },"},{"line_number":1600,"context_line":"                    \"roles\": ["},{"line_number":1601,"context_line":"                        {\"name\": \"a\"},"},{"line_number":1602,"context_line":"                        {\"name\": \"b\"},"},{"line_number":1603,"context_line":"                        {\"name\": \"{0}\"},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_b1e3e832","line":1600,"in_reply_to":"ba5201f7_cb735f14","updated":"2017-01-09 17:03:44.000000000","message":"Done","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"372de873b1bf331d2ada3e04256e5e062c48f1bc","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"                    \"user\": {"},{"line_number":1598,"context_line":"                        \"name\": \"{0}\""},{"line_number":1599,"context_line":"                    },"},{"line_number":1600,"context_line":"                    \"roles\": ["},{"line_number":1601,"context_line":"                        {\"name\": \"a\"},"},{"line_number":1602,"context_line":"                        {\"name\": \"b\"},"},{"line_number":1603,"context_line":"                        {\"name\": \"{0}\"},"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5201f7_91e6e442","line":1600,"in_reply_to":"ba5201f7_f629e68a","updated":"2017-01-09 17:03:44.000000000","message":"Done","commit_id":"e3df81828f646454d173fad06544b6b1b7fa3e22"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"9bbfba180435b70ee051e7194e46ba51c7a4e7f1","unresolved":false,"context_lines":[{"line_number":1597,"context_line":"                    \"user\": {"},{"line_number":1598,"context_line":"                        \"name\": \"{0}\""},{"line_number":1599,"context_line":"                    },"},{"line_number":1600,"context_line":"                    \"projects\": ["},{"line_number":1601,"context_line":"                        {\"name\": \"a\"},"},{"line_number":1602,"context_line":"                        {\"name\": \"b\"},"},{"line_number":1603,"context_line":"                        {\"name\": \"project for {0}\"},"},{"line_number":1604,"context_line":"                    ],"},{"line_number":1605,"context_line":"                }"},{"line_number":1606,"context_line":"            ],"},{"line_number":1607,"context_line":"            \"remote\": ["}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_dd73efb2","line":1604,"range":{"start_line":1600,"start_character":0,"end_line":1604,"end_character":22},"updated":"2017-01-12 09:42:05.000000000","message":"this should be one scope out to match the spec","commit_id":"1c94ae71d687b2b0b479639193ca44b0588962ba"}]}
