Alexa-news-stentiment-evalu.../f-ask/tests/test_audio.py

68 lines
2.5 KiB
Python

import unittest
from mock import patch, MagicMock
from flask import Flask
from flask_ask import Ask, audio
from flask_ask.models import _Field
class AudioUnitTests(unittest.TestCase):
def setUp(self):
self.ask_patcher = patch('flask_ask.core.find_ask', return_value=Ask())
self.ask_patcher.start()
self.context_patcher = patch('flask_ask.models.context', return_value=MagicMock())
self.context_patcher.start()
def tearDown(self):
self.ask_patcher.stop()
self.context_patcher.stop()
def test_token_generation(self):
""" Confirm we get a new token when setting a stream url """
audio_item = audio()._audio_item(stream_url='https://fakestream', offset=123)
self.assertEqual(36, len(audio_item['stream']['token']))
self.assertEqual(123, audio_item['stream']['offsetInMilliseconds'])
def test_custom_token(self):
""" Check to see that the provided opaque token remains constant"""
token = "hello_world"
audio_item = audio()._audio_item(stream_url='https://fakestream', offset=10, opaque_token=token)
self.assertEqual(token, audio_item['stream']['token'])
self.assertEqual(10, audio_item['stream']['offsetInMilliseconds'])
class AskStreamHandlingTests(unittest.TestCase):
def setUp(self):
fake_context = {'System': {'user': {'userId': 'dave'}}}
self.context_patcher = patch.object(Ask, 'context', return_value=fake_context)
self.context_patcher.start()
self.request_patcher = patch.object(Ask, 'request', return_value=MagicMock())
self.request_patcher.start()
def tearDown(self):
self.context_patcher.stop()
self.request_patcher.stop()
def test_setting_and_getting_current_stream(self):
ask = Ask()
with patch('flask_ask.core.find_ask', return_value=ask):
self.assertEqual(_Field(), ask.current_stream)
stream = _Field()
stream.__dict__.update({'token': 'asdf', 'offsetInMilliseconds': 123, 'url': 'junk'})
with patch('flask_ask.core.top_stream', return_value=stream):
self.assertEqual(stream, ask.current_stream)
def test_from_directive_call(self):
ask = Ask()
fake_stream = _Field()
fake_stream.__dict__.update({'token':'fake'})
with patch('flask_ask.core.top_stream', return_value=fake_stream):
from_buffer = ask._from_directive()
self.assertEqual(fake_stream, from_buffer)
if __name__ == '__main__':
unittest.main()