# Copyright 2018 Open Platform for NFV Project, Inc. and its contributors
# This software is distributed under the terms and conditions of the 'Apache-2.0'
# license which can be found in the file 'LICENSE' in this package distribution
# or at 'http://www.apache.org/licenses/LICENSE-2.0'.
import pytest
def test_valid_string():
from python_moonutilities.security_functions import validate_data
validate_data("CorrectString")
validate_data("Correct String")
validate_data("Correct String!")
validate_data("Correct String@")
validate_data(None)
validate_data(True)
def test_invalid_string():
from python_moonutilities.security_functions import validate_data
with pytest.raises(Exception) as exception_info:
validate_data("NotcorrectString")
assert str(exception_info.value) == 'Forbidden characters in string'
def test_none_value():
from python_moonutilities.security_functions import validate_data
with pytest.raises(Exception) as exception_info:
validate_data(object)
assert 'Value is Not String or Container or Dictionary' in str(exception_info.value)
def test_numeric_value():
from python_moonutilities.security_functions import validate_data
with pytest.raises(Exception) as exception_info:
validate_data(1)
assert 'Value is Not String or Container or Dictionary' in str(exception_info.value)
with pytest.raises(Exception) as exception_info:
validate_data(1.23)
assert 'Value is Not String or Container or Dictionary' in str(exception_info.value)
def test_correct_list_one_element():
from python_moonutilities.security_functions import validate_data
validate_data(["test_1", "test_2", "test_3"])
def test_correct_list_multiple_element():
from python_moonutilities.security_functions import validate_data
validate_data(["test"])
def test_correct_nested_list():
from python_moonutilities.security_functions import validate_data
validate_data([["test_1", "test_2"], [["test_3"], ["test_4"]], ["test_5", "test_6"], ["test_7"]])
def test_incorrect_string_inside_list():
from python_moonutilities.security_functions import validate_data
with pytest.raises(Exception) as exception_info:
validate_data(["test_1", ["test_2", "forbiddencharacter"]])
assert str(exception_info.value) == 'Forbidden characters in string'
def test_correct_tuples():
from python_moonutilities.security_functions import validate_data
validate_data(("test_1", "test_2"))
def test_correct_tuple_of_tuple():
from python_moonutilities.security_functions import validate_data
validate_data(("test_1", ("test_2", "test_3"), (("test_4", "test_5"), ("test_6", "test_7"))))
def test_incorrect_string_within_tuple():
from python_moonutilities.security_functions import validate_data
with pytest.raises(Exception) as exception_info:
validate_data(("test_1", "forbiddencharacter"))
assert str(exception_info.value) == 'Forbidden characters in string'
def test_correct_dictionary():
from python_moonutilities.security_functions import validate_data
validate_data({"test_1": "test_2"})
def test_incorrect_string_within_dictionary():
from python_moonutilities.security_functions import validate_data
with pytest.raises(Exception) as exception_info:
validate_data({"test_1": "forbiddencharacter"})
assert str(exception_info.value) == 'Forbidden characters in string'
def test_correct_function_pass():
from python_moonutilities.security_functions import validate_input
@validate_input()
def temp_function(string, list, tuple):
if string != "teststring":
raise ValueError("values which passed incorrect")
temp_function("teststring", ["teststring", ["teststring"]], ("teststring", ("teststring", )))
def test_incorrect_validating_function_with_kwargs():
from python_moonutilities.security_functions import validate_input
@validate_input(kwargs_state=[True,True])
def temp_function(string, list, tuple):
if string != "teststring":
raise ValueError("values which passed incorrect")
with pytest.raises(Exception) as exception_info:
temp_function("teststring", list=["teststring", ["teststring"]],tuple=("teststring", ("teststring", )))
assert str(exception_info.value) == 'Forbidden characters in string'
def test_incorrect_validating_function():
from python_moonutilities.security_functions import validate_input
@validate_input()
def temp_function(string, list, dictionary):
if string != "teststring":
raise ValueError("values which passed incorrect")
with pytest.raises(Exception) as exception_info:
temp_function("teststring", ["teststring", ["teststring"]], {"teststring": ("teststring", )})
assert str(exception_info.value) == 'Forbidden characters in string'
def test_incorrect_validating_class_function():
from python_moonutilities.security_functions import validate_input
class Testclass:
@validate_input()
def temp_function(self, string, list, dictionary):
if string != "teststring":
raise ValueError("values which passed incorrect")
e = Testclass()
with pytest.raises(Exception) as exception_info:
e.temp_function("teststring", ["teststring", ["teststring"]], {"teststring": ("teststring", )})
assert str(exception_info.value) == 'Forbidden characters in string'