Skip to content

Commit

Permalink
Fixing tests for refactored google oauth code
Browse files Browse the repository at this point in the history
  • Loading branch information
krak3n committed Mar 23, 2015
1 parent 1deabe0 commit 8008f35
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 73 deletions.
6 changes: 3 additions & 3 deletions fm/manage.py
Expand Up @@ -8,8 +8,8 @@
FM Management Command Scripts.
"""

import alembic

from alembic import command
from flask.ext.migrate import Migrate, MigrateCommand, _get_config
from flask.ext.script import Manager, prompt_bool
from fm import app
Expand Down Expand Up @@ -45,8 +45,8 @@ def reset():
db.session.commit()

config = _get_config(None)
command.stamp(config, 'base')
command.upgrade(config, 'head')
alembic.command.stamp(config, 'base')
alembic.command.upgrade(config, 'head')


@manager.command
Expand Down
95 changes: 25 additions & 70 deletions tests/views/oauth2/test_google_connect.py
Expand Up @@ -13,7 +13,7 @@

from flask import url_for
from fm.models.user import User
from oauth2client.client import FlowExchangeError
from fm.google import GoogleOAuth2Exception


class TestGoogleConnectPost(object):
Expand All @@ -22,72 +22,28 @@ def setup(self):
self.app.config['GOOGLE_CLIENT_ID'] = 'foo'
self.app.config['GOOGLE_CLIENT_SECRET'] = 'bar'

@mock.patch('fm.views.oauth2.httplib2.Http.request')
@mock.patch('fm.views.oauth2.credentials_from_code')
@mock.patch('fm.views.oauth2.google')
def must_be_in_allowed_domains(self, google, credentials_from_code, request):
credentials_from_code.return_value = mock.MagicMock(access_token='foo')

service = mock.MagicMock()
service.execute.return_value = {
'domain': 'foo.com'
}

people = mock.MagicMock()
people.get.return_value = service

build = mock.MagicMock()
build.people.return_value = people
google.discovery.build.return_value = build

url = url_for('oauth2.google.connect')
response = self.client.post(url, data=json.dumps({
'code': 'foo'
}))

assert response.status_code == 422
request.assert_called_once_with(
'https://accounts.google.com/o/oauth2/revoke?token=foo',
'GET')

@mock.patch('fm.views.oauth2.make_session')
@mock.patch('fm.views.oauth2.httplib2.Http.request')
@mock.patch('fm.views.oauth2.credentials_from_code')
@mock.patch('fm.views.oauth2.google')
def should_create_user(
self,
google,
credentials_from_code,
request,
make_session):

make_session.return_value = '123456.abcdefg'

credentials_from_code.return_value = mock.MagicMock(
access_token='foo',
to_json=mock.Mock(return_value=json.dumps({'foo': 'bar'})))

service = mock.MagicMock()
service.execute.return_value = {
'id': u'123456',
'domain': 'thisissoon.com',
'emails': [{'value': 'foo@thisissoon.com'}],
'name': {
'givenName': 'Foo',
'familyName': 'Bar',
@mock.patch('fm.views.oauth2.authenticate_oauth_code')
def should_create_user(self, authenticate_oauth_code, make_session):
authenticate_oauth_code.return_value = (
{
'id': u'123456',
'domain': 'thisissoon.com',
'emails': [{'value': 'foo@thisissoon.com'}],
'name': {
'givenName': 'Foo',
'familyName': 'Bar',
},
'displayName': 'FooBar',
'image': {
'url': 'http://foo.com/foo.jpg?sz=60x60'
}
},
'displayName': 'FooBar',
'image': {
'url': 'http://foo.com/foo.jpg?sz=60x60'
}
}

people = mock.MagicMock()
people.get.return_value = service

build = mock.MagicMock()
build.people.return_value = people
google.discovery.build.return_value = build
mock.MagicMock(
access_token='foo',
to_json=mock.Mock(return_value=json.dumps({'foo': 'bar'})))
)
make_session.return_value = '123456.abcdefg'

assert User.query.count() == 0

Expand All @@ -101,15 +57,14 @@ def should_create_user(
assert response.json['access_token'] == '123456.abcdefg'
assert 'Location' in response.headers

@mock.patch('fm.views.oauth2.credentials_from_code')
@mock.patch('fm.views.oauth2.google')
def should_catch_flow_exceptions(self, google, credentials_from_code):
credentials_from_code.return_value = mock.MagicMock(access_token='foo')
credentials_from_code.side_effect = FlowExchangeError('some_error')
@mock.patch('fm.views.oauth2.authenticate_oauth_code')
def should_catch_exceptions(self, authenticate_oauth_code):
authenticate_oauth_code.side_effect = GoogleOAuth2Exception('some_error')

url = url_for('oauth2.google.connect')
response = self.client.post(url, data=json.dumps({
'code': 'foo'
}))

assert response.status_code == 422
assert 'some_error' in response.json['errors']['code']

0 comments on commit 8008f35

Please sign in to comment.