summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2014-12-04 15:16:25 -0800
committerelijah <elijah@riseup.net>2014-12-04 15:16:25 -0800
commit7ca1a6feb2f881f2a99b624c266f0779d2402ff9 (patch)
tree43ee2d96ba1281fae3e098dffe55aa1bc0a0e409
parent60bd76583d46fe1c9f39804c7fd892fa9c1745d0 (diff)
tests - better errors, ensure tmp users are deleted, remove bad 'pass()' call that made tmp_user tests always succeed.
-rwxr-xr-xbin/run_tests6
-rw-r--r--tests/helpers/bonafide_helper.rb22
-rwxr-xr-xtests/helpers/soledad_sync.py2
-rw-r--r--tests/helpers/srp_helper.rb4
-rw-r--r--tests/white-box/webapp.rb10
5 files changed, 25 insertions, 19 deletions
diff --git a/bin/run_tests b/bin/run_tests
index 4addc0c8..44384379 100755
--- a/bin/run_tests
+++ b/bin/run_tests
@@ -49,15 +49,15 @@ end
# this class is raised if a test file wants to be skipped entirely.
# (to skip an individual test, MiniTest::Skip is used instead)
-class SkipTest < Exception
+class SkipTest < StandardError
end
# raised if --no-continue and there is an error
-class TestError < Exception
+class TestError < StandardError
end
# raised if --no-continue and there is a failure
-class TestFailure < Exception
+class TestFailure < StandardError
end
##
diff --git a/tests/helpers/bonafide_helper.rb b/tests/helpers/bonafide_helper.rb
index c84ea142..d96b3977 100644
--- a/tests/helpers/bonafide_helper.rb
+++ b/tests/helpers/bonafide_helper.rb
@@ -8,10 +8,13 @@ class LeapTest
user = assert_create_user
assert_authenticate_user(user)
yield user if block_given?
- rescue
- # ^^ ensure here would eat any failed assertions
assert_delete_user(user)
- raise
+ rescue StandardError, MiniTest::Assertion => exc
+ begin
+ assert_delete_user(user)
+ rescue
+ end
+ raise exc
end
def api_url(path)
@@ -67,19 +70,16 @@ class LeapTest
# attempts to destroy a user account via the API.
#
def assert_delete_user(user)
- if user && user.ok && user.id && user.session_token
+ if user && user.ok && user.id && user.session_token && !user.deleted
url = api_url("/1/users/#{user.id}.json")
options = {:headers => {
"Authorization" => "Token token=\"#{user.session_token}\""
}}
+ user.deleted = true
delete(url, {}, options) do |body, response, error|
- if response.code.to_i != 200
- skip "It appears the web api is too old to support deleting users"
- else
- assert(response = JSON.parse(body), 'response should be JSON')
- assert(response["success"], 'delete should be a success')
- pass
- end
+ assert response.code.to_i == 200, "Unable to delete user: HTTP response from API should have code 200, was #{response.code} #{error} #{body}"
+ assert(response = JSON.parse(body), 'Delete response should be JSON')
+ assert(response["success"], 'Deleting user should be a success')
end
end
end
diff --git a/tests/helpers/soledad_sync.py b/tests/helpers/soledad_sync.py
index 54b6f34b..2fb865fc 100755
--- a/tests/helpers/soledad_sync.py
+++ b/tests/helpers/soledad_sync.py
@@ -19,6 +19,7 @@
import os
import sys
+import traceback
import tempfile
import shutil
import u1db
@@ -73,4 +74,5 @@ if __name__ == '__main__':
exit(1)
except Exception as exc:
print(exc.message or str(exc))
+ traceback.print_exc(file=sys.stdout)
exit(2)
diff --git a/tests/helpers/srp_helper.rb b/tests/helpers/srp_helper.rb
index 0aa1b1fb..5d30b459 100644
--- a/tests/helpers/srp_helper.rb
+++ b/tests/helpers/srp_helper.rb
@@ -6,6 +6,7 @@
require 'digest'
require 'openssl'
require 'securerandom'
+require 'base64'
module SRP
@@ -135,7 +136,7 @@ d15dc7d7b46154d6b6ce8ef4ad69b15d4982559b297bcf1885c529f566660e5
class User
include SRP::Util
- attr_accessor :username, :password, :salt, :verifier, :id, :session_token, :ok
+ attr_accessor :username, :password, :salt, :verifier, :id, :session_token, :ok, :deleted
def initialize
@username = "test_user_" + SecureRandom.urlsafe_base64(10).downcase.gsub(/[_-]/, '')
@@ -143,6 +144,7 @@ d15dc7d7b46154d6b6ce8ef4ad69b15d4982559b297bcf1885c529f566660e5
@salt = bigrand(4).hex
@verifier = modpow(GENERATOR, private_key)
@ok = false
+ @deleted = false
end
def private_key
diff --git a/tests/white-box/webapp.rb b/tests/white-box/webapp.rb
index d2419ab4..d5d41833 100644
--- a/tests/white-box/webapp.rb
+++ b/tests/white-box/webapp.rb
@@ -51,7 +51,7 @@ class Webapp < LeapTest
if soledad_config && !soledad_config.empty?
soledad_server = pick_soledad_server(soledad_config)
assert_tmp_user do |user|
- assert user_db_exists?(user), "Could not find user db for test user #{user.username}"
+ assert_user_db_exists(user)
command = File.expand_path "../../helpers/soledad_sync.py", __FILE__
soledad_url = "https://#{soledad_server}/user-#{user.id}"
assert_run "#{command} #{user.id} #{user.session_token} #{soledad_url}"
@@ -87,17 +87,19 @@ class Webapp < LeapTest
# returns true if the per-user db created by tapicero exists.
# we try three times, and give up after that.
#
- def user_db_exists?(user)
+ def assert_user_db_exists(user)
+ last_body, last_response, last_error = nil
3.times do
sleep 0.1
get(couchdb_url("/user-#{user.id}/_design/docs")) do |body, response, error|
+ last_body, last_response, last_error = body, response, error
if response.code.to_i == 200
- return true
+ return
end
end
sleep 0.2
end
- return false
+ assert false, "Could not find user db for test user #{user.username}\nuuid=#{user.id}\nHTTP #{last_response.code} #{last_error} #{last_body}"
end
#