MCPcopy Create free account
hub / github.com/Kaggle/docker-python / TestBigQuery

Class TestBigQuery

tests/test_bigquery.py:17–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15import kaggle_secrets
16
17class TestBigQuery(unittest.TestCase):
18
19 API_BASE_URL = "http://127.0.0.1:2121"
20 def _test_integration(self, client):
21 class HTTPHandler(BaseHTTPRequestHandler):
22 called = False
23 bearer_header_found = False
24
25 def do_HEAD(self):
26 self.send_response(200)
27
28 def do_GET(self):
29 HTTPHandler.called = True
30 HTTPHandler.bearer_header_found = any(
31 k for k in self.headers if k == "authorization" and self.headers[k] == "Bearer secret")
32 self.send_response(200)
33 self.send_header("Content-type", "application/json")
34 self.end_headers()
35 sample_dataset = {
36 "id": "bigqueryproject:datasetname",
37 "datasetReference": {
38 "datasetId": "datasetname",
39 "projectId": "bigqueryproject"
40 }
41 }
42 self.wfile.write(json.dumps({"kind": "bigquery#datasetList", "datasets": [sample_dataset]}).encode("utf-8"))
43
44 server_address = urlparse(self.API_BASE_URL)
45 with HTTPServer((server_address.hostname, server_address.port), HTTPHandler) as httpd:
46 threading.Thread(target=httpd.serve_forever).start()
47
48 for dataset in client.list_datasets():
49 self.assertEqual(dataset.dataset_id, "datasetname")
50
51 httpd.shutdown()
52 self.assertTrue(
53 HTTPHandler.called, msg="Fake server was not called from the BQ client, but should have been.")
54
55 self.assertTrue(
56 HTTPHandler.bearer_header_found, msg="authorization header was missing from the BQ request.")
57
58 def _setup_mocks(self, api_url_mock):
59 api_url_mock.__str__.return_value = self.API_BASE_URL
60
61 @patch.object(kaggle_secrets.UserSecretsClient, 'get_bigquery_access_token', return_value=('secret',1000))
62 def test_project_with_connected_account(self, mock_access_token):
63 env = EnvironmentVarGuard()
64 env.set('KAGGLE_USER_SECRETS_TOKEN', 'foobar')
65 with env:
66 client = bigquery.Client(
67 project='ANOTHER_PROJECT', credentials=KaggleKernelCredentials(), client_options={"api_endpoint": TestBigQuery.API_BASE_URL})
68 self._test_integration(client)
69
70 @patch.object(kaggle_secrets.UserSecretsClient, 'get_bigquery_access_token', return_value=('secret',1000))
71 def test_project_with_empty_integrations(self, mock_access_token):
72 env = EnvironmentVarGuard()
73 env.set('KAGGLE_USER_SECRETS_TOKEN', 'foobar')
74 env.set('KAGGLE_KERNEL_INTEGRATIONS', '')

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected