|
Packit Service |
39273c |
#
|
|
Packit Service |
39273c |
# Copyright (C) 2013 Red Hat, Inc.
|
|
Packit Service |
39273c |
#
|
|
Packit Service |
39273c |
# This copyrighted material is made available to anyone wishing to use,
|
|
Packit Service |
39273c |
# modify, copy, or redistribute it subject to the terms and conditions of
|
|
Packit Service |
39273c |
# the GNU General Public License v.2, or (at your option) any later version.
|
|
Packit Service |
39273c |
# This program is distributed in the hope that it will be useful, but WITHOUT
|
|
Packit Service |
39273c |
# ANY WARRANTY expressed or implied, including the implied warranties of
|
|
Packit Service |
39273c |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
Packit Service |
39273c |
# Public License for more details. You should have received a copy of the
|
|
Packit Service |
39273c |
# GNU General Public License along with this program; if not, write to the
|
|
Packit Service |
39273c |
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
Packit Service |
39273c |
# 02110-1301, USA. Any Red Hat trademarks that are incorporated in the
|
|
Packit Service |
39273c |
# source code or documentation are not subject to the GNU General Public
|
|
Packit Service |
39273c |
# License and may only be used or replicated with the express permission of
|
|
Packit Service |
39273c |
# Red Hat, Inc.
|
|
Packit Service |
39273c |
#
|
|
Packit Service |
39273c |
# Red Hat Author(s): Vratislav Podzimek <vpodzime@redhat.com>
|
|
Packit Service |
39273c |
#
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
"""Module with unit tests for the common.py module"""
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
import mock
|
|
Packit Service |
39273c |
import os
|
|
Packit Service |
39273c |
from collections import namedtuple
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
import pytest
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
from org_fedora_oscap import utils
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
@pytest.fixture()
|
|
Packit Service |
39273c |
def mock_os():
|
|
Packit Service |
39273c |
mock_os = mock.Mock()
|
|
Packit Service |
39273c |
mock_os.makedirs = mock.Mock()
|
|
Packit Service |
39273c |
mock_os.path = mock.Mock()
|
|
Packit Service |
39273c |
mock_os.path.isdir = mock.Mock()
|
|
Packit Service |
39273c |
return mock_os
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def mock_utils_os(mock_os, monkeypatch):
|
|
Packit Service |
39273c |
utils_module_symbols = utils.__dict__
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
monkeypatch.setitem(utils_module_symbols, "os", mock_os)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_existing_dir(mock_os, monkeypatch):
|
|
Packit Service |
39273c |
mock_utils_os(mock_os, monkeypatch)
|
|
Packit Service |
39273c |
mock_os.path.isdir.return_value = True
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
utils.ensure_dir_exists("/tmp/test_dir")
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mock_os.path.isdir.assert_called_with("/tmp/test_dir")
|
|
Packit Service |
39273c |
assert not mock_os.makedirs.called
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_nonexisting_dir(mock_os, monkeypatch):
|
|
Packit Service |
39273c |
mock_utils_os(mock_os, monkeypatch)
|
|
Packit Service |
39273c |
mock_os.path.isdir.return_value = False
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
utils.ensure_dir_exists("/tmp/test_dir")
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mock_os.path.isdir.assert_called_with("/tmp/test_dir")
|
|
Packit Service |
39273c |
mock_os.makedirs.assert_called_with("/tmp/test_dir")
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_no_dir(mock_os, monkeypatch):
|
|
Packit Service |
39273c |
mock_utils_os(mock_os, monkeypatch)
|
|
Packit Service |
39273c |
# shouldn't raise an exception
|
|
Packit Service |
39273c |
utils.ensure_dir_exists("")
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_relative_relative():
|
|
Packit Service |
39273c |
assert utils.join_paths("foo", "blah") == "foo/blah"
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_relative_absolute():
|
|
Packit Service |
39273c |
assert utils.join_paths("foo", "/blah") == "foo/blah"
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_absolute_relative():
|
|
Packit Service |
39273c |
assert utils.join_paths("/foo", "blah") == "/foo/blah"
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_absolute_absolute():
|
|
Packit Service |
39273c |
assert utils.join_paths("/foo", "/blah") == "/foo/blah"
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_dict():
|
|
Packit Service |
39273c |
dct = {"a": 1, "b": 2}
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mapped_dct = utils.keep_type_map(str.upper, dct)
|
|
Packit Service |
39273c |
assert list(mapped_dct.keys()) == ["A", "B"]
|
|
Packit Service |
39273c |
assert isinstance(mapped_dct, dict)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_list():
|
|
Packit Service |
39273c |
lst = [1, 2, 4, 5]
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mapped_lst = utils.keep_type_map(lambda x: x ** 2, lst)
|
|
Packit Service |
39273c |
assert mapped_lst == [1, 4, 16, 25]
|
|
Packit Service |
39273c |
assert isinstance(mapped_lst, list)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_tuple():
|
|
Packit Service |
39273c |
tpl = (1, 2, 4, 5)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mapped_tpl = utils.keep_type_map(lambda x: x ** 2, tpl)
|
|
Packit Service |
39273c |
assert mapped_tpl == (1, 4, 16, 25)
|
|
Packit Service |
39273c |
assert isinstance(mapped_tpl, tuple)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_namedtuple():
|
|
Packit Service |
39273c |
NT = namedtuple("TestingNT", ["a", "b"])
|
|
Packit Service |
39273c |
ntpl = NT(2, 4)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mapped_tpl = utils.keep_type_map(lambda x: x ** 2, ntpl)
|
|
Packit Service |
39273c |
assert mapped_tpl == NT(4, 16)
|
|
Packit Service |
39273c |
assert isinstance(mapped_tpl, tuple)
|
|
Packit Service |
39273c |
assert isinstance(mapped_tpl, NT)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_set():
|
|
Packit Service |
39273c |
st = {1, 2, 4, 5}
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mapped_st = utils.keep_type_map(lambda x: x ** 2, st)
|
|
Packit Service |
39273c |
assert mapped_st == {1, 4, 16, 25}
|
|
Packit Service |
39273c |
assert isinstance(mapped_st, set)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_str():
|
|
Packit Service |
39273c |
stri = "abcd"
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mapped_stri = utils.keep_type_map(lambda c: chr((ord(c) + 2) % 256), stri)
|
|
Packit Service |
39273c |
assert mapped_stri == "cdef"
|
|
Packit Service |
39273c |
assert isinstance(mapped_stri, str)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_gen():
|
|
Packit Service |
39273c |
generator = (el for el in (1, 2, 4, 5))
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
mapped_generator = utils.keep_type_map(lambda x: x ** 2, generator)
|
|
Packit Service |
39273c |
assert tuple(mapped_generator) == (1, 4, 16, 25)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
# any better test for this?
|
|
Packit Service |
39273c |
assert "__next__" in dir(mapped_generator)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
def test_hash():
|
|
Packit Service |
39273c |
file_hash = '87fcda7d9e7a22412e95779e2f8e70f929106c7b27a94f5f8510553ebf4624a6'
|
|
Packit Service |
39273c |
hash_obj = utils.get_hashing_algorithm(file_hash)
|
|
Packit Service |
39273c |
assert hash_obj.name == "sha256"
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'file')
|
|
Packit Service |
39273c |
computed_hash = utils.get_file_fingerprint(filepath, hash_obj)
|
|
Packit Service |
39273c |
|
|
Packit Service |
39273c |
assert file_hash == computed_hash
|