1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-12-23 01:16:18 +00:00

Added (skipped) transcoding tests

This commit is contained in:
spl0k 2017-12-07 23:33:32 +01:00
parent 8813cbd326
commit 4a99e52caa
4 changed files with 67 additions and 2 deletions

View File

@ -21,6 +21,7 @@ from .test_browse import BrowseTestCase
from .test_album_songs import AlbumSongsTestCase from .test_album_songs import AlbumSongsTestCase
from .test_annotation import AnnotationTestCase from .test_annotation import AnnotationTestCase
from .test_media import MediaTestCase from .test_media import MediaTestCase
from .test_transcoding import TranscodingTestCase
def suite(): def suite():
suite = unittest.TestSuite() suite = unittest.TestSuite()
@ -36,6 +37,7 @@ def suite():
suite.addTest(unittest.makeSuite(AlbumSongsTestCase)) suite.addTest(unittest.makeSuite(AlbumSongsTestCase))
suite.addTest(unittest.makeSuite(AnnotationTestCase)) suite.addTest(unittest.makeSuite(AnnotationTestCase))
suite.addTest(unittest.makeSuite(MediaTestCase)) suite.addTest(unittest.makeSuite(MediaTestCase))
suite.addTest(unittest.makeSuite(TranscodingTestCase))
return suite return suite

View File

@ -65,8 +65,6 @@ class MediaTestCase(ApiTestBase):
self.assertEqual(len(rv.data), 23) self.assertEqual(len(rv.data), 23)
self.assertEqual(self.track.play_count, 1) self.assertEqual(self.track.play_count, 1)
# TODO test transcoding
def test_download(self): def test_download(self):
self._make_request('download', error = 10) self._make_request('download', error = 10)
self._make_request('download', { 'id': 'string' }, error = 0) self._make_request('download', { 'id': 'string' }, error = 0)

View File

@ -0,0 +1,59 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8
#
# This file is part of Supysonic.
# Supysonic is a Python implementation of the Subsonic server API.
#
# Copyright (C) 2017 Alban 'spl0k' Féron
#
# Distributed under terms of the GNU AGPLv3 license.
import unittest
from supysonic.db import Folder, Track
from supysonic.managers.folder import FolderManager
from supysonic.scanner import Scanner
from .apitestbase import ApiTestBase
class TranscodingTestCase(ApiTestBase):
def setUp(self):
self.skipTest('Logging/atexit error')
super(TranscodingTestCase, self).setUp()
FolderManager.add(self.store, 'Folder', 'tests/assets/folder')
scanner = Scanner(self.store)
scanner.scan(self.store.find(Folder).one())
scanner.finish()
self.trackid = self.store.find(Track).one().id
def _stream(self, **kwargs):
kwargs.update({ 'u': 'alice', 'p': 'Alic3', 'c': 'tests', 'v': '1.8.0', 'id': self.trackid })
rv = self.client.get('/rest/stream.view', query_string = kwargs)
self.assertEqual(rv.status_code, 200)
self.assertFalse(rv.mimetype.startswith('text/'))
return rv
def test_no_transcoding_available(self):
self._make_request('stream', { 'id': self.trackid, 'format': 'wat' }, error = 0)
def test_direct_transcode(self):
rv = self._stream(maxBitRate = 96)
self.assertIn('tests/assets/folder/silence.mp3', rv.data)
self.assertTrue(rv.data.endswith('96'))
def test_decode_encode(self):
rv = self._stream(format = 'cat')
self.assertEqual(rv.data, 'Pushing out some mp3 data...')
rv = self._stream(format = 'md5')
self.assertTrue(rv.data.startswith('dbb16c0847e5d8c3b1867604828cb50b'))
if __name__ == '__main__':
unittest.main()

View File

@ -30,6 +30,12 @@ class TestConfig(DefaultConfig):
'mp3': 'audio/mpeg', 'mp3': 'audio/mpeg',
'weirdextension': 'application/octet-stream' 'weirdextension': 'application/octet-stream'
} }
TRANSCODING = {
'transcoder_mp3_mp3': 'echo -n %srcpath %outrate',
'decoder_mp3': 'echo -n Pushing out some mp3 data...',
'encoder_cat': 'cat -',
'encoder_md5': 'md5sum'
}
def __init__(self, with_webui, with_api): def __init__(self, with_webui, with_api):
super(TestConfig, self).__init__() super(TestConfig, self).__init__()