summaryrefslogtreecommitdiff
path: root/test/test_server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_server.rb')
-rw-r--r--test/test_server.rb52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/test_server.rb b/test/test_server.rb
new file mode 100644
index 00000000..e30d50c9
--- /dev/null
+++ b/test/test_server.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+require_relative 'lib/common'
+
+# Test cases for API server
+class TestServer < TestInteractive
+ def test_listen
+ { '--listen 6266' => -> { URI('http://localhost:6266') },
+ "--listen --sync --bind 'start:execute-silent:echo $FZF_PORT > /tmp/fzf-port'" =>
+ -> { URI("http://localhost:#{File.read('/tmp/fzf-port').chomp}") } }.each do |opts, fn|
+ tmux.send_keys "seq 10 | fzf #{opts}", :Enter
+ tmux.until { |lines| assert_equal 10, lines.item_count }
+ state = JSON.parse(Net::HTTP.get(fn.call), symbolize_names: true)
+ assert_equal 10, state[:totalCount]
+ assert_equal 10, state[:matchCount]
+ assert_empty state[:query]
+ assert_equal({ index: 0, text: '1' }, state[:current])
+
+ Net::HTTP.post(fn.call, 'change-query(yo)+reload(seq 100)+change-prompt:hundred> ')
+ tmux.until { |lines| assert_equal 100, lines.item_count }
+ tmux.until { |lines| assert_equal 'hundred> yo', lines[-1] }
+ state = JSON.parse(Net::HTTP.get(fn.call), symbolize_names: true)
+ assert_equal 100, state[:totalCount]
+ assert_equal 0, state[:matchCount]
+ assert_equal 'yo', state[:query]
+ assert_nil state[:current]
+
+ teardown
+ setup
+ end
+ end
+
+ def test_listen_with_api_key
+ post_uri = URI('http://localhost:6266')
+ tmux.send_keys 'seq 10 | FZF_API_KEY=123abc fzf --listen 6266', :Enter
+ tmux.until { |lines| assert_equal 10, lines.item_count }
+ # Incorrect API Key
+ [nil, { 'x-api-key' => '' }, { 'x-api-key' => '124abc' }].each do |headers|
+ res = Net::HTTP.post(post_uri, 'change-query(yo)+reload(seq 100)+change-prompt:hundred> ', headers)
+ assert_equal '401', res.code
+ assert_equal 'Unauthorized', res.message
+ assert_equal "invalid api key\n", res.body
+ end
+ # Valid API Key
+ [{ 'x-api-key' => '123abc' }, { 'X-API-Key' => '123abc' }].each do |headers|
+ res = Net::HTTP.post(post_uri, 'change-query(yo)+reload(seq 100)+change-prompt:hundred> ', headers)
+ assert_equal '200', res.code
+ tmux.until { |lines| assert_equal 100, lines.item_count }
+ tmux.until { |lines| assert_equal 'hundred> yo', lines[-1] }
+ end
+ end
+end