Beispiel #1
0
class TestMullvad(unittest.TestCase):
    def setUp(self):
        self.settings = Settings()
        self.settings.put("user", "accountnumber", "2132sadfqf")
        self.wallet = MagicMock(Wallet)
        self.mullvad = MullVad(self.settings)
        self.option = MagicMock(VpnOption)

    def test_purchase(self):
        self.mullvad._login = MagicMock()
        self.mullvad._order = MagicMock()
        self.mullvad.pay = MagicMock()

        self.mullvad.purchase(self.wallet, self.option)

        self.assertTrue(self.mullvad._login.called)
        self.assertTrue(self.mullvad._order.called)
        self.assertTrue(self.mullvad.pay.called)

    def test_get_status(self):
        self.mullvad._get_expiration_date = MagicMock(
            return_value="2 January 2019")
        self.mullvad._login = MagicMock()
        now = datetime.datetime.strptime("9 December 2018", "%d %B %Y")
        self.mullvad._get_current_date = MagicMock(return_value=now)

        (online, expire_date) = self.mullvad.get_status()

        self.assertEqual(True, online)
        self.assertEqual(2019, expire_date.year)
        self.assertEqual(1, expire_date.month)
        self.assertEqual(2, expire_date.day)
Beispiel #2
0
class TestMullvad(unittest.TestCase):
    def setUp(self):
        self.settings = Settings()
        self.settings.put("user", "accountnumber", "2132sadfqf")
        self.wallet = MagicMock(Wallet)
        self.mullvad = MullVad(self.settings)
        self.option = MagicMock(VpnOption)

    def test_purchase(self):
        self.mullvad._login = MagicMock()
        self.mullvad._order = MagicMock()
        self.mullvad.pay = MagicMock()

        self.mullvad.purchase(self.wallet, self.option)

        self.assertTrue(self.mullvad._login.called)
        self.assertTrue(self.mullvad._order.called)
        self.assertTrue(self.mullvad.pay.called)

    def test_get_status(self):
        self.mullvad._check_vpn_date = MagicMock(return_value=(True, "-5"))
        self.mullvad._login = MagicMock()

        expiration_date = self.mullvad.get_status()[1]
        now = datetime.datetime.now(datetime.timezone.utc)
        expiration_days = datetime.timedelta(days=int("-5"))
        full_date = now + expiration_days

        self.assertEqual(expiration_date.day, full_date.day)
        self.assertEqual(expiration_date.month, full_date.month)
Beispiel #3
0
class TestHosters(unittest.TestCase):
    def setUp(self):
        self.settings = Settings()
        self.settings.read_settings(
            os.path.join(os.path.dirname(__file__),
                         'resources/test_settings.cfg'))

    @parameterized.expand(providers)
    def test_vpn_hoster_options(self, hoster):
        options = hoster.get_options()
        self.assertTrue(len(options) > 0)

    @parameterized.expand(providers)
    def test_vpn_hoster_configuration(self, hoster):
        config = hoster(self.settings).get_configuration()
        self.assertTrue(len(config) > 0)
Beispiel #4
0
def _get_user_settings(args, provider=None):
    user_settings = Settings()
    if 'config' in vars(args):
        user_settings.read_settings(filename=args.config)
    else:
        user_settings.read_settings()
    _merge_arguments(user_settings, provider, vars(args))
    return user_settings
Beispiel #5
0
def _get_user_settings(args, provider=None):
    user_settings = Settings()
    if 'config' in vars(args):
        user_settings.read_settings(filename=args.config)
    else:
        user_settings.read_settings()
    _merge_arguments(user_settings, provider, vars(args))

    # Set global testnet variable according to configuration
    if user_settings.has_key('user', 'testnet') and user_settings.get(
            'user', 'testnet') == '1':
        os.environ['TESTNET'] = '1'
    else:
        os.environ['TESTNET'] = '0'
    return user_settings
    def test_hoster_purchase(self, hoster):
        user_settings = Settings()
        self._merge_random_user_data(user_settings)

        host = hoster(user_settings)
        options = list(host.get_options())[0]
        wallet = MagicMock()
        wallet.pay = MagicMock()

        try:
            host.purchase(wallet, options)
            wallet.pay.assert_called_once()
        except VPSOutOfStockException as exception:
            self.skipTest(exception)
