Repository: beam
Updated Branches:
  refs/heads/master 3a83a661b -> fcd11feb9


[BEAM-2861] Fix tests which fail with google credential


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/a95dc855
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/a95dc855
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/a95dc855

Branch: refs/heads/master
Commit: a95dc855c68ac428daeab0bec3c06bfad5df3cfb
Parents: 3a83a66
Author: Mark Liu <[email protected]>
Authored: Fri Sep 8 12:56:10 2017 -0700
Committer: [email protected] <[email protected]>
Committed: Mon Sep 11 21:27:00 2017 -0700

----------------------------------------------------------------------
 sdks/python/apache_beam/io/gcp/tests/utils.py   |  8 +--
 .../apache_beam/io/gcp/tests/utils_test.py      | 66 +++++++++++++++-----
 2 files changed, 56 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/a95dc855/sdks/python/apache_beam/io/gcp/tests/utils.py
----------------------------------------------------------------------
diff --git a/sdks/python/apache_beam/io/gcp/tests/utils.py 
b/sdks/python/apache_beam/io/gcp/tests/utils.py
index 40eb975..b4b4ba8 100644
--- a/sdks/python/apache_beam/io/gcp/tests/utils.py
+++ b/sdks/python/apache_beam/io/gcp/tests/utils.py
@@ -50,13 +50,13 @@ def delete_bq_table(project, dataset, table):
                'table: %s.', project, dataset, table)
   bq_dataset = bigquery.Client(project=project).dataset(dataset)
   if not bq_dataset.exists():
-    raise GcpTestIOError('Failed to cleanup. Bigquery dataset %s doesn\'t'
-                         'exist in project %s.' % dataset, project)
+    raise GcpTestIOError('Failed to cleanup. Bigquery dataset %s doesn\'t '
+                         'exist in project %s.' % (dataset, project))
   bq_table = bq_dataset.table(table)
   if not bq_table.exists():
-    raise GcpTestIOError('Failed to cleanup. Biqeury table %s doesn\'t '
+    raise GcpTestIOError('Failed to cleanup. Bigquery table %s doesn\'t '
                          'exist in project %s, dataset %s.' %
-                         table, project, dataset)
+                         (table, project, dataset))
   bq_table.delete()
   if bq_table.exists():
     raise RuntimeError('Failed to cleanup. Bigquery table %s still exists '

http://git-wip-us.apache.org/repos/asf/beam/blob/a95dc855/sdks/python/apache_beam/io/gcp/tests/utils_test.py
----------------------------------------------------------------------
diff --git a/sdks/python/apache_beam/io/gcp/tests/utils_test.py 
b/sdks/python/apache_beam/io/gcp/tests/utils_test.py
index 340aa6d..ac09e44 100644
--- a/sdks/python/apache_beam/io/gcp/tests/utils_test.py
+++ b/sdks/python/apache_beam/io/gcp/tests/utils_test.py
@@ -40,31 +40,69 @@ class UtilsTest(unittest.TestCase):
     self._mock_result = Mock()
     patch_retry(self, utils)
 
-  @patch('google.cloud.bigquery.Table.delete')
-  @patch('google.cloud.bigquery.Table.exists', side_effect=[True, False])
-  @patch('google.cloud.bigquery.Dataset.exists', return_value=True)
-  def test_delete_bq_table_succeeds(self, *_):
+  @patch.object(bigquery, 'Client')
+  def test_delete_table_succeeds(self, mock_client):
+    mock_dataset = Mock()
+    mock_client.return_value.dataset = mock_dataset
+    mock_dataset.return_value.exists.return_value = True
+
+    mock_table = Mock()
+    mock_dataset.return_value.table = mock_table
+    mock_table.return_value.exists.side_effect = [True, False]
+
     utils.delete_bq_table('unused_project',
                           'unused_dataset',
                           'unused_table')
 
-  @patch('google.cloud.bigquery.Table.delete', side_effect=Exception)
-  @patch('google.cloud.bigquery.Table.exists', return_value=True)
-  @patch('google.cloud.bigquery.Dataset.exists', return_vaue=True)
-  def test_delete_bq_table_fails_with_server_error(self, *_):
-    with self.assertRaises(Exception):
+  @patch.object(bigquery, 'Client')
+  def test_delete_table_fails_dataset_not_exist(self, mock_client):
+    mock_dataset = Mock()
+    mock_client.return_value.dataset = mock_dataset
+    mock_dataset.return_value.exists.return_value = False
+
+    with self.assertRaises(Exception) as e:
       utils.delete_bq_table('unused_project',
                             'unused_dataset',
                             'unused_table')
+    self.assertTrue(
+        e.exception.message.startswith('Failed to cleanup. Bigquery dataset '
+                                       'unused_dataset doesn\'t exist'))
+
+  @patch.object(bigquery, 'Client')
+  def test_delete_table_fails_table_not_exist(self, mock_client):
+    mock_dataset = Mock()
+    mock_client.return_value.dataset = mock_dataset
+    mock_dataset.return_value.exists.return_value = True
+
+    mock_table = Mock()
+    mock_dataset.return_value.table = mock_table
+    mock_table.return_value.exists.return_value = False
+
+    with self.assertRaises(Exception) as e:
+      utils.delete_bq_table('unused_project',
+                            'unused_dataset',
+                            'unused_table')
+    self.assertTrue(
+        e.exception.message.startswith('Failed to cleanup. Bigquery table '
+                                       'unused_table doesn\'t exist'))
+
+  @patch.object(bigquery, 'Client')
+  def test_delete_table_fails_service_error(self, mock_client):
+    mock_dataset = Mock()
+    mock_client.return_value.dataset = mock_dataset
+    mock_dataset.return_value.exists.return_value = True
+
+    mock_table = Mock()
+    mock_dataset.return_value.table = mock_table
+    mock_table.return_value.exists.return_value = True
 
-  @patch('google.cloud.bigquery.Table.delete')
-  @patch('google.cloud.bigquery.Table.exists', return_value=[True, True])
-  @patch('google.cloud.bigquery.Dataset.exists', return_vaue=True)
-  def test_delete_bq_table_fails_with_delete_error(self, *_):
-    with self.assertRaises(RuntimeError):
+    with self.assertRaises(Exception) as e:
       utils.delete_bq_table('unused_project',
                             'unused_dataset',
                             'unused_table')
+    self.assertTrue(
+        e.exception.message.startswith('Failed to cleanup. Bigquery table '
+                                       'unused_table still exists'))
 
 
 if __name__ == '__main__':

Reply via email to