summaryrefslogtreecommitdiffstats
path: root/utils/utils_test.go
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2017-09-05 20:34:17 +0100
committerHarrison Healey <harrisonmhealey@gmail.com>2017-09-05 15:34:17 -0400
commit7405f66036537095b52c277d9b56969df33bfa57 (patch)
treee89223412cc560a51c5f4cdc6ff0c3816cc5b5f6 /utils/utils_test.go
parent09f8267751c71bdb6d8ba2757a1e4ffe62ccf5c3 (diff)
downloadchat-7405f66036537095b52c277d9b56969df33bfa57.tar.gz
chat-7405f66036537095b52c277d9b56969df33bfa57.tar.bz2
chat-7405f66036537095b52c277d9b56969df33bfa57.zip
PLT-7519: Better rate-limiting. (#7365)
Diffstat (limited to 'utils/utils_test.go')
-rw-r--r--utils/utils_test.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/utils/utils_test.go b/utils/utils_test.go
index b80247867..b18566786 100644
--- a/utils/utils_test.go
+++ b/utils/utils_test.go
@@ -4,7 +4,10 @@
package utils
import (
+ "net/http"
"testing"
+
+ "github.com/stretchr/testify/assert"
)
func TestStringArrayIntersection(t *testing.T) {
@@ -44,3 +47,55 @@ func TestRemoveDuplicatesFromStringArray(t *testing.T) {
t.Fatal("should be 3")
}
}
+
+func TestGetIpAddress(t *testing.T) {
+ // Test with a single IP in the X-Forwarded-For
+ httpRequest1 := http.Request{
+ Header: http.Header{
+ "X-Forwarded-For": []string{"10.0.0.1"},
+ "X-Real-Ip": []string{"10.1.0.1"},
+ },
+ RemoteAddr: "10.2.0.1:12345",
+ }
+
+ assert.Equal(t, "10.0.0.1", GetIpAddress(&httpRequest1))
+
+ // Test with multiple IPs in the X-Forwarded-For
+ httpRequest2 := http.Request{
+ Header: http.Header{
+ "X-Forwarded-For": []string{"10.0.0.1, 10.0.0.2, 10.0.0.3"},
+ "X-Real-Ip": []string{"10.1.0.1"},
+ },
+ RemoteAddr: "10.2.0.1:12345",
+ }
+
+ assert.Equal(t, "10.0.0.1", GetIpAddress(&httpRequest2))
+
+ // Test with an empty X-Forwarded-For
+ httpRequest3 := http.Request{
+ Header: http.Header{
+ "X-Forwarded-For": []string{""},
+ "X-Real-Ip": []string{"10.1.0.1"},
+ },
+ RemoteAddr: "10.2.0.1:12345",
+ }
+
+ assert.Equal(t, "10.1.0.1", GetIpAddress(&httpRequest3))
+
+ // Test without an X-Fowarded-For
+ httpRequest4 := http.Request{
+ Header: http.Header{
+ "X-Real-Ip": []string{"10.1.0.1"},
+ },
+ RemoteAddr: "10.2.0.1:12345",
+ }
+
+ assert.Equal(t, "10.1.0.1", GetIpAddress(&httpRequest4))
+
+ // Test without any headers
+ httpRequest5 := http.Request{
+ RemoteAddr: "10.2.0.1:12345",
+ }
+
+ assert.Equal(t, "10.2.0.1", GetIpAddress(&httpRequest5))
+}