From 5273fff2955ddf58e6e0401ee5d596059883de94 Mon Sep 17 00:00:00 2001 From: arithmetic1728 <58957152+arithmetic1728@users.noreply.github.com> Date: Mon, 31 Aug 2020 16:22:15 -0700 Subject: [PATCH] docs: add samples from python-docs-samples/tasks (#36) * Add samples for Cloud Tasks [(#1068)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1068) * Add samples for Cloud Tasks * Respond to tasks sample review * Update app engine queues samples * Address review feedback * Address review issues and convert pull queue sample to not use API key auth * Reform pull queues to match appengine queues changes to auth, command line input, readme * flake8 and fix comment * Fix Tasks sample test issues. * Remove queue.yaml, now unused * Add required flag on certain arguments to command-line tools * Auto-update dependencies. [(#1116)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1116) * Auto-update dependencies. [(#1133)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1133) * Auto-update dependencies. * Fix missing http library Change-Id: I99faa600f2f3f1f50f57694fc9835d7f35bda250 * Update Task Queue samples for beta * Use full import to get client * Auto-update dependencies. [(#1186)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1186) * Auto-update dependencies. [(#1217)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1217) * Added "Open in Cloud Shell" buttons to README files [(#1254)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1254) * Add comments and region tags to Cloud Tasks samples [(#1271)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1271) * Standardize on CamelCase, reword confusing endpoint name [(#1288)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1288) * Auto-update dependencies. [(#1309)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1309) * Rename pull to lease and fix name/parent confusion [(#1311)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1311) * Updated region tags for pull queue samples [(#1329)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1329) * Auto-update dependencies. [(#1320)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1320) * Auto-update dependencies. [(#1355)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1355) * Auto-update dependencies. [(#1359)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1359) * Auto-update dependencies. * Update Cloud Tasks Samples [(#1529)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1529) * passing create task * Passing tests * updates to region tags * update region tags [(#1532)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1532) * update Tasks Sample for App Engine [(#1541)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1541) * update gcloud command for creating queues * deploys and runs * update license * passing tests * Fix run command [(#1563)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1563) * Updated library for TTS GA [(#1552)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1552) * update gcloud command for Cloud Tasks [(#1566)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1566) * update gcloud command * update pull queue command * update pull queue command * Update Cloud Tasks Push Queue Sample [(#1698)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/1698) * deleted pull queues * updated samples * fix dependency versions * [Cloud Tasks] Move samples to new folder [(#2114)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2114) * Move samples to keep consistent with other langauges * Ad system tests as well * [Cloud Tasks] Add task with authentication sample [(#2113)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2113) * Add task with authentication sample * Fix linting * Fix linting * Fix spacing * Update tests with service account * Move samples and update READMEs * Update version and linting * Update task sample comments [(#2156)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2156) * Update task comments * Update readme * Update queue name * update gcloud [(#2208)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2208) * Add protobuf dep and install instructions [(#2250)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2250) * Add Migration Guide Snippets for Cloud Tasks [(#2316)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2316) * Migration guide * remove app and update migraitonn * snippets for migration guide - tests added * lint * remove print statements * Styling changes * Travis trigger * Update create_http_task.py [(#2187)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2187) Updates `create_http_task.py` to have missing `in_seconds` variable * Adds updates for samples profiler ... vision [(#2439)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2439) * Update Cloud Tasks library version [(#2516)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2516) * Update to new library * update library version * Adds Task name while creating Task [(#2543)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2543) * Task Name in Creating HTTP Task with Token [(#2700)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2700) * chore(deps): update dependency google-cloud-tasks to v1.5.0 [(#3168)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/3168) * chore(deps): update dependency googleapis-common-protos to v1.51.0 [(#3171)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/3171) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [googleapis-common-protos](https://togithub.com/googleapis/googleapis) | minor | `==1.6.0` -> `==1.51.0` | --- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Never, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#GoogleCloudPlatform/python-docs-samples). * Simplify noxfile setup. [(#2806)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/2806) * chore(deps): update dependency requests to v2.23.0 * Simplify noxfile and add version control. * Configure appengine/standard to only test Python 2.7. * Update Kokokro configs to match noxfile. * Add requirements-test to each folder. * Remove Py2 versions from everything execept appengine/standard. * Remove conftest.py. * Remove appengine/standard/conftest.py * Remove 'no-sucess-flaky-report' from pytest.ini. * Add GAE SDK back to appengine/standard tests. * Fix typo. * Roll pytest to python 2 version. * Add a bunch of testing requirements. * Remove typo. * Add appengine lib directory back in. * Add some additional requirements. * Fix issue with flake8 args. * Even more requirements. * Readd appengine conftest.py. * Add a few more requirements. * Even more Appengine requirements. * Add webtest for appengine/standard/mailgun. * Add some additional requirements. * Add workaround for issue with mailjet-rest. * Add responses for appengine/standard/mailjet. Co-authored-by: Renovate Bot * Remove dependency googleapis-common-protos [(#3955)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/3955) * Update dependency googleapis-common-protos to v1.52.0 * Update requirements.txt * Update requirements.txt * Update requirements.txt Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com> * Replace GCLOUD_PROJECT with GOOGLE_CLOUD_PROJECT. [(#4022)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/4022) * [tasks] testing: use fixtures for the queue [(#4049)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/4049) fixes #4045 fixes #4044 I don't know why these tests started to fail, but anyways we'd better use fixtures and temporary queues. * add python snippets and tests for creating, listing, and deleting queues [(#4012)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/4012) * add python snippets and tests for creating, listing, and deleting queues * fix grammar * update licenses * apply suggested fixes and format with black * refine delete_queue_test with fixture for setup * utilize fixtures and match format of create_http_task_test * utilize fixtures in list_queues_test and create_queue_test * make create_queue_test call the right function * still attempt to delete queue after test runs in case of failure * attempt to delete queue in case of failure, using try/except approach * add print when NotFound is caught * fix import Co-authored-by: Averi Kitsch Co-authored-by: Takashi Matsuo * docs(tasks): service_account_email parameter example [(#4183)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/4183) * docs(tasks): serviceAccountEmail parameter example * docs(tasks): parameter name camel => snake case * docs(tasks): comment order = function param order * chore(deps): update dependency pytest to v5.4.3 [(#4279)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/4279) * chore(deps): update dependency pytest to v5.4.3 * specify pytest for python 2 in appengine Co-authored-by: Leah Cole * Update dependency pytest to v6 [(#4390)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/4390) * tasks: added json content-type request [(#4473)](https://github.com/GoogleCloudPlatform/python-docs-samples/issues/4473) - added json payload compatibility - fix imports and code block used on https://cloud.google.com/tasks/docs/creating-http-target-tasks#python ## Description Fixes # Note: It's a good idea to open an issue first for discussion. ## Checklist - [ ] I have followed [Sample Guidelines from AUTHORING_GUIDE.MD](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md) - [ ] README is updated to include [all relevant information](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#readme-file) - [ ] **Tests** pass: `nox -s py-3.6` (see [Test Environment Setup](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#test-environment-setup)) - [ ] **Lint** pass: `nox -s lint` (see [Test Environment Setup](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/AUTHORING_GUIDE.md#test-environment-setup)) - [ ] These samples need a new **API enabled** in testing projects to pass (let us know which ones) - [ ] These samples need a new/updated **env vars** in testing projects set to pass (let us know which ones) - [ ] Please **merge** this PR for me once it is approved. - [ ] This sample adds a new sample directory, and I updated the [CODEOWNERS file](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/.github/CODEOWNERS) with the codeowners for this sample * docs: add samples from python-docs-samples/tasks * chore: update templates Co-authored-by: Andrew Gorcester Co-authored-by: Andrew Gorcester Co-authored-by: DPE bot Co-authored-by: michaelawyu Co-authored-by: ellenevans <35748459+ellenevans@users.noreply.github.com> Co-authored-by: Averi Kitsch Co-authored-by: michaelawyu Co-authored-by: Noah Negrey Co-authored-by: Alex Voorhees Co-authored-by: Gus Class Co-authored-by: Sarath Kaul Co-authored-by: Sarath Kaul Co-authored-by: WhiteSource Renovate Co-authored-by: Kurtis Van Gent <31518063+kurtisvg@users.noreply.github.com> Co-authored-by: Bu Sun Kim <8822365+busunkim96@users.noreply.github.com> Co-authored-by: Takashi Matsuo Co-authored-by: Aaron Johnson Co-authored-by: Adam Ross Co-authored-by: Leah Cole Co-authored-by: Joab Leite S. Neto --- cloud_tasks/snippets/README.md | 87 +++++++++++++++++++++++ cloud_tasks/snippets/create_queue.py | 35 +++++++++ cloud_tasks/snippets/create_queue_test.py | 40 +++++++++++ cloud_tasks/snippets/delete_queue.py | 30 ++++++++ cloud_tasks/snippets/delete_queue_test.py | 56 +++++++++++++++ cloud_tasks/snippets/list_queues.py | 36 ++++++++++ cloud_tasks/snippets/list_queues_test.py | 55 ++++++++++++++ 7 files changed, 339 insertions(+) create mode 100644 cloud_tasks/snippets/README.md create mode 100644 cloud_tasks/snippets/create_queue.py create mode 100644 cloud_tasks/snippets/create_queue_test.py create mode 100644 cloud_tasks/snippets/delete_queue.py create mode 100644 cloud_tasks/snippets/delete_queue_test.py create mode 100644 cloud_tasks/snippets/list_queues.py create mode 100644 cloud_tasks/snippets/list_queues_test.py diff --git a/cloud_tasks/snippets/README.md b/cloud_tasks/snippets/README.md new file mode 100644 index 000000000000..b83eae655a81 --- /dev/null +++ b/cloud_tasks/snippets/README.md @@ -0,0 +1,87 @@ +# Google Cloud Tasks Samples + +[![Open in Cloud Shell][shell_img]][shell_link] + +[shell_img]: http://gstatic.com/cloudssh/images/open-btn.png +[shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/python-docs-samples&page=editor&open_in_editor=tasks/README.md + +This sample demonstrates how to use the +[Cloud Tasks](https://cloud.google.com/tasks/docs/) client library. + +`create_http_task.py` is a simple command-line program to create +tasks to be pushed to an URL endpoint. + +`create_http_task_with_token.py` is a simple command-line program to create +tasks to be pushed to an URL endpoint with authorization header. + +## Prerequisites to run locally: + +Please refer to [Setting Up a Python Development Environment](https://cloud.google.com/python/setup). + +## Authentication + +To set up authentication, please refer to our +[authentication getting started guide](https://cloud.google.com/docs/authentication/getting-started). + +## Install Dependencies + +To install the dependencies for this sample, use the following command: + +``` +pip install -r requirements.txt +``` + +This sample uses the common protos in the [googleapis](https://github.com/googleapis/googleapis) +repository. For more info, see +[Protocol Buffer Basics](https://developers.google.com/protocol-buffers/docs/pythontutorial). + +## Creating a queue + +To create a queue (named `my-queue`) using the Cloud SDK, use the following +gcloud command: + +``` +gcloud tasks queues create my-queue +``` + +## Run the Sample Using the Command Line + +Set environment variables: + +First, your project ID: + +``` +export PROJECT_ID=my-project-id +``` + +Then the queue ID, as specified at queue creation time. Queue IDs already +created can be listed with `gcloud tasks queues list`. + +``` +export QUEUE_ID=my-queue +``` + +And finally the location ID, which can be discovered with +`gcloud tasks queues describe my-queue`, with the location embedded in +the "name" value (for instance, if the name is +"projects/my-project/locations/us-central1/queues/my-queue", then the +location is "us-central1"). + +``` +export LOCATION_ID=us-central1 +``` + +### Creating Tasks with HTTP Targets + +Set an environment variable for the endpoint to your task handler. This is an +example url: +``` +export URL=https://example.com/task_handler +``` + +Running the sample will create a task and send the task to the specific URL +endpoint, with a payload specified: + +``` +python create_http_task.py --project=$PROJECT_ID --queue=$QUEUE_ID --location=$LOCATION_ID --url=$URL --payload=hello +``` diff --git a/cloud_tasks/snippets/create_queue.py b/cloud_tasks/snippets/create_queue.py new file mode 100644 index 000000000000..d8d4dfaea263 --- /dev/null +++ b/cloud_tasks/snippets/create_queue.py @@ -0,0 +1,35 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# [START cloud_tasks_create_queue] +def create_queue(project, queue_name, location): + """Create a task queue.""" + + from google.cloud import tasks_v2 + + # Create a client. + client = tasks_v2.CloudTasksClient() + + # Construct the fully qualified location path. + parent = client.location_path(project, location) + + # Construct the create queue request. + queue = {'name': client.queue_path(project, location, queue_name)} + + # Use the client to create the queue. + response = client.create_queue(parent, queue) + + print('Created queue {}'.format(response.name)) + return response +# [END cloud_tasks_create_queue] diff --git a/cloud_tasks/snippets/create_queue_test.py b/cloud_tasks/snippets/create_queue_test.py new file mode 100644 index 000000000000..1f623a2aa6cd --- /dev/null +++ b/cloud_tasks/snippets/create_queue_test.py @@ -0,0 +1,40 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import uuid + +from google.cloud import tasks_v2 +import pytest + +import create_queue + +TEST_PROJECT_ID = os.environ['GOOGLE_CLOUD_PROJECT'] +TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1') +TEST_QUEUE_NAME = f'my-queue-{uuid.uuid4().hex}' + + +@pytest.fixture() +def test_queue(): + client = tasks_v2.CloudTasksClient() + q = create_queue.create_queue(TEST_PROJECT_ID, TEST_QUEUE_NAME, TEST_LOCATION) + + yield q + + client.delete_queue(q.name) + + +def test_create_queue(capsys, test_queue): + out, _ = capsys.readouterr() + assert 'Created queue' in out diff --git a/cloud_tasks/snippets/delete_queue.py b/cloud_tasks/snippets/delete_queue.py new file mode 100644 index 000000000000..d69514249a17 --- /dev/null +++ b/cloud_tasks/snippets/delete_queue.py @@ -0,0 +1,30 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# [START cloud_tasks_delete_queue] +def delete_queue(project, queue_name, location): + """Delete a task queue.""" + + from google.cloud import tasks_v2 + + # Create a client. + client = tasks_v2.CloudTasksClient() + + # Get the fully qualified path to queue. + queue = client.queue_path(project, location, queue_name) + + # Use the client to delete the queue. + client.delete_queue(queue) + print('Deleted queue') +# [END cloud_tasks_delete_queue] diff --git a/cloud_tasks/snippets/delete_queue_test.py b/cloud_tasks/snippets/delete_queue_test.py new file mode 100644 index 000000000000..4e1acf403dac --- /dev/null +++ b/cloud_tasks/snippets/delete_queue_test.py @@ -0,0 +1,56 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import uuid + +from google.api_core import exceptions +from google.cloud import tasks_v2 +import pytest + +import delete_queue + + +TEST_PROJECT_ID = os.environ['GOOGLE_CLOUD_PROJECT'] +TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1') +TEST_QUEUE_NAME = f'my-queue-{uuid.uuid4().hex}' + + +@pytest.fixture() +def test_queue(): + client = tasks_v2.CloudTasksClient() + parent = client.location_path(TEST_PROJECT_ID, TEST_LOCATION) + queue = { + # The fully qualified path to the queue + 'name': client.queue_path( + TEST_PROJECT_ID, TEST_LOCATION, TEST_QUEUE_NAME), + } + q = client.create_queue(parent, queue) + + yield q + + try: + # Attempt to delete the queue in case the sample failed. + client.delete_queue(q.name) + except exceptions.NotFound: + # The queue was already successfully deleted. + print('Queue already deleted successfully') + + +def test_delete_queue(capsys, test_queue): + delete_queue.delete_queue( + TEST_PROJECT_ID, TEST_QUEUE_NAME, TEST_LOCATION + ) + out, _ = capsys.readouterr() + assert 'Deleted queue' in out diff --git a/cloud_tasks/snippets/list_queues.py b/cloud_tasks/snippets/list_queues.py new file mode 100644 index 000000000000..fa48907fad17 --- /dev/null +++ b/cloud_tasks/snippets/list_queues.py @@ -0,0 +1,36 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# [START cloud_tasks_list_queues] +def list_queues(project, location): + """List all task queues.""" + + from google.cloud import tasks_v2 + + # Create a client. + client = tasks_v2.CloudTasksClient() + + # Construct the fully qualified location path. + parent = client.location_path(project, location) + + # Use the client to obtain the queues. + response = client.list_queues(parent) + + # Print the results. + for queue in response: + print(queue.name) + + if response.num_results == 0: + print('No queues found!') +# [END cloud_tasks_list_queues] diff --git a/cloud_tasks/snippets/list_queues_test.py b/cloud_tasks/snippets/list_queues_test.py new file mode 100644 index 000000000000..df11d0bd4f9b --- /dev/null +++ b/cloud_tasks/snippets/list_queues_test.py @@ -0,0 +1,55 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import uuid + +from google.cloud import tasks_v2 +import pytest + +import list_queues + +TEST_PROJECT_ID = os.environ['GOOGLE_CLOUD_PROJECT'] +TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1') +TEST_QUEUE_NAME = f'my-queue-{uuid.uuid4().hex}' + + +@pytest.fixture() +def test_queue(): + client = tasks_v2.CloudTasksClient() + parent = client.location_path(TEST_PROJECT_ID, TEST_LOCATION) + queue = { + # The fully qualified path to the queue + 'name': client.queue_path( + TEST_PROJECT_ID, TEST_LOCATION, TEST_QUEUE_NAME), + } + q = client.create_queue(parent, queue) + + yield q + + client.delete_queue(q.name) + + +def test_list_queues_not_present(capsys): + list_queues.list_queues(TEST_PROJECT_ID, TEST_LOCATION) + out, _ = capsys.readouterr() + + assert(TEST_QUEUE_NAME not in out) + + +def test_list_queues_present(capsys, test_queue): + list_queues.list_queues(TEST_PROJECT_ID, TEST_LOCATION) + out, _ = capsys.readouterr() + + assert(TEST_QUEUE_NAME in out)