Skip to content

Commit d679d3a

Browse files
committed
fix asgi/wsgifunctionapps to extend bindingapi/settingapi
1 parent 31f3d42 commit d679d3a

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

azure/functions/decorators/function_app.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2747,7 +2747,13 @@ class Blueprint(TriggerApi, BindingApi, SettingsApi):
27472747
pass
27482748

27492749

2750-
class ExternalHttpFunctionApp(FunctionRegister, TriggerApi, ABC):
2750+
class ExternalHttpFunctionApp(
2751+
FunctionRegister,
2752+
TriggerApi,
2753+
SettingsApi,
2754+
BindingApi,
2755+
ABC
2756+
):
27512757
"""Interface to extend for building third party http function apps."""
27522758

27532759
@abc.abstractmethod

tests/decorators/test_function_app.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Copyright (c) Microsoft Corporation. All rights reserved.
22
# Licensed under the MIT License.
3+
from abc import ABC
34
import inspect
45
import json
56
import unittest
@@ -11,10 +12,12 @@
1112
TIMER_TRIGGER
1213
from azure.functions.decorators.core import DataType, AuthLevel, \
1314
BindingDirection, SCRIPT_FILE_NAME
14-
from azure.functions.decorators.function_app import BindingApi, \
15-
FunctionBuilder, FunctionApp, Function, Blueprint, DecoratorApi, \
16-
AsgiFunctionApp, WsgiFunctionApp, HttpFunctionsAuthLevelMixin, \
17-
FunctionRegister, TriggerApi, ExternalHttpFunctionApp
15+
from azure.functions.decorators.function_app import (
16+
BindingApi, FunctionBuilder, FunctionApp, Function, Blueprint,
17+
DecoratorApi, AsgiFunctionApp, SettingsApi, WsgiFunctionApp,
18+
HttpFunctionsAuthLevelMixin, FunctionRegister, TriggerApi,
19+
ExternalHttpFunctionApp
20+
)
1821
from azure.functions.decorators.http import HttpTrigger, HttpOutput, \
1922
HttpMethod
2023
from azure.functions.decorators.retry_policy import RetryPolicy
@@ -322,6 +325,15 @@ def test_add_wsgi(self, add_http_app_mock):
322325
self.assertIsInstance(add_http_app_mock.call_args[0][0],
323326
WsgiMiddleware)
324327

328+
def test_extends_required_classes(self):
329+
self.assertTrue(issubclass(ExternalHttpFunctionApp, FunctionRegister))
330+
self.assertTrue(issubclass(ExternalHttpFunctionApp, TriggerApi))
331+
self.assertTrue(issubclass(ExternalHttpFunctionApp, SettingsApi))
332+
self.assertTrue(issubclass(ExternalHttpFunctionApp, BindingApi))
333+
self.assertTrue(issubclass(ExternalHttpFunctionApp, ABC))
334+
self.assertTrue(issubclass(AsgiFunctionApp, ExternalHttpFunctionApp))
335+
self.assertTrue(issubclass(WsgiFunctionApp, ExternalHttpFunctionApp))
336+
325337
def test_add_asgi_app(self):
326338
self._test_http_external_app(AsgiFunctionApp(app=object()), True)
327339

tests/test_http.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,10 @@ def test_http_response_does_not_have_explicit_output(self):
181181

182182
def test_http_response_accepts_http_enums(self):
183183
response = func.HttpResponse(status_code=404)
184-
self.assertEquals(response.status_code, 404)
184+
self.assertEqual(response.status_code, 404)
185+
185186
response = func.HttpResponse(status_code=HTTPStatus.ACCEPTED)
186-
self.assertEquals(response.status_code, 202)
187+
self.assertEqual(response.status_code, HTTPStatus.ACCEPTED.value)
187188

188189
def test_http_request_converter_decode(self):
189190
data = {

0 commit comments

Comments
 (0)