blob: e9ecc03079be382ca1e8dcc7c5b5a039520caa75 [file]
import pytest
import yaml
from datetime import datetime, timezone
from app.utility.base_world import BaseWorld
class TestBaseWorld:
default_config = dict(name='main', config={'app.contact.http': '0.0.0.0', 'plugins': ['sandcat', 'stockpile']})
default_yaml = dict(test_dir=1, implant_name='unittesting', test_int=1234)
@pytest.fixture
def reset_config(self):
BaseWorld.apply_config(**self.default_config)
yield
BaseWorld._app_configuration = dict()
@pytest.fixture
def yaml_file(self, tmpdir):
f = tmpdir.mkdir('yml').join('test.yml')
yaml_str = yaml.dump(self.default_yaml)
f.write(yaml_str)
assert f.read() == yaml_str
yield f
@pytest.fixture
def text_file(self, tmpdir):
txt_str = 'Hello world!'
f = tmpdir.mkdir('txt').join('test.txt')
f.write(txt_str)
assert f.read() == txt_str
yield f
@pytest.mark.usefixtures('reset_config')
def test_apply_and_retrieve_config(self):
new_config = dict(name='newconfig', config={'app.unit.test': 'abcd12345', 'plugins': ['stockpile']})
BaseWorld.apply_config(**new_config)
assert BaseWorld.get_config(name='newconfig') == new_config['config']
@pytest.mark.usefixtures('reset_config')
def test_get_prop_from_config(self):
assert BaseWorld.get_config(name='main', prop='app.contact.http') == '0.0.0.0'
@pytest.mark.usefixtures('reset_config')
def test_set_prop_from_config(self):
BaseWorld.set_config(name='main', prop='newprop', value='unittest')
assert BaseWorld.get_config(name='main', prop='newprop') == 'unittest'
def test_encode_and_decode_string(self):
plaintext = 'unit testing string'
encoded_text = 'dW5pdCB0ZXN0aW5nIHN0cmluZw=='
encoded_str = BaseWorld.encode_string(plaintext)
assert encoded_str == encoded_text
decoded_str = BaseWorld.decode_bytes(encoded_text)
assert decoded_str == plaintext
def test_jitter(self):
fraction = "1/5"
frac_arr = fraction.split('/')
jitter = BaseWorld.jitter(fraction)
assert jitter >= int(frac_arr[0])
assert jitter <= int(frac_arr[1])
def test_strip_yml_no_path(self):
yaml = BaseWorld.strip_yml(None)
assert yaml == []
def test_strip_yml(self, yaml_file):
yaml = BaseWorld.strip_yml(yaml_file)
assert yaml == [self.default_yaml]
def test_prepend_to_file(self, text_file):
line = 'This is appended!'
BaseWorld.prepend_to_file(text_file, line)
assert 'This is appended!\nHello world!' == text_file.read()
def test_get_current_timestamp(self):
date_format = '%Y-%m-%d %H'
output = BaseWorld.get_current_timestamp(date_format)
cur_time = datetime.now(timezone.utc).strftime(date_format)
assert cur_time == output
def test_is_not_base64(self):
assert not BaseWorld.is_base64('not base64')
def test_is_base64(self):
b64str = 'aGVsbG8gd29ybGQgZnJvbSB1bml0IHRlc3QgbGFuZAo='
assert BaseWorld.is_base64(b64str)