Beispiel #7
0
def child_account(index=None):
    """
    This method returns the configuration for a certain child number.
    :param index: The number of the child
    :type index: Integer
    :return: configuration of the child
    :rtype: Settings
    """
    if index is not None:
        account = AccountSettings()
        account.read_settings(
            os.path.join(user_config_dir(), 'child_config' + str(index) + '.cfg'))
    else:
        account = AccountSettings()
        account.read_settings(
            os.path.join(user_config_dir(), 'child_config' + str(PlebNetConfig().get("child_index")) + '.cfg'))
    return account
Beispiel #8
0
 def setUp(self):
     self.settings = Settings()
     self.settings.put("user", "accountnumber", "2132sadfqf")
     self.wallet = MagicMock(Wallet)
     self.mullvad = MullVad(self.settings)
     self.option = MagicMock(VpnOption)
Beispiel #9
0
 def setUp(self):
     self.settings = Settings()
     self.settings.read_settings(
         os.path.join(os.path.dirname(__file__),
                      'resources/test_settings.cfg'))
from plebnet.agent.config import PlebNetConfig
from plebnet.agent.qtable import QTable
from plebnet.utilities import fake_generator
from cloudomate.util.settings import Settings
from plebnet.settings import plebnet_settings as setup
from mock.mock import MagicMock
from plebnet.utilities import logger as Logger

test_log_path = os.path.join(user_config_dir(), 'tests_logs')
test_log_file = os.path.join(user_config_dir(), 'tests_logs/plebnet.logs')
test_child_file = os.path.join(user_config_dir(), 'test_child_config.cfg')
test_child_QTable_file = os.path.join(user_config_dir(), 'Child_QTable.json')
test_bought = ['linevast', 'Advanced', 666, 0]
plebnet_file = os.path.join(user_config_dir(), 'plebnet.json')

test_account = Settings()


class TestServerInstaller(unittest.TestCase):

    # test_account = None
    test_qtable = None

    @mock.patch('plebnet.utilities.fake_generator._child_file',
                return_value=test_child_file)
    def setUp(self, mock):

        if os.path.isfile(test_log_file):
            os.remove(test_log_file)
        if os.path.isfile(test_child_file):
            os.remove(test_child_file)
Beispiel #11
0
 def __init__(self):
     self._browser = StatefulBrowser(user_agent="Firefox")
     self._settings = Settings()
     self._settings.read_settings()
Beispiel #12
0
class InstallMullvad(object):
    CONFIGURATION_URL = "https://mullvad.net/en/download/config/"
    TESTING_URL = "https://am.i.mullvad.net/json"

    def __init__(self):
        self._browser = StatefulBrowser(user_agent="Firefox")
        self._settings = Settings()
        self._settings.read_settings()

    def _check_vpn(self, setup=False):
        # Check if VPN is active
        response = requests.get(self.TESTING_URL)
        print(response.json())

        # Check if IP's country is Sweden
        if response.json()["country"] == "Sweden":
            print("VPN is active!")
        else:
            if setup:
                print("Error: VPN was not installed!")
            else:
                self.setup_vpn()

    # Automatically sets up VPN with settings from provider
    def setup_vpn(self):
        # Get the necessary files for connecting to the VPN service
        self._download_files()

        # Copy files to OpenVPN folder
        result = os.popen("sudo cp -a ./config-files/. /etc/openvpn/").read()
        print(result)

        os.chdir("/etc/openvpn/")

        # Start OpenVPN connection
        result = os.popen(
            "sudo nohup openvpn --config ./mullvad_se-sto.conf > /dev/null &"
        ).read()
        print(result)

        # Sleep for 10 seconds, so that VPN connection can be established in the
        # mean time
        time.sleep(10)
        self._check_vpn(True)

    # Download configuration files for setting up VPN and extract them
    def _download_files(self):
        # Fill information on website to get right files for openVPN
        self._browser.open(self.CONFIGURATION_URL)
        form = self._browser.select_form()
        form["account_token"] = self._settings.get("user", "accountnumber")
        form["platform"] = "linux"
        form["region"] = "se-sto"
        form["port"] = "0"
        self._browser.session.headers["Referer"] = self._browser.get_url()
        response = self._browser.submit_selected()
        content = response.content

        # Create the folder that will store the configuration files
        result = os.popen("mkdir config-files").read()
        print(result)

        # Download the zip file to the right location
        files_path = "./config-files/config.zip"
        with open(files_path, "wb") as output:
            output.write(content)

        # Unzip files
        zip_file = zipfile.ZipFile(files_path, "r")
        for member in zip_file.namelist():
            filename = os.path.basename(member)
            # Skip directories
            if not filename:
                continue

            # Copy file (taken from zipfile's extract)
            source = zip_file.open(member)
            target = open(os.path.join("./config-files/", filename), "wb")
            with source, target:
                shutil.copyfileobj(source, target)
        # Delete zip file
        os.remove(files_path)
