add tests of TYPE_LIST parsing

This commit is contained in:
Hans-Christoph Steiner 2023-04-25 11:04:32 +02:00
parent 0b3fd725c3
commit 28ea6cea7f
1 changed files with 56 additions and 11 deletions

View File

@ -14,9 +14,7 @@ import textwrap
from collections import OrderedDict
from pathlib import Path
from testcommon import TmpCwd
from ruamel.yaml import YAML
yaml = YAML(typ='safe')
@ -31,6 +29,12 @@ from fdroidserver import metadata
from fdroidserver.exception import MetaDataException
def _get_mock_mf(s):
mf = io.StringIO(s)
mf.name = 'mock_filename.yaml'
return mf
class MetadataTest(unittest.TestCase):
'''fdroidserver/metadata.py'''
@ -322,6 +326,20 @@ class MetadataTest(unittest.TestCase):
self.assertEqual('true', metadata._normalize_type_string(True))
def test_post_parse_yaml_metadata(self):
yamldata = dict()
metadata.post_parse_yaml_metadata(yamldata)
yamldata[
'AllowedAPKSigningKeys'
] = 'c03dac71394d6c26766f1b04d3e31cfcac5d03b55d8aa40cc9b9fa6b74354c66'
metadata.post_parse_yaml_metadata(yamldata)
def test_post_parse_yaml_metadata_fails(self):
yamldata = {'AllowedAPKSigningKeys': True}
with self.assertRaises(TypeError):
metadata.post_parse_yaml_metadata(yamldata)
def test_post_parse_yaml_metadata_builds(self):
yamldata = OrderedDict()
builds = []
yamldata['Builds'] = builds
@ -395,17 +413,45 @@ class MetadataTest(unittest.TestCase):
self.assertEqual(randomlist, allappids)
def test_parse_yaml_metadata_0size_file(self):
mf = io.StringIO('')
mf.name = 'mock_filename.yaml'
self.assertEqual(fdroidserver.metadata.parse_yaml_metadata(mf), dict())
self.assertEqual(dict(), metadata.parse_yaml_metadata(_get_mock_mf('')))
def test_parse_yaml_metadata_empty_dict_file(self):
mf = io.StringIO('{}')
mf.name = 'mock_filename.yaml'
self.assertEqual(fdroidserver.metadata.parse_yaml_metadata(mf), dict())
self.assertEqual(dict(), metadata.parse_yaml_metadata(_get_mock_mf('{}')))
def test_parse_yaml_metadata_empty_string_file(self):
mf = io.StringIO('""')
self.assertEqual(dict(), metadata.parse_yaml_metadata(_get_mock_mf('""')))
def test_parse_yaml_metadata_fail_on_root_list(self):
with self.assertRaises(MetaDataException):
metadata.parse_yaml_metadata(_get_mock_mf('-'))
with self.assertRaises(MetaDataException):
metadata.parse_yaml_metadata(_get_mock_mf('[]'))
with self.assertRaises(MetaDataException):
metadata.parse_yaml_metadata(_get_mock_mf('- AutoName: fake'))
def test_parse_yaml_metadata_type_list_str(self):
v = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
mf = _get_mock_mf('AllowedAPKSigningKeys: "%s"' % v)
self.assertEqual(
v,
metadata.parse_yaml_metadata(mf)['AllowedAPKSigningKeys'][0],
)
def test_parse_yaml_metadata_type_list_build_str(self):
mf = _get_mock_mf('Builds: [{versionCode: 1, rm: s}]')
self.assertEqual(
metadata.parse_yaml_metadata(mf),
{'Builds': [{'rm': ['s'], 'versionCode': 1}]},
)
def test_parse_yaml_metadata_app_type_list_fails(self):
mf = _get_mock_mf('AllowedAPKSigningKeys: true')
with self.assertRaises(TypeError):
metadata.parse_yaml_metadata(mf)
mf = _get_mock_mf('AllowedAPKSigningKeys: 1')
with self.assertRaises(TypeError):
metadata.parse_yaml_metadata(mf)
mf.name = 'mock_filename.yaml'
self.assertEqual(fdroidserver.metadata.parse_yaml_metadata(mf), dict())
@ -449,8 +495,7 @@ class MetadataTest(unittest.TestCase):
"""
fdroidserver.metadata.warnings_action = None
mf = io.StringIO('[AntiFeatures: Tracking]')
mf.name = 'mock_filename.yaml'
mf = _get_mock_mf('[AntiFeatures: Tracking]')
self.assertEqual(fdroidserver.metadata.parse_yaml_metadata(mf), dict())
def test_parse_yaml_srclib_corrupt_file(self):