package main import ( "net/http" "testing" ) func TestMd5Hash(t *testing.T) { hash := "f9d08276bc85d30d578e8883f3c7e843" testHash := Md5Hash("md5hash") if hash != testHash { t.Fatal("Expected %s as hash. Got %s.", hash, testHash) } } func TestCompareStrings(t *testing.T) { if !CompareStrings("foo", "foo", "foo") { t.Fatal("All strings are equal. Expected true.") } if CompareStrings("bar", "foo", "hello world", "523") { t.Fatal("Strings are not equal. Exptected false") } } func TestGetLanguage(t *testing.T) { // Test language with neither cookie nor Accept-Language header request, err := http.NewRequest("GET", "/", nil) if err != nil { t.Fatal("Error creating new http request. (/)", err) } lang := GetLanguage(request) if lang != "" { t.Log(lang) t.Fatal("Expected empty string as lang.") } // Test language with lang=de cookie := http.Cookie{Name: "lang", Value: "de"} request, err = http.NewRequest("GET", "/", nil) if err != nil { t.Fatal("Error creating new http request. (/) 2nd time.", err) } request.AddCookie(&cookie) lang = GetLanguage(request) if lang != "_de" { t.Log(lang) t.Fatal("Expected '_de' as lang.") } // Test language with lang=en cookie = http.Cookie{Name: "lang", Value: "en"} request, err = http.NewRequest("GET", "/", nil) if err != nil { t.Fatal("Error creating new http request. (/) 3rd time.", err) } request.AddCookie(&cookie) lang = GetLanguage(request) if lang != "" { t.Log(lang) t.Fatal("Expected empty string as lang.") } // Test language with garbage cookie = http.Cookie{Name: "lang", Value: "foobar"} request, err = http.NewRequest("GET", "/", nil) if err != nil { t.Fatal("Error creating new http request. (/) 4th time.", err) } request.AddCookie(&cookie) lang = GetLanguage(request) if lang != "" { t.Log(lang) t.Fatal("Expected empty string as lang.") } } func TestGetIP(t *testing.T) { // Test with X-Forwarded-For request, err := http.NewRequest("GET", "/", nil) if err != nil { t.Fatal("Error creating new http request. (/)", err) } request.Header.Add("X-Forwarded-For", "10.0.0.1") ip := GetIP(request) if ip != "10.0.0.1" { t.Fatal("Expected IP '10.0.0.1', got " + ip) } // Test with X-Real-Ip request, err = http.NewRequest("GET", "/", nil) if err != nil { t.Fatal("Error creating new http request. (/)", err) } request.Header.Add("X-Real-Ip", "10.0.0.1") ip = GetIP(request) if ip != "10.0.0.1" { t.Fatal("Expected IP '10.0.0.1', got " + ip) } // Test with RemoteAddr // Since Golang itself doesn't set RemoteAddr '0.0.0.0' is expected request, err = http.NewRequest("GET", "/", nil) if err != nil { t.Fatal("Error creating new http request. (/)", err) } ip = GetIP(request) if ip != "0.0.0.0" { t.Fatal("Expected IP '0.0.0.0', got " + ip) } }