Beispiel #13
0
    def test_generate_child_has_content(self, mock):
        fake_generator.generate_child_account()
        account = Settings()
        account.read_settings(test_file)

        self.assertIsNotNone(account.get('user', 'email'))
        self.assertIsNotNone(account.get('user', 'firstname'))
        self.assertIsNotNone(account.get('user', 'lastname'))
        self.assertIsNotNone(account.get('user', 'companyname'))
        self.assertIsNotNone(account.get('user', 'phonenumber'))
        self.assertIsNotNone(account.get('user', 'password'))

        self.assertIsNotNone(account.get('address', 'address'))
        self.assertIsNotNone(account.get('address', 'city'))
        self.assertIsNotNone(account.get('address', 'state'))
        self.assertIsNotNone(account.get('address', 'countrycode'))
        self.assertIsNotNone(account.get('address', 'zipcode'))

        self.assertIsNotNone(account.get('server', 'root_password'))
        self.assertEqual(account.get('server', 'ns1'), 'ns1')
        self.assertEqual(account.get('server', 'ns2'), 'ns2')
        self.assertIsNotNone(account.get('server', 'hostname'))
Beispiel #14
0
class TestSettings(unittest.TestCase):
    def setUp(self):
        self.settings = Settings()
        self.settings.read_settings(
            os.path.join(os.path.dirname(__file__),
                         'resources/test_settings.cfg'))

    def test_read_config(self):
        self.assertIsNotNone(self.settings)

    def test_has_first_name(self):
        self.assertIsNotNone(self.settings.get('user', 'firstname'))

    def test_has_email(self):
        self.assertTrue("@" in self.settings.get('user', 'email'))

    def test_verify_config(self):
        verification = {"user": ["email", 'firstname', 'lastname']}
        self.assertTrue(self.settings.verify_options(verification))

    def test_verify_bad_config(self):
        verification = {
            "user": ["email", 'firstname', 'lastname'
                     "randomattribute"]
        }
        self.assertFalse(self.settings.verify_options(verification))

    def test_put(self):
        key = "putkey"
        section = "putsection"
        value = "putvalue"
        self.settings.put(section, key, value)
        self.assertEqual(self.settings.get(section, key), value)

    def test_get_merge(self):
        key = 'email'
        sections = ['testhoster', 'user']
        value = '*****@*****.**'
        self.assertEqual(self.settings.get_merge(sections, key), value)

    def test_get_merge_ordering(self):
        key = 'email'
        sections = ['user', 'testhoster']
        value = '*****@*****.**'
        self.assertEqual(self.settings.get_merge(sections, key), value)

    def test_custom_provider(self):
        self.assertEqual(self.settings.get("testhoster", "email"),
                         "*****@*****.**")