File: url_param_test.rb

package info (click to toggle)
ruby-redis 3.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 736 kB
  • ctags: 1,128
  • sloc: ruby: 8,149; makefile: 5
file content (138 lines) | stat: -rw-r--r-- 4,307 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# encoding: UTF-8

require File.expand_path("helper", File.dirname(__FILE__))

class TestUrlParam < Test::Unit::TestCase

  include Helper::Client

  def test_url_defaults_to_______________
    redis = Redis.new

    assert_equal "127.0.0.1", redis.client.host
    assert_equal 6379, redis.client.port
    assert_equal 0, redis.client.db
    assert_equal nil, redis.client.password
  end

  def test_allows_to_pass_in_a_url
    redis = Redis.new :url => "redis://:secr3t@foo.com:999/2"

    assert_equal "foo.com", redis.client.host
    assert_equal 999, redis.client.port
    assert_equal 2, redis.client.db
    assert_equal "secr3t", redis.client.password
  end

  def test_allows_to_pass_in_a_url_with_string_key
    redis = Redis.new "url" => "redis://:secr3t@foo.com:999/2"

    assert_equal "foo.com", redis.client.host
    assert_equal 999, redis.client.port
    assert_equal 2, redis.client.db
    assert_equal "secr3t", redis.client.password
  end

  def test_unescape_password_from_url
    redis = Redis.new :url => "redis://:secr3t%3A@foo.com:999/2"

    assert_equal "secr3t:", redis.client.password
  end

  def test_unescape_password_from_url_with_string_key
    redis = Redis.new "url" => "redis://:secr3t%3A@foo.com:999/2"

    assert_equal "secr3t:", redis.client.password
  end

  def test_does_not_unescape_password_when_explicitly_passed
    redis = Redis.new :url => "redis://:secr3t%3A@foo.com:999/2", :password => "secr3t%3A"

    assert_equal "secr3t%3A", redis.client.password
  end

  def test_does_not_unescape_password_when_explicitly_passed_with_string_key
    redis = Redis.new :url => "redis://:secr3t%3A@foo.com:999/2", "password" => "secr3t%3A"

    assert_equal "secr3t%3A", redis.client.password
  end

  def test_override_url_if_path_option_is_passed
    redis = Redis.new :url => "redis://:secr3t@foo.com/foo:999/2", :path => "/tmp/redis.sock"

    assert_equal "/tmp/redis.sock", redis.client.path
    assert_equal nil, redis.client.host
    assert_equal nil, redis.client.port
  end

  def test_override_url_if_path_option_is_passed_with_string_key
    redis = Redis.new :url => "redis://:secr3t@foo.com/foo:999/2", "path" => "/tmp/redis.sock"

    assert_equal "/tmp/redis.sock", redis.client.path
    assert_equal nil, redis.client.host
    assert_equal nil, redis.client.port
  end

  def test_overrides_url_if_another_connection_option_is_passed
    redis = Redis.new :url => "redis://:secr3t@foo.com:999/2", :port => 1000

    assert_equal "foo.com", redis.client.host
    assert_equal 1000, redis.client.port
    assert_equal 2, redis.client.db
    assert_equal "secr3t", redis.client.password
  end

  def test_overrides_url_if_another_connection_option_is_passed_with_string_key
    redis = Redis.new :url => "redis://:secr3t@foo.com:999/2", "port" => 1000

    assert_equal "foo.com", redis.client.host
    assert_equal 1000, redis.client.port
    assert_equal 2, redis.client.db
    assert_equal "secr3t", redis.client.password
  end

  def test_does_not_overrides_url_if_a_nil_option_is_passed
    redis = Redis.new :url => "redis://:secr3t@foo.com:999/2", :port => nil

    assert_equal "foo.com", redis.client.host
    assert_equal 999, redis.client.port
    assert_equal 2, redis.client.db
    assert_equal "secr3t", redis.client.password
  end

  def test_does_not_overrides_url_if_a_nil_option_is_passed_with_string_key
    redis = Redis.new :url => "redis://:secr3t@foo.com:999/2", "port" => nil

    assert_equal "foo.com", redis.client.host
    assert_equal 999, redis.client.port
    assert_equal 2, redis.client.db
    assert_equal "secr3t", redis.client.password
  end

  def test_does_not_modify_the_passed_options
    options = { :url => "redis://:secr3t@foo.com:999/2" }

    Redis.new(options)

    assert({ :url => "redis://:secr3t@foo.com:999/2" } == options)
  end

  def test_uses_redis_url_over_default_if_available
    ENV["REDIS_URL"] = "redis://:secr3t@foo.com:999/2"

    redis = Redis.new

    assert_equal "foo.com", redis.client.host
    assert_equal 999, redis.client.port
    assert_equal 2, redis.client.db
    assert_equal "secr3t", redis.client.password

    ENV.delete("REDIS_URL")
  end

  def test_defaults_to_localhost
    redis = Redis.new(:url => "redis:///")

    assert_equal "127.0.0.1", redis.client.host
  end
end