Browse Source

fixed #45, added readme with instructions on how to test

Daniel Roesler 9 years ago
parent
commit
ad59a79681
1 changed files with 44 additions and 0 deletions
  1. 44 0
      tests/README.md

+ 44 - 0
tests/README.md

@@ -0,0 +1,44 @@
+# How to test acme-tiny
+
+Testing acme-tiny requires a bit of setup since it interacts with other servers
+(Let's Encrypt's staging server) to test issuing fake certificates. This readme
+explains how to setup and test acme-tiny yourself.
+
+## Setup instructions
+
+1. Make a test subdomain for a server you control. Set it as an environmental
+variable on your local test setup.
+  * On your local: `export TRAVIS_DOMAIN=travis-ci.gethttpsforfree.com`
+2. Generate a shared secret between your local test setup and your server.
+  * `openssl rand -base64 32`
+  * On your local: `export TRAVIS_SESSION="<random_string_here>"`
+3. Copy and run the test suite mini-server on your server:
+  * `scp server.py ubuntu@travis-ci.gethttpsforfree.com`
+  * `ssh ubuntu@travis-ci.gethttpsforfree.com`
+  * `export TRAVIS_SESSION="<random_string_here>"`
+  * `sudo server.py`
+4. Install the test requirements on your local (FUSE and optionally coveralls).
+  * `sudo apt-get install fuse`
+  * `virtualenv /tmp/venv`
+  * `source /tmp/venv/bin/activate`
+  * `pip install -r requirements.txt`
+5. Run the test suit on your local.
+  * `cd /path/to/acme-tiny`
+  * `coverage run --source ./ --omit ./tests/server.py -m unittest tests`
+
+## Why use FUSE?
+
+Acme-tiny writes the challenge files for certificate issuance. In order to do
+full integration tests, we actually need to serve correct challenge files to
+the Let's Encrypt staging server on a real domain that they can verify. However,
+Travis-CI doesn't have domains associated with their test VMs, so we need to
+send the files to the remote server that does have a real domain.
+
+The test suite uses FUSE to do this. It creates a FUSE folder that simulates
+being a real folder to acme-tiny. When acme-tiny writes the challenge files
+in the mock folder, FUSE POSTs those files to the real server (which is running
+the included server.py), and the server starts serving them. That way, both
+acme-tiny and Let's Encrypt staging can verify and issue the test certificate.
+This technique allows for high test coverage on automated test runners (e.g.
+Travis-CI).
+