Created behave test for the google stt endpoint
parent
d6bab8fb8f
commit
c02f308392
|
@ -1,19 +1,23 @@
|
||||||
|
import os
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
|
|
||||||
from selene.api import SeleneResponse, selene_api
|
from selene.api import SeleneResponse, selene_api
|
||||||
from selene.api.base_config import get_base_config
|
from selene.api.base_config import get_base_config
|
||||||
|
|
||||||
from .public_api.endpoints.device import DeviceEndpoint
|
from public_api.endpoints.device import DeviceEndpoint
|
||||||
from .public_api.endpoints.device_setting import DeviceSettingEndpoint
|
from public_api.endpoints.device_setting import DeviceSettingEndpoint
|
||||||
from .public_api.endpoints.device_skill import DeviceSkillEndpoint
|
from public_api.endpoints.device_skill import DeviceSkillEndpoint
|
||||||
from .public_api.endpoints.device_skills import DeviceSkillsEndpoint
|
from public_api.endpoints.device_skills import DeviceSkillsEndpoint
|
||||||
from .public_api.endpoints.device_subscription import DeviceSubscriptionEndpoint
|
from public_api.endpoints.device_subscription import DeviceSubscriptionEndpoint
|
||||||
from .public_api.endpoints.open_weather_map import OpenWeatherMapEndpoint
|
from public_api.endpoints.open_weather_map import OpenWeatherMapEndpoint
|
||||||
from .public_api.endpoints.wolfram_alpha import WolframAlphaEndpoint
|
from public_api.endpoints.wolfram_alpha import WolframAlphaEndpoint
|
||||||
from .public_api.endpoints.google_stt import GoogleSTTEndpoint
|
from public_api.endpoints.google_stt import GoogleSTTEndpoint
|
||||||
|
|
||||||
public = Flask(__name__)
|
public = Flask(__name__)
|
||||||
public.config.from_object(get_base_config())
|
public.config.from_object(get_base_config())
|
||||||
|
public.config['GOOGLE_STT_KEY'] = os.environ['GOOGLE_STT_KEY']
|
||||||
|
|
||||||
public.response_class = SeleneResponse
|
public.response_class = SeleneResponse
|
||||||
public.register_blueprint(selene_api)
|
public.register_blueprint(selene_api)
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ class GoogleSTTEndpoint(SeleneEndpoint):
|
||||||
""" Endpoint to send a flac audio file with voice and get back a utterance"""
|
""" Endpoint to send a flac audio file with voice and get back a utterance"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(GoogleSTTEndpoint, self).__init__()
|
super(GoogleSTTEndpoint, self).__init__()
|
||||||
self.google_stt_key = os.environ['GOOGLE_STT_KEY']
|
self.google_stt_key = self.config['GOOGLE_STT_KEY']
|
||||||
self.recognizer = Recognizer()
|
self.recognizer = Recognizer()
|
||||||
|
|
||||||
def post(self):
|
def post(self):
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
from behave import fixture, use_fixture
|
||||||
|
|
||||||
|
from api import public
|
||||||
|
|
||||||
|
|
||||||
|
@fixture
|
||||||
|
def public_api_client(context):
|
||||||
|
public.testing = True
|
||||||
|
context.client_config = public.config
|
||||||
|
context.client = public.test_client()
|
||||||
|
yield context.client
|
||||||
|
|
||||||
|
|
||||||
|
def before_feature(context, _):
|
||||||
|
use_fixture(public_api_client, context)
|
|
@ -0,0 +1,6 @@
|
||||||
|
Feature: Get an utterance
|
||||||
|
Test the google STT integration
|
||||||
|
|
||||||
|
Scenario: A valid flac audio with a voice record is passed
|
||||||
|
When A flac audio with the utterance "tell me a joke" is passed
|
||||||
|
Then return the utterance "tell me a joke"
|
|
@ -0,0 +1,22 @@
|
||||||
|
import json
|
||||||
|
from http import HTTPStatus
|
||||||
|
from io import BytesIO
|
||||||
|
from os import path
|
||||||
|
|
||||||
|
from behave import When, Then
|
||||||
|
from hamcrest import assert_that, equal_to
|
||||||
|
|
||||||
|
|
||||||
|
@When('A flac audio with the utterance "tell me a joke" is passed')
|
||||||
|
def call_google_stt_endpoint(context):
|
||||||
|
with open(path.join(path.dirname(__file__), 'resources/test_stt.flac'), 'rb') as flac:
|
||||||
|
audio = BytesIO(flac.read())
|
||||||
|
context.response = context.client.post('/stt?lang=en-US&limit=1', data=audio)
|
||||||
|
|
||||||
|
|
||||||
|
@Then('return the utterance "tell me a joke"')
|
||||||
|
def validate_response(context):
|
||||||
|
assert_that(context.response.status_code, equal_to(HTTPStatus.OK))
|
||||||
|
response_data = json.loads(context.response.data)
|
||||||
|
expected_response = ['tell me a joke']
|
||||||
|
assert_that(response_data, equal_to(expected_response))
|
Binary file not shown.
Loading…
Reference in New Issue