)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b3978816fa5ced33baa1c7c7db107395c2ae942f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"new one. This patch adds a doc that gives an overview of writing new API"},{"line_number":11,"context_line":"and Scenario tests for the keystone tempest plugin."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This also fixes a typo in the IdentityProdiversTest class name."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Icd631124b451f17df3d4de184e73f6223fdb7de3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ff0f0b1f_9579f394","line":13,"updated":"2017-05-25 21:49:25.000000000","message":"This didn\u0027t fail functional tests somehow?","commit_id":"91bf3c7e28a2edd1c318ec5a95c74eca5e5f6a51"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"38157689a5b36b00cd8d7ed9ac5c502e71ad5506","unresolved":false,"context_lines":[{"line_number":10,"context_line":"new one. This patch adds a doc that gives an overview of writing new API"},{"line_number":11,"context_line":"and Scenario tests for the keystone tempest plugin."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This also fixes a typo in the IdentityProdiversTest class name."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Icd631124b451f17df3d4de184e73f6223fdb7de3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"ff0f0b1f_ea6b93ee","line":13,"in_reply_to":"ff0f0b1f_9579f394","updated":"2017-05-30 14:50:35.000000000","message":"it doesn\u0027t, fortunately it is only the test class name - so not used anywhere else in our code.","commit_id":"91bf3c7e28a2edd1c318ec5a95c74eca5e5f6a51"}],"doc/source/devref/development_best_practices.rst":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"620008cb1f054f8c634c2737ffe6edc7efa1db8e","unresolved":false,"context_lines":[{"line_number":480,"context_line":"When writing tests for the keystone tempest plugin, we should follow the"},{"line_number":481,"context_line":"official tempest guidelines, details about the guidelines can be found at the"},{"line_number":482,"context_line":"`tempest coding guide`_. There are also specific guides for the API and"},{"line_number":483,"context_line":"scenario tests: ``Tempest Field Guide to API tests``_ and"},{"line_number":484,"context_line":"``Tempest Guide to Scenario tests``_."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_09678abf","line":484,"range":{"start_line":483,"start_character":16,"end_line":484,"end_character":35},"updated":"2017-04-19 20:25:35.000000000","message":"These are failing the docs test, need single ` and need their target links","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0b91fd1d3ef5a2da1eafc4692d774bedb93601c9","unresolved":false,"context_lines":[{"line_number":480,"context_line":"When writing tests for the keystone tempest plugin, we should follow the"},{"line_number":481,"context_line":"official tempest guidelines, details about the guidelines can be found at the"},{"line_number":482,"context_line":"`tempest coding guide`_. There are also specific guides for the API and"},{"line_number":483,"context_line":"scenario tests: ``Tempest Field Guide to API tests``_ and"},{"line_number":484,"context_line":"``Tempest Guide to Scenario tests``_."},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_a996564b","line":484,"range":{"start_line":483,"start_character":16,"end_line":484,"end_character":35},"in_reply_to":"7ffa3b31_09678abf","updated":"2017-04-19 20:35:10.000000000","message":"Done","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"620008cb1f054f8c634c2737ffe6edc7efa1db8e","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone.keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone.keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_49ba320a","line":488,"range":{"start_line":488,"start_character":8,"end_line":488,"end_character":17},"updated":"2017-04-19 20:25:35.000000000","message":"omit this, the module is just keystone_tempest_plugin.tests.base","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0b91fd1d3ef5a2da1eafc4692d774bedb93601c9","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone.keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone.keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_0991ca4e","line":488,"range":{"start_line":488,"start_character":8,"end_line":488,"end_character":17},"in_reply_to":"7ffa3b31_49ba320a","updated":"2017-04-19 20:35:10.000000000","message":"Done","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"620008cb1f054f8c634c2737ffe6edc7efa1db8e","unresolved":false,"context_lines":[{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone.keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone.keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class."},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_093e6a8b","line":489,"range":{"start_line":489,"start_character":31,"end_line":489,"end_character":40},"updated":"2017-04-19 20:25:35.000000000","message":"omit \u0027keystone.\u0027, the module is just keystone_tempest_plugin.services","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0b91fd1d3ef5a2da1eafc4692d774bedb93601c9","unresolved":false,"context_lines":[{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone.keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone.keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class."},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_e981fefc","line":489,"range":{"start_line":489,"start_character":31,"end_line":489,"end_character":40},"in_reply_to":"7ffa3b31_093e6a8b","updated":"2017-04-19 20:35:10.000000000","message":"Done","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"620008cb1f054f8c634c2737ffe6edc7efa1db8e","unresolved":false,"context_lines":[{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone.keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone.keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class."},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"To illustrate, let\u0027s analyze the scenario test that checks the complete"},{"line_number":494,"context_line":"federation authentication workflow"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_aead3c9c","line":491,"range":{"start_line":489,"start_character":0,"end_line":491,"end_character":49},"updated":"2017-04-19 20:25:35.000000000","message":"I don\u0027t really see this demonstrated in the example","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0b91fd1d3ef5a2da1eafc4692d774bedb93601c9","unresolved":false,"context_lines":[{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone.keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone.keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class."},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"To illustrate, let\u0027s analyze the scenario test that checks the complete"},{"line_number":494,"context_line":"federation authentication workflow"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_e9969e3e","line":491,"range":{"start_line":489,"start_character":0,"end_line":491,"end_character":49},"in_reply_to":"7ffa3b31_aead3c9c","updated":"2017-04-19 20:35:10.000000000","message":"hmm maybe include a snip from an API test? What do you think?","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"13185604fad8214e3ea6a9afcaf3d2d2a8230718","unresolved":false,"context_lines":[{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone.keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone.keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class."},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"To illustrate, let\u0027s analyze the scenario test that checks the complete"},{"line_number":494,"context_line":"federation authentication workflow"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7ffa3b31_491c72c0","line":491,"range":{"start_line":489,"start_character":0,"end_line":491,"end_character":49},"in_reply_to":"7ffa3b31_e9969e3e","updated":"2017-04-19 20:43:07.000000000","message":"Sure - I\u0027m coming at this as someone who doesn\u0027t know much about the tempest plugin, so my feeling is that since you brought it up I\u0027d like to see an example of it, but I don\u0027t have strong feelings about what the example is.","commit_id":"8755527e2ba5b581ae6fd197a5436d447928b939"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"21560538714d47e1c1cad2b38483b448c87d0537","unresolved":false,"context_lines":[{"line_number":491,"context_line":"the services) should also be added to this class. For example, below we have a"},{"line_number":492,"context_line":"snippet from the tests at"},{"line_number":493,"context_line":":py:mod:`keystone_tempest_plugin.tests.api.identity.v3.test_identity_providers.py`."},{"line_number":494,"context_line":"The ``_create_idp`` method calls keystone\u0027s API using the ``idp_client``,"},{"line_number":495,"context_line":"which is an instance from"},{"line_number":496,"context_line":":class:`keystone_tempest_plugin.tests.services.identity.v3.identity_providers_client.IdentityProvidersClient`."},{"line_number":497,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ffa3b31_cced17b8","line":494,"range":{"start_line":494,"start_character":60,"end_line":494,"end_character":70},"updated":"2017-04-20 14:13:18.000000000","message":"typo, ``idps_client``","commit_id":"e347876329fdfb6dc000058caabc2f178d6ba11f"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"ff2f6676054d4cc81502ab77b8b0cd1cf0458c43","unresolved":false,"context_lines":[{"line_number":491,"context_line":"the services) should also be added to this class. For example, below we have a"},{"line_number":492,"context_line":"snippet from the tests at"},{"line_number":493,"context_line":":py:mod:`keystone_tempest_plugin.tests.api.identity.v3.test_identity_providers.py`."},{"line_number":494,"context_line":"The ``_create_idp`` method calls keystone\u0027s API using the ``idp_client``,"},{"line_number":495,"context_line":"which is an instance from"},{"line_number":496,"context_line":":class:`keystone_tempest_plugin.tests.services.identity.v3.identity_providers_client.IdentityProvidersClient`."},{"line_number":497,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ffa3b31_e71eacb9","line":494,"range":{"start_line":494,"start_character":60,"end_line":494,"end_character":70},"in_reply_to":"7ffa3b31_cced17b8","updated":"2017-04-20 14:55:37.000000000","message":"Done","commit_id":"e347876329fdfb6dc000058caabc2f178d6ba11f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"21560538714d47e1c1cad2b38483b448c87d0537","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":".. code-block:: python"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    class IndentityProvidersTest(base.BaseIdentityTest):"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    ..."},{"line_number":503,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ffa3b31_2c40fba4","line":500,"range":{"start_line":500,"start_character":10,"end_line":500,"end_character":19},"updated":"2017-04-20 14:13:18.000000000","message":"I was going to point out the typo in \"Indentity\" but actually that\u0027s really the class name :(","commit_id":"e347876329fdfb6dc000058caabc2f178d6ba11f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"21560538714d47e1c1cad2b38483b448c87d0537","unresolved":false,"context_lines":[{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class. For example, below we have a"},{"line_number":492,"context_line":"snippet from the tests at"},{"line_number":493,"context_line":":py:mod:`keystone_tempest_plugin.tests.api.identity.v3.test_identity_providers.py`."},{"line_number":494,"context_line":"The ``_create_idp`` method calls keystone\u0027s API using the ``idp_client``,"},{"line_number":495,"context_line":"which is an instance from"},{"line_number":496,"context_line":":class:`keystone_tempest_plugin.tests.services.identity.v3.identity_providers_client.IdentityProvidersClient`."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":".. code-block:: python"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    class IndentityProvidersTest(base.BaseIdentityTest):"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    ..."},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def _create_idp(self, idp_id, idp_ref):"},{"line_number":505,"context_line":"        idp \u003d self.idps_client.create_identity_provider("},{"line_number":506,"context_line":"            idp_id, **idp_ref)[\u0027identity_provider\u0027]"},{"line_number":507,"context_line":"        self.addCleanup("},{"line_number":508,"context_line":"            self.idps_client.delete_identity_provider, idp_id)"},{"line_number":509,"context_line":"        return idp"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    @decorators.idempotent_id(\u002709450910-b816-4150-8513-a2fd4628a0c3\u0027)"},{"line_number":512,"context_line":"    def test_identity_provider_create(self):"},{"line_number":513,"context_line":"        idp_id \u003d data_utils.rand_uuid_hex()"},{"line_number":514,"context_line":"        idp_ref \u003d fixtures.idp_ref()"},{"line_number":515,"context_line":"        idp \u003d self._create_idp(idp_id, idp_ref)"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"        # The identity provider is disabled by default"},{"line_number":518,"context_line":"        idp_ref[\u0027enabled\u0027] \u003d False"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        # The remote_ids attribute should be set to an empty list by default"},{"line_number":521,"context_line":"        idp_ref[\u0027remote_ids\u0027] \u003d []"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"        self._assert_identity_provider_attributes(idp, idp_id, idp_ref)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"To illustrate the construction of a new test class, let\u0027s analyze the scenario"},{"line_number":526,"context_line":"test that checks the complete federation authentication workflow"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ffa3b31_2c7fdb15","line":523,"range":{"start_line":489,"start_character":0,"end_line":523,"end_character":71},"updated":"2017-04-20 14:13:18.000000000","message":"I think I would move this whole section below the first example, so the logical flow is \"Inherit from BaseIdentityTest, here\u0027s an example ... Use services clients, here\u0027s an example\"","commit_id":"e347876329fdfb6dc000058caabc2f178d6ba11f"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"ff2f6676054d4cc81502ab77b8b0cd1cf0458c43","unresolved":false,"context_lines":[{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class. For example, below we have a"},{"line_number":492,"context_line":"snippet from the tests at"},{"line_number":493,"context_line":":py:mod:`keystone_tempest_plugin.tests.api.identity.v3.test_identity_providers.py`."},{"line_number":494,"context_line":"The ``_create_idp`` method calls keystone\u0027s API using the ``idp_client``,"},{"line_number":495,"context_line":"which is an instance from"},{"line_number":496,"context_line":":class:`keystone_tempest_plugin.tests.services.identity.v3.identity_providers_client.IdentityProvidersClient`."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":".. code-block:: python"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    class IndentityProvidersTest(base.BaseIdentityTest):"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    ..."},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def _create_idp(self, idp_id, idp_ref):"},{"line_number":505,"context_line":"        idp \u003d self.idps_client.create_identity_provider("},{"line_number":506,"context_line":"            idp_id, **idp_ref)[\u0027identity_provider\u0027]"},{"line_number":507,"context_line":"        self.addCleanup("},{"line_number":508,"context_line":"            self.idps_client.delete_identity_provider, idp_id)"},{"line_number":509,"context_line":"        return idp"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    @decorators.idempotent_id(\u002709450910-b816-4150-8513-a2fd4628a0c3\u0027)"},{"line_number":512,"context_line":"    def test_identity_provider_create(self):"},{"line_number":513,"context_line":"        idp_id \u003d data_utils.rand_uuid_hex()"},{"line_number":514,"context_line":"        idp_ref \u003d fixtures.idp_ref()"},{"line_number":515,"context_line":"        idp \u003d self._create_idp(idp_id, idp_ref)"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"        # The identity provider is disabled by default"},{"line_number":518,"context_line":"        idp_ref[\u0027enabled\u0027] \u003d False"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        # The remote_ids attribute should be set to an empty list by default"},{"line_number":521,"context_line":"        idp_ref[\u0027remote_ids\u0027] \u003d []"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"        self._assert_identity_provider_attributes(idp, idp_id, idp_ref)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"To illustrate the construction of a new test class, let\u0027s analyze the scenario"},{"line_number":526,"context_line":"test that checks the complete federation authentication workflow"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ffa3b31_276ed42e","line":523,"range":{"start_line":489,"start_character":0,"end_line":523,"end_character":71},"in_reply_to":"7ffa3b31_2c7fdb15","updated":"2017-04-20 14:55:37.000000000","message":"hmm makes sense :)","commit_id":"e347876329fdfb6dc000058caabc2f178d6ba11f"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"a4105afc05a07af799b3ad53704073801ef7137a","unresolved":false,"context_lines":[{"line_number":474,"context_line":".. _tempest: https://git.openstack.org/cgit/openstack/tempest"},{"line_number":475,"context_line":".. _tempest plugin: https://docs.openstack.org/developer/tempest/plugin.html"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"Writing new API \u0026 Scenario Tests"},{"line_number":478,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"When writing tests for the keystone tempest plugin, we should follow the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ff0f0b1f_1b3d6a2a","line":477,"range":{"start_line":477,"start_character":8,"end_line":477,"end_character":9},"updated":"2017-05-24 03:05:08.000000000","message":"Nit: maybe capitalize this","commit_id":"3812c59130ad785be51fc495781537f4e87efa45"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b3978816fa5ced33baa1c7c7db107395c2ae942f","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class. For example, below we have a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff0f0b1f_555d9be7","line":488,"updated":"2017-05-25 21:49:25.000000000","message":"As a developer reading this, I feel like this should be followed with a sentence that clearly explains what benefits/tools/utilities this class provides me. For example, inheriting from this class provides a set of common utilities that are useful for writing tempest functional tests. Like A, B, C.","commit_id":"91bf3c7e28a2edd1c318ec5a95c74eca5e5f6a51"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"38157689a5b36b00cd8d7ed9ac5c502e71ad5506","unresolved":false,"context_lines":[{"line_number":485,"context_line":""},{"line_number":486,"context_line":"The keystone tempest plugin also provides a base class. For most cases, the"},{"line_number":487,"context_line":"tests should inherit from it:"},{"line_number":488,"context_line":":class:`keystone_tempest_plugin.tests.base.BaseIdentityTest`."},{"line_number":489,"context_line":"New API services clients :mod:`keystone_tempest_plugin.services`"},{"line_number":490,"context_line":"(which are used to communicate with the REST API from"},{"line_number":491,"context_line":"the services) should also be added to this class. For example, below we have a"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff0f0b1f_8a09b732","line":488,"in_reply_to":"ff0f0b1f_555d9be7","updated":"2017-05-30 14:50:35.000000000","message":"Done","commit_id":"91bf3c7e28a2edd1c318ec5a95c74eca5e5f6a51"}],"keystone_tempest_plugin/tests/api/identity/v3/test_identity_providers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b3978816fa5ced33baa1c7c7db107395c2ae942f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone_tempest_plugin.tests import base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class IndentityProvidersTest(base.BaseIdentityTest):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def _assert_identity_provider_attributes(self, idp, idp_id, idp_ref\u003dNone):"},{"line_number":26,"context_line":"        self.assertIn(\u0027id\u0027, idp)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_153cc3bd","side":"PARENT","line":23,"updated":"2017-05-25 21:49:25.000000000","message":"This didn\u0027t fail tests?","commit_id":"eb5d05306838adf1a4ed2d189e19dae8843be03f"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"38157689a5b36b00cd8d7ed9ac5c502e71ad5506","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone_tempest_plugin.tests import base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class IndentityProvidersTest(base.BaseIdentityTest):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def _assert_identity_provider_attributes(self, idp, idp_id, idp_ref\u003dNone):"},{"line_number":26,"context_line":"        self.assertIn(\u0027id\u0027, idp)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_45183074","side":"PARENT","line":23,"in_reply_to":"ff0f0b1f_153cc3bd","updated":"2017-05-30 14:50:35.000000000","message":"see comment in commit message. Also, see the results from the job itself [1] :)\n\n[1] http://logs.openstack.org/07/458207/8/check/gate-keystone-dsvm-functional-v3-only-ubuntu-xenial-nv/82e1081/console.html","commit_id":"eb5d05306838adf1a4ed2d189e19dae8843be03f"}]}
