From 6778f8c50d4b6c20dce716aad0e7818430c4d697 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Wed, 18 May 2016 13:54:53 -0700 Subject: [PATCH] Adding sendgrid tests, fixes #182 (#355) --- managed_vms/sendgrid/main.py | 4 +-- managed_vms/sendgrid/main_test.py | 44 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 managed_vms/sendgrid/main_test.py diff --git a/managed_vms/sendgrid/main.py b/managed_vms/sendgrid/main.py index a37318dc1015..fcafce4cb37a 100644 --- a/managed_vms/sendgrid/main.py +++ b/managed_vms/sendgrid/main.py @@ -38,7 +38,7 @@ def send_email(): to = request.form.get('to') if not to: return ('Please provide an email address in the "to" query string ' - 'parameter.') + 'parameter.'), 400 sg = sendgrid.SendGridClient(SENDGRID_API_KEY) @@ -52,7 +52,7 @@ def send_email(): status, response = sg.send(message) if status != 200: - return 'An error occurred: {}'.format(response) + return 'An error occurred: {}'.format(response), 500 return 'Email sent.' # [END example] diff --git a/managed_vms/sendgrid/main_test.py b/managed_vms/sendgrid/main_test.py new file mode 100644 index 000000000000..3bad53851545 --- /dev/null +++ b/managed_vms/sendgrid/main_test.py @@ -0,0 +1,44 @@ +# Copyright 2016 Google Inc. All rights reserved. +# +# 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 main + +import mock +import pytest + + +@pytest.fixture +def app(monkeypatch): + monkeypatch.setenv('SENDGRID_API_KEY', 'apikey') + monkeypatch.setenv('SENDGRID_SENDER', 'sender@example.com') + + import main + + main.app.testing = True + return main.app.test_client() + + +def test_get(app): + r = app.get('/') + assert r.status_code == 200 + + +@mock.patch.object( + main.sendgrid.SendGridClient, 'send', return_value=(200, "OK")) +def test_post(send_mock, app): + r = app.post('/send/email', data={ + 'to': 'user@example.com' + }) + assert r.status_code == 200 + assert send_mock.called