class GraphDataTest(GraphBase): def setUp(self): self.user = MockUser() super(GraphDataTest, self).setUp() self.graph = self.create_graph(user_id=self.user.user_id(), is_public=False) self.url = reverse("graph_data", args=[ self.graph.key.id(), ]) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_logged_user_should_be_able_to_access_page_even_if_the_graph_is_not_public( self): self.client.get(reverse("login")) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) def test_anonymous_user_should_not_see_the_page_if_the_graph_is_not_public( self): response = self.client.get(self.url) self.assertEqual(response.status_code, 403) def user_should_see_the_page_if_the_graph_is_public(self): response = self.client.get(self.url) self.assertEqual(response.status_code, 200) def test_user_should_get_404_if_the_graph_does_not_exist(self): res = self.client.get( reverse('graph_standalone', kwargs={'graph_id': 9999999})) self.assertEqual(res.status_code, 404)
def setUp(self): self.user = MockUser() super(GraphDataTest, self).setUp() self.graph = self.create_graph(user_id=self.user.user_id(), is_public=False) self.url = reverse("graph_data", args=[ self.graph.key.id(), ])
class SpreadsheetsLoadingOptionsFormTestCase(BaseAppengineTestCase): def setUp(self): super(SpreadsheetsLoadingOptionsFormTestCase, self).setUp() self.client = Client() @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) def test_fetch_options(self): mock = Mock() mock.configure_mock( **{ "files.return_value.list.return_value.execute.return_value": GDRIVE_LIST_RESPONSE }) with patch("clients.drive.build", return_value=mock): response = self.client.get(reverse("spreadsheet_list")) self.assertTrue(response.status_code, 200) # Only 3 inputs self.assertTrue( len([ m.start() for m in re.finditer( '<input type="radio" name="spreadsheet_id"', response.content) ]), 3) # Only 3 anchors self.assertTrue( len([ m.start() for m in re.finditer( '<a href="http://example.com/spreadsheet/00[123]" target="_blank">Link</a>', response.content) ]), 3) self.assertIn("Spreadsheet 001", response.content) self.assertIn("Spreadsheet 002", response.content) self.assertIn("Spreadsheet 003", response.content)
def setUp(self): super(TestGenerateNodesThroughSpreadsheet, self).setUp() self.user = MockUser() self.graph = self.create_graph(user_id=self.user.user_id(), is_public=True)
FETCHED_STYLES = { 'a-class': [ 'font-size: 10px;', 'font-family: verdana', ], 'b-class': ['border: 1px solid green;'] } __all__ = [ 'TestGenerateNodesThroughSpreadsheet', ] @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) class TestGenerateNodesThroughSpreadsheet(GraphBase): def setUp(self): super(TestGenerateNodesThroughSpreadsheet, self).setUp() self.user = MockUser() self.graph = self.create_graph(user_id=self.user.user_id(), is_public=True) @patch("clients.spreadsheets.SimpleSpreadsheetsClient.get_nodes", Mock(return_value=GOOD_NODES)) @patch("clients.spreadsheets.SimpleSpreadsheetsClient.GetCategories", Mock(return_value=FETCHED_CATEGORIES)) @patch("clients.spreadsheets.SimpleSpreadsheetsClient.get_styles", Mock(return_value=FETCHED_STYLES))
def setUp(self): super(GraphCreateTest, self).setUp() self.url = reverse("graph_create") self.user = MockUser()
class GraphCreateTest(GraphBase): def setUp(self): super(GraphCreateTest, self).setUp() self.url = reverse("graph_create") self.user = MockUser() @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) def test_logged_user_should_be_able_to_see_the_page(self): self.client.get(reverse("login")) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) def test_anonymous_user_should_be_redirected_to_login(self): response = self.client.get(self.url) self.assertEqual(response.status_code, 302) self.assertTrue(str(response).endswith('http://testserver/login\n\n')) def test_anonymous_user_should_not_create_a_graph(self): response = self.client.post(self.url, data={ 'name': 'Anonymous', 'is_public': True }) self.assertEqual(response.status_code, 302) self.assertTrue(str(response).endswith('http://testserver/login\n\n')) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user") def test_logged_user_should_be_able_to_crate_graph_if_graph_already_exists( self, mocked_user): mocked_user.return_value = self.user self.create_graph(user_id=self.user.user_id()) self.client.get(reverse("login")) response = self.client.get(reverse("graph_create")) self.assertEqual(response.status_code, 200) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user") def test_logged_user_should_be_able_to_create_a_graph(self, mocked_user): mocked_user.return_value = self.user self.client.get(reverse("login")) self.assertFalse( Graph.query(Graph.user_id == self.user.user_id()).get()) post_data = { 'is_public': False, 'name': 'Test', 'spreadsheet_id': '123' } response = self.client.post(reverse("graph_create"), post_data) self.assertEqual(response.status_code, 302) new_graph = Graph.query(Graph.user_id == self.user.user_id()).get() self.assertTrue(new_graph) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user") def test_logged_user_should_not_be_able_to_create_a_graph_with_wrong_data( self, mocked_user): mocked_user.return_value = self.user self.client.get(reverse("login")) post_data = {} response = self.client.post(self.url, post_data) self.assertEqual(response.status_code, 200) new_graph = Graph.query(Graph.user_id == self.user.user_id()).get() self.assertFalse(new_graph)
class GraphUpdateTest(GraphBase): def setUp(self): self.user = MockUser() super(GraphUpdateTest, self).setUp() self.graph = self.create_graph(user_id=self.user.user_id(), is_public=False) self.url = reverse("graph_update", args=[ self.graph.key.id(), ]) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_logged_user_should_be_able_to_see_the_page(self): self.client.get(reverse("login")) response = self.client.get(self.url) self.assertEqual(response.status_code, 200) def test_anonymous_user_should_be_redirected_to_login(self): response = self.client.get(self.url) self.assertEqual(response.status_code, 302) self.assertTrue(str(response).endswith('http://testserver/login\n\n')) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_logged_user_should_not_be_able_to_see_other_user_graph_forms( self): self.client.get(reverse("login")) response = self.client.get( reverse('graph_update', args=[self.other_public_graph.key.id()])) self.assertEqual(response.status_code, 403) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_logged_user_should_not_be_able_to_update_other_user_graphs(self): self.client.get(reverse("login")) response = self.client.post(reverse( 'graph_update', args=[self.other_public_graph.key.id()]), post_data={}) self.assertEqual(response.status_code, 403) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user") def test_logged_user_should_not_be_able_to_update_a_graph_with_wrong_data( self, mocked_user): mocked_user.return_value = self.user self.client.get(reverse("login")) is_public_value = self.graph.is_public post_data = {'is_public': not is_public_value} response = self.client.post(self.url, post_data) self.assertEqual(response.status_code, 200) graph_not_modified = Graph.query( Graph.user_id == self.user.user_id()).get() self.assertEqual(graph_not_modified.is_public, is_public_value) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_logged_user_should_get_404_if_the_graph_does_not_exist(self): self.client.get(reverse("login")) res = self.client.get( reverse('graph_update', kwargs={'graph_id': 9999999})) self.assertEqual(res.status_code, 404)
class AuthTestCase(BaseAppengineTestCase): def setUp(self): super(AuthTestCase, self).setUp() self.client = Client() def test_login_without_google_user(self): response = self.client.get(reverse("login")) self.assertEqual(response.status_code, 302) self.assertIn('http://testserver/_ah/login?continue=', str(response)) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_user_without_credentials(self): response = self.client.get(reverse("login")) self.assertEqual(response.status_code, 302) self.assertIn('http://testserver/oauth2redirect', str(response)) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials())) def test_user_with_credentials(self): response = self.client.get(reverse("login")) self.assertEqual(response.status_code, 302) self.assertTrue(str(response).endswith('http://testserver/\n\n')) self.assertIsInstance(self.client.session["credentials"], MockedCredentials) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) @patch("oauth2client.appengine.StorageByKeyName.get", Mock(return_value=MockedCredentials(True))) @patch("oauth2client.appengine.StorageByKeyName.put", Mock(return_value=lambda x: None)) def test_user_with_expired_credentials(self): response = self.client.get(reverse("login")) self.assertEqual(response.status_code, 302) self.assertTrue(str(response).endswith('http://testserver/\n\n')) self.assertIsInstance(self.client.session["credentials"], MockedCredentials) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_user_starts_oauth2_flow(self): response = self.client.get(reverse("oauth2redirect")) self.assertEqual(response.status_code, 302) self.assertIn( 'https://accounts.google.com/o/oauth2/auth?redirect_uri=', str(response)) self.assertEqual(self.client.session["redirect"], "/") @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) @patch("oauth2client.client.OAuth2WebServerFlow.step2_exchange", Mock(return_value=MockedCredentials())) @patch("oauth2client.appengine.StorageByKeyName.put", Mock(return_value=lambda x: None)) def test_user_oauth2_callback(self): response = self.client.get(reverse("oauth2redirect")) response = self.client.get(reverse("oauth2callback"), {"code": "1234"}) self.assertEqual(response.status_code, 302) self.assertIsInstance(self.client.session["credentials"], MockedCredentials) self.assertTrue(str(response).endswith('http://testserver/\n\n')) @patch("google.appengine.api.users.get_current_user", Mock(return_value=MockUser())) def test_user_oauth2_callback_failed(self): response = self.client.get(reverse("oauth2redirect")) response = self.client.get(reverse("oauth2callback"), {"code": "1234"}) self.assertEqual(response.status_code, 302) self.assertIn('http://testserver/auth-failed', str(response))