forked from appcues/mojito
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathheaders_test.exs
140 lines (114 loc) · 3.58 KB
/
headers_test.exs
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
139
140
defmodule Mojito.HeadersTest do
use ExUnit.Case, async: true
doctest Mojito.Headers
alias Mojito.Headers
@test_headers [
{"header1", "value1"},
{"header3", "value3-1"},
{"header2", "value2"},
{"HeaDer3", "value3-2"}
]
test "Headers.get with no match" do
assert(nil == Headers.get(@test_headers, "header0"))
end
test "Headers.get with case-sensitive match" do
assert("value1" == Headers.get(@test_headers, "header1"))
assert("value2" == Headers.get(@test_headers, "header2"))
end
test "Headers.get with case-insensitive match" do
assert("value1" == Headers.get(@test_headers, "HEADER1"))
assert("value2" == Headers.get(@test_headers, "hEaDeR2"))
end
test "Headers.get with multiple values" do
assert("value3-1,value3-2" == Headers.get(@test_headers, "header3"))
end
test "Headers.get_values with no match" do
assert([] == Headers.get_values(@test_headers, "header0"))
end
test "Headers.get_values with case-sensitive match" do
assert(["value1"] == Headers.get_values(@test_headers, "header1"))
assert(["value2"] == Headers.get_values(@test_headers, "header2"))
end
test "Headers.get_values with case-insensitive match" do
assert(["value1"] == Headers.get_values(@test_headers, "HEADER1"))
assert(["value2"] == Headers.get_values(@test_headers, "hEaDeR2"))
end
test "Headers.get_values with multiple values" do
assert(
["value3-1", "value3-2"] == Headers.get_values(@test_headers, "header3")
)
end
test "Headers.put when value doesn't exist" do
output = [
{"header1", "value1"},
{"header3", "value3-1"},
{"header2", "value2"},
{"HeaDer3", "value3-2"},
{"header4", "new value"}
]
assert(output == Headers.put(@test_headers, "header4", "new value"))
end
test "Headers.put when value exists once" do
output = [
{"header1", "value1"},
{"header3", "value3-1"},
{"HeaDer3", "value3-2"},
{"heADer2", "new value"}
]
assert(output == Headers.put(@test_headers, "heADer2", "new value"))
end
test "Headers.put when value exists multiple times" do
output = [
{"header1", "value1"},
{"header2", "value2"},
{"HeaDer3", "new value"}
]
assert(output == Headers.put(@test_headers, "HeaDer3", "new value"))
end
test "Headers.delete when value doesn't exist" do
assert(@test_headers == Headers.delete(@test_headers, "nope"))
end
test "Headers.delete when value exists once" do
output = [
{"header1", "value1"},
{"header3", "value3-1"},
{"HeaDer3", "value3-2"}
]
assert(output == Headers.delete(@test_headers, "heADer2"))
end
test "Headers.delete when value exists multiple times" do
output = [
{"header1", "value1"},
{"header2", "value2"}
]
assert(output == Headers.delete(@test_headers, "HEADER3"))
end
test "Headers.keys" do
assert(["header1", "header3", "header2"] == Headers.keys(@test_headers))
end
test "normalize_headers" do
output = [
{"header1", "value1"},
{"header3", "value3-1,value3-2"},
{"header2", "value2"}
]
assert(output == Headers.normalize(@test_headers))
end
test "convert_values_to_string converts numbers and atoms to string" do
input = [
{"integer", 2},
{"float", 22.5},
{"atom", :atom},
{"list", [1, 2]},
{"string", "string"}
]
output = [
{"integer", "2"},
{"float", "22.5"},
{"atom", "atom"},
{"list", [1, 2]},
{"string", "string"}
]
assert(output == Headers.convert_values_to_string(input))
end
end