Skip to content

Commit

Permalink
Add vagrant test environment (close #32)
Browse files Browse the repository at this point in the history
  • Loading branch information
morpheusthewhite committed Feb 29, 2020
1 parent e098356 commit c890736
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 6 deletions.
39 changes: 33 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,18 +123,45 @@ Once closed and restarted:

### Tests

Before running the tests you need to
Before running the tests you need to install needed dependencies with

1. Start `nordpy` and connect to any server, in order to store the credentials
```
# pip install -r tests/requirements.txt
```

2. Install needed dependencies with
Make sure you also connected at least once with the gui (in order to store the credentials). Then tests can be started with

```
pip install -r tests/requirements.txt
$ python -m pytest tests
```

Then tests can be started with
#### Environment

You can also easily setup a test environment with `vagrant` (so you will need to install before proceeding with the following steps): the project contains a minimalistic `Vagrantfile` to initialize it.

1. Start the `nordpy` gui and connect to any server in order to store the password

2. Change the permissions of the `credentials` file. **WARNING**: this will the expose the password of your NordVPN account to anyone which has access to your machine.
```
python -m pytest tests
# chmod +r credentials
```

3. Create the environment

```
$ vagrant up
```

4. Open a shell into the vm

```
$ vagrant ssh
```

5. Move to the shared folder and install nordpy

```
$ cd /Vagrant && ./install.sh
```

6. Start testing as said above!
77 changes: 77 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "generic/ubuntu1804"

# for some reason the current folder is not automatically mounted
config.vm.synced_folder ".", "/Vagrant"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.

# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
systemctl stop systemd-resolved
systemctl disable systemd-resolved
printf "nameserver 8.8.8.8\n" | sudo tee /etc/resolv.conf > /dev/null
apt update
DEBIAN_FRONTEND=noninteractive apt upgrade -y
apt install -y python3-pip
SHELL
end

0 comments on commit c890736

Please sign in to comment.