Skip to content

Commit c890736

Browse files
Add vagrant test environment (close #32)
1 parent e098356 commit c890736

File tree

2 files changed

+110
-6
lines changed

2 files changed

+110
-6
lines changed

README.md

+33-6
Original file line numberDiff line numberDiff line change
@@ -123,18 +123,45 @@ Once closed and restarted:
123123

124124
### Tests
125125

126-
Before running the tests you need to
126+
Before running the tests you need to install needed dependencies with
127127

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

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

132134
```
133-
pip install -r tests/requirements.txt
135+
$ python -m pytest tests
134136
```
135137

136-
Then tests can be started with
138+
#### Environment
139+
140+
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.
137141

142+
1. Start the `nordpy` gui and connect to any server in order to store the password
143+
144+
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.
138145
```
139-
python -m pytest tests
146+
# chmod +r credentials
140147
```
148+
149+
3. Create the environment
150+
151+
```
152+
$ vagrant up
153+
```
154+
155+
4. Open a shell into the vm
156+
157+
```
158+
$ vagrant ssh
159+
```
160+
161+
5. Move to the shared folder and install nordpy
162+
163+
```
164+
$ cd /Vagrant && ./install.sh
165+
```
166+
167+
6. Start testing as said above!

Vagrantfile

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# -*- mode: ruby -*-
2+
# vi: set ft=ruby :
3+
4+
# All Vagrant configuration is done below. The "2" in Vagrant.configure
5+
# configures the configuration version (we support older styles for
6+
# backwards compatibility). Please don't change it unless you know what
7+
# you're doing.
8+
Vagrant.configure("2") do |config|
9+
# The most common configuration options are documented and commented below.
10+
# For a complete reference, please see the online documentation at
11+
# https://docs.vagrantup.com.
12+
13+
# Every Vagrant development environment requires a box. You can search for
14+
# boxes at https://vagrantcloud.com/search.
15+
config.vm.box = "generic/ubuntu1804"
16+
17+
# for some reason the current folder is not automatically mounted
18+
config.vm.synced_folder ".", "/Vagrant"
19+
20+
# Disable automatic box update checking. If you disable this, then
21+
# boxes will only be checked for updates when the user runs
22+
# `vagrant box outdated`. This is not recommended.
23+
# config.vm.box_check_update = false
24+
25+
# Create a forwarded port mapping which allows access to a specific port
26+
# within the machine from a port on the host machine. In the example below,
27+
# accessing "localhost:8080" will access port 80 on the guest machine.
28+
# NOTE: This will enable public access to the opened port
29+
# config.vm.network "forwarded_port", guest: 80, host: 8080
30+
31+
# Create a forwarded port mapping which allows access to a specific port
32+
# within the machine from a port on the host machine and only allow access
33+
# via 127.0.0.1 to disable public access
34+
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
35+
36+
# Create a private network, which allows host-only access to the machine
37+
# using a specific IP.
38+
# config.vm.network "private_network", ip: "192.168.33.10"
39+
40+
# Create a public network, which generally matched to bridged network.
41+
# Bridged networks make the machine appear as another physical device on
42+
# your network.
43+
# config.vm.network "public_network"
44+
45+
# Share an additional folder to the guest VM. The first argument is
46+
# the path on the host to the actual folder. The second argument is
47+
# the path on the guest to mount the folder. And the optional third
48+
# argument is a set of non-required options.
49+
# config.vm.synced_folder "../data", "/vagrant_data"
50+
51+
# Provider-specific configuration so you can fine-tune various
52+
# backing providers for Vagrant. These expose provider-specific options.
53+
# Example for VirtualBox:
54+
#
55+
# config.vm.provider "virtualbox" do |vb|
56+
# # Display the VirtualBox GUI when booting the machine
57+
# vb.gui = true
58+
#
59+
# # Customize the amount of memory on the VM:
60+
# vb.memory = "1024"
61+
# end
62+
#
63+
# View the documentation for the provider you are using for more
64+
# information on available options.
65+
66+
# Enable provisioning with a shell script. Additional provisioners such as
67+
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
68+
# documentation for more information about their specific syntax and use.
69+
config.vm.provision "shell", inline: <<-SHELL
70+
systemctl stop systemd-resolved
71+
systemctl disable systemd-resolved
72+
printf "nameserver 8.8.8.8\n" | sudo tee /etc/resolv.conf > /dev/null
73+
apt update
74+
DEBIAN_FRONTEND=noninteractive apt upgrade -y
75+
apt install -y python3-pip
76+
SHELL
77+
end

0 commit comments

Comments
 (0)