You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.6 KiB
Python

import pytest
from simplezfs.types import DatasetType, PropertySource
class TestDatasetType:
@pytest.mark.parametrize('string,value', [('FiLeSet', DatasetType.FILESET), ('fileset', DatasetType.FILESET), ('vOlUMe', DatasetType.VOLUME), ('volume', DatasetType.VOLUME), ('SnapSHOT', DatasetType.SNAPSHOT), ('snapshot', DatasetType.SNAPSHOT), ('BOOKmark', DatasetType.BOOKMARK), ('bookmark', DatasetType.BOOKMARK)])
def test_from_string_valid(self, string, value):
'''
Tests that the from_string helper works.
'''
v = DatasetType.from_string(string)
assert isinstance(v, DatasetType)
assert v.value == string.lower()
@pytest.mark.parametrize('string', [' fileset', 'dateiset', 'file set', 'data\0set', '', ' '])
def test_from_string_invalid(self, string):
'''
Tests if it raises an exception if the value is invalid.
'''
with pytest.raises(ValueError) as excinfo:
DatasetType.from_string(string)
assert 'not a valid DatasetType' in str(excinfo.value)
def test_from_string_None(self):
'''
Tests that it properly fails with None as input.
'''
with pytest.raises(ValueError) as excinfo:
DatasetType.from_string(None)
assert 'only string' in str(excinfo.value)
class TestPropertySource:
@pytest.mark.parametrize('string,value', [('default', PropertySource.DEFAULT), ('DeFAULT', PropertySource.DEFAULT), ('inheriteD', PropertySource.INHERITED), ('inherited', PropertySource.INHERITED), ('TEMPORARY', PropertySource.TEMPORARY), ('temporary', PropertySource.TEMPORARY), ('rEcEiVeD', PropertySource.RECEIVED), ('received', PropertySource.RECEIVED), ('None', PropertySource.NONE), ('none', PropertySource.NONE)])
def test_from_string_valid(self, string, value):
'''
Test that the from_string helper works.
'''
v = PropertySource.from_string(string)
assert isinstance(v, PropertySource)
assert v.value == string.lower()
@pytest.mark.parametrize('string', ['asd', '', ' ', 'default\0', 'defaultdefault', 'Normal'])
def test_from_string_invalid(self, string):
'''
Tests that it raises an exception if the value is invalid.
'''
with pytest.raises(ValueError) as excinfo:
PropertySource.from_string(string)
assert 'not a valid PropertySource' in str(excinfo.value)
def test_from_string_None(self):
'''
Tests that it properly fails with None as input.
'''
with pytest.raises(ValueError) as excinfo:
PropertySource.from_string(None)
assert 'only string' in str(excinfo.value)