summaryrefslogtreecommitdiff
path: root/test/functional/sample_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/sample_test.rb')
-rw-r--r--test/functional/sample_test.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/functional/sample_test.rb b/test/functional/sample_test.rb
new file mode 100644
index 0000000..5886349
--- /dev/null
+++ b/test/functional/sample_test.rb
@@ -0,0 +1,58 @@
+require 'support/functional_test'
+
+class SampleTest < FunctionalTest
+ # don't parallize me... Hard to get that right with nickserver start & stop
+
+ def run(*args)
+ nickserver :start
+ super
+ ensure
+ nickserver :stop
+ end
+
+ def test_running
+ assert_running
+ end
+
+ # def test_invalid
+ # assert_lookup_status 400, 'invalid'
+ # end
+
+ def test_nicknym
+ assert_lookup_status 200, 'test@mail.bitmask.net'
+ end
+
+ # Regression Tests
+
+ def test_no_file_descriptors_leak
+ lookup 'test@mail.bitmask.net'
+ before = open_files_count
+ lookup 'test@mail.bitmask.net'
+ assert_equal before, open_files_count, 'Filedescriptors leaked'
+ end
+
+ protected
+
+ def assert_lookup_status(status, address)
+ assert_equal status, lookup(address).to_i
+ end
+
+ def lookup(address)
+ run_command %Q(curl localhost:6425 #{curl_opts} -d "address=#{address}")
+ end
+
+ def curl_opts
+ '--silent -w "%{http_code}" -o /dev/null'
+ end
+
+ def open_files_count
+ `lsof | grep " #{nickserver_pid} " | wc -l`.to_i
+ end
+
+ def run_command(command)
+ `#{command} 2>&1`.tap do |out|
+ assert ($?.exitstatus == 0),
+ "failed to run '#{command}':\n #{out}"
+ end
+ end
+end