Skip to content

Commit 71e20d7

Browse files
committed
Add CosmosDB extension tests
1 parent 95f76de commit 71e20d7

2 files changed

Lines changed: 82 additions & 0 deletions

File tree

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
import logging
4+
5+
import azure.functions as func
6+
import azurefunctions.extensions.bindings.cosmosdb as cosmos
7+
8+
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
9+
10+
11+
@app.route(route="cosmos")
12+
@app.cosmos_db_input(
13+
arg_name="client",
14+
connection="AzureWebJobsCosmosDBConnectionString",
15+
database_name=None,
16+
container_name=None)
17+
def cosmos_client_input(req: func.HttpRequest,
18+
client: cosmos.CosmosClient) -> str:
19+
databases = client.list_databases()
20+
for database in databases:
21+
logging.info("Found database with ID: %s", database.get('id'))
22+
23+
return 'ok'
24+
25+
26+
@app.route(route="container")
27+
@app.cosmos_db_input(
28+
arg_name="container",
29+
connection="AzureWebJobsCosmosDBConnectionString",
30+
database_name="test",
31+
container_name="items")
32+
def container_proxy_input(req: func.HttpRequest,
33+
container: cosmos.ContainerProxy) -> str:
34+
documents = container.query_items(
35+
query="SELECT * FROM c",
36+
enable_cross_partition_query=True)
37+
for document in documents:
38+
logging.info("Found document: %s", document)
39+
40+
return 'ok'
41+
42+
43+
@app.route(route="database")
44+
@app.cosmos_db_input(
45+
arg_name="database",
46+
connection="AzureWebJobsCosmosDBConnectionString",
47+
database_name="test",
48+
container_name=None)
49+
def database_proxy_input(req: func.HttpRequest,
50+
database: cosmos.DatabaseProxy) -> str:
51+
containers = database.list_containers()
52+
for container in containers:
53+
logging.info("Found container with ID: %s", container.get('id'))
54+
55+
return 'ok'

workers/tests/emulator_tests/test_cosmosdb_functions.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,30 @@ class TestCosmosDBFunctionsSteinGeneric(TestCosmosDBFunctions):
108108
def get_script_dir(cls):
109109
return testutils.EMULATOR_TESTS_FOLDER / 'cosmosdb_functions' / \
110110
'cosmosdb_functions_stein' / 'generic'
111+
112+
113+
class TestCosmosDBSDKFunctions(testutils.WebHostTestCase):
114+
115+
@classmethod
116+
def get_script_dir(cls):
117+
return testutils.EMULATOR_TESTS_FOLDER / 'cosmosdb_functions' / \
118+
'cosmosdb_functions_sdk'
119+
120+
@classmethod
121+
def get_libraries_to_install(cls):
122+
return ['azurefunctions-extensions-bindings-cosmosdb']
123+
124+
def test_cosmos_client_input(self):
125+
r = self.webhost.request('GET', 'cosmos')
126+
self.assertEqual(r.status_code, 200)
127+
self.assertEqual(r.text, 'ok')
128+
129+
def test_container_proxy_input(self):
130+
r = self.webhost.request('GET', 'container')
131+
self.assertEqual(r.status_code, 200)
132+
self.assertEqual(r.text, 'ok')
133+
134+
def test_database_proxy_input(self):
135+
r = self.webhost.request('GET', 'database')
136+
self.assertEqual(r.status_code, 200)
137+
self.assertEqual(r.text, 'ok')

0 commit comments

Comments
 (0)