11package freeproxy
22
33import (
4- "encoding/json"
5- "net/http"
6- "net/http/httptest"
7- "testing"
4+ "encoding/json"
5+ "net/http"
6+ "net/http/httptest"
7+ "testing"
88)
99
1010func TestNew (t * testing.T ) {
11- apiKey := "test-api-key"
11+ apiKey := "test-api-key"
1212
13- client := New (apiKey )
13+ client := New (apiKey )
1414
15- if client .apiKey != apiKey {
16- t .Errorf ("expected apiKey %q, got %q" , apiKey , client .apiKey )
17- }
18- if client .httpClient == nil {
19- t .Error ("expected default httpClient to be set, got nil" )
20- }
21- if client .proxiesURL != ProxiesURL {
22- t .Errorf ("expected proxiesURL %q, got %q" , ProxiesURL , client .proxiesURL )
23- }
15+ if client .apiKey != apiKey {
16+ t .Errorf ("expected apiKey %q, got %q" , apiKey , client .apiKey )
17+ }
18+ if client .httpClient == nil {
19+ t .Error ("expected default httpClient to be set, got nil" )
20+ }
21+ if client .proxiesURL != ProxiesURL {
22+ t .Errorf ("expected proxiesURL %q, got %q" , ProxiesURL , client .proxiesURL )
23+ }
2424}
2525
2626func TestNewWith (t * testing.T ) {
27- apiKey := "test-api-key"
28- httpClient := & http.Client {}
27+ apiKey := "test-api-key"
28+ httpClient := & http.Client {}
2929
30- client := NewWith (apiKey , httpClient )
30+ client := NewWith (apiKey , httpClient )
3131
32- if client .apiKey != apiKey {
33- t .Errorf ("expected apiKey %q, got %q" , apiKey , client .apiKey )
34- }
35- if client .httpClient != httpClient {
36- t .Error ("expected custom httpClient to be set" )
37- }
38- if client .proxiesURL != ProxiesURL {
39- t .Errorf ("expected proxiesURL %q, got %q" , ProxiesURL , client .proxiesURL )
40- }
32+ if client .apiKey != apiKey {
33+ t .Errorf ("expected apiKey %q, got %q" , apiKey , client .apiKey )
34+ }
35+ if client .httpClient != httpClient {
36+ t .Error ("expected custom httpClient to be set" )
37+ }
38+ if client .proxiesURL != ProxiesURL {
39+ t .Errorf ("expected proxiesURL %q, got %q" , ProxiesURL , client .proxiesURL )
40+ }
4141}
4242
4343func TestNewWithNilHTTPClient (t * testing.T ) {
44- apiKey := "test-api-key"
44+ apiKey := "test-api-key"
4545
46- client := NewWith (apiKey , nil )
46+ client := NewWith (apiKey , nil )
4747
48- if client .httpClient == nil {
49- t .Error ("expected default httpClient to be set, got nil" )
50- }
48+ if client .httpClient == nil {
49+ t .Error ("expected default httpClient to be set, got nil" )
50+ }
5151}
5252
5353func TestQueryWithOptions (t * testing.T ) {
54- mockResponse := []Proxy {
55- {
56- ID : "1" ,
57- Protocol : "socks5" ,
58- IP : "192.168.1.1" ,
59- Port : 1080 ,
60- User : "user1" ,
61- Passwd : "pass1" ,
62- CountryCode : "US" ,
63- Region : "New York" ,
64- AsnNumber : "AS1234" ,
65- AsnName : "Test ASN" ,
66- Anonymity : "Elite" ,
67- Uptime : 99 ,
68- ResponseTime : 0.5 ,
69- LastAliveAt : "2025-11-18T10:00:00Z" ,
70- ProxyUrl : "socks5://user1:pass1@192.168.1.1:1080" ,
71- Https : true ,
72- Google : true ,
73- },
74- }
54+ mockResponse := []Proxy {
55+ {
56+ ID : "1" ,
57+ Protocol : "socks5" ,
58+ IP : "192.168.1.1" ,
59+ Port : 1080 ,
60+ User : "user1" ,
61+ Passwd : "pass1" ,
62+ CountryCode : "US" ,
63+ Region : "New York" ,
64+ AsnNumber : "AS1234" ,
65+ AsnName : "Test ASN" ,
66+ Anonymity : "Elite" ,
67+ Uptime : 99 ,
68+ ResponseTime : 0.5 ,
69+ LastAliveAt : "2025-11-18T10:00:00Z" ,
70+ ProxyUrl : "socks5://user1:pass1@192.168.1.1:1080" ,
71+ Https : true ,
72+ Google : true ,
73+ },
74+ }
7575
76- server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
77- if r .Header .Get ("Authorization" ) != "Bearer test-api-key" {
78- t .Error ("expected Authorization header with Bearer token" )
79- }
76+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
77+ if r .Header .Get ("Authorization" ) != "Bearer test-api-key" {
78+ t .Error ("expected Authorization header with Bearer token" )
79+ }
8080
81- query := r .URL .Query ()
82- if query .Get ("country" ) != "US" {
83- t .Errorf ("expected country query param US, got %s" , query .Get ("country" ))
84- }
85- if query .Get ("protocol" ) != "socks5" {
86- t .Errorf ("expected protocol query param socks5, got %s" , query .Get ("protocol" ))
87- }
88- if query .Get ("page" ) != "1" {
89- t .Errorf ("expected page query param 1, got %s" , query .Get ("page" ))
90- }
81+ query := r .URL .Query ()
82+ if query .Get ("country" ) != "US" {
83+ t .Errorf ("expected country query param US, got %s" , query .Get ("country" ))
84+ }
85+ if query .Get ("protocol" ) != "socks5" {
86+ t .Errorf ("expected protocol query param socks5, got %s" , query .Get ("protocol" ))
87+ }
88+ if query .Get ("page" ) != "1" {
89+ t .Errorf ("expected page query param 1, got %s" , query .Get ("page" ))
90+ }
9191
92- w .Header ().Set ("Content-Type" , "application/json" )
93- json .NewEncoder (w ).Encode (mockResponse )
94- }))
95- defer server .Close ()
92+ w .Header ().Set ("Content-Type" , "application/json" )
93+ json .NewEncoder (w ).Encode (mockResponse )
94+ }))
95+ defer server .Close ()
9696
97- client := New ("test-api-key" )
98- client .proxiesURL = server .URL
97+ client := New ("test-api-key" )
98+ client .proxiesURL = server .URL
9999
100- response , err := client .Query (
101- WithCountry ("US" ),
102- WithProtocol ("socks5" ),
103- WithPage (1 ),
104- )
100+ response , err := client .Query (
101+ WithCountry ("US" ),
102+ WithProtocol ("socks5" ),
103+ WithPage (1 ),
104+ )
105105
106- if err != nil {
107- t .Fatalf ("expected no error, got %v" , err )
108- }
109- if response == nil {
110- t .Fatal ("expected response, got nil" )
111- }
112- if len (response ) != 1 {
113- t .Errorf ("expected 1 proxy, got %d" , len (response ))
114- }
115- if response [0 ].ID != "1" {
116- t .Errorf ("expected proxy ID 1, got %s" , response [0 ].ID )
117- }
106+ if err != nil {
107+ t .Fatalf ("expected no error, got %v" , err )
108+ }
109+ if response == nil {
110+ t .Fatal ("expected response, got nil" )
111+ }
112+ if len (response ) != 1 {
113+ t .Errorf ("expected 1 proxy, got %d" , len (response ))
114+ }
115+ if response [0 ].ID != "1" {
116+ t .Errorf ("expected proxy ID 1, got %s" , response [0 ].ID )
117+ }
118118}
119119
120120func TestQueryNoOptions (t * testing.T ) {
121- mockResponse := []Proxy {}
121+ mockResponse := []Proxy {}
122122
123- server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
124- w .Header ().Set ("Content-Type" , "application/json" )
125- json .NewEncoder (w ).Encode (mockResponse )
126- }))
127- defer server .Close ()
123+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
124+ w .Header ().Set ("Content-Type" , "application/json" )
125+ json .NewEncoder (w ).Encode (mockResponse )
126+ }))
127+ defer server .Close ()
128128
129- client := New ("test-api-key" )
130- client .proxiesURL = server .URL
129+ client := New ("test-api-key" )
130+ client .proxiesURL = server .URL
131131
132- response , err := client .Query ()
132+ response , err := client .Query ()
133133
134- if err != nil {
135- t .Fatalf ("expected no error, got %v" , err )
136- }
137- if response == nil {
138- t .Fatal ("expected response, got nil" )
139- }
140- if len (response ) != 0 {
141- t .Errorf ("expected 0 proxies, got %d" , len (response ))
142- }
134+ if err != nil {
135+ t .Fatalf ("expected no error, got %v" , err )
136+ }
137+ if response == nil {
138+ t .Fatal ("expected response, got nil" )
139+ }
140+ if len (response ) != 0 {
141+ t .Errorf ("expected 0 proxies, got %d" , len (response ))
142+ }
143143}
144144
145145func TestQueryError (t * testing.T ) {
146- errorResponse := map [string ]string {
147- "error" : "INVALID_PARAMETER" ,
148- }
146+ errorResponse := map [string ]string {
147+ "error" : "INVALID_PARAMETER" ,
148+ }
149149
150- server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
151- w .WriteHeader (http .StatusBadRequest )
152- w .Header ().Set ("Content-Type" , "application/json" )
153- json .NewEncoder (w ).Encode (errorResponse )
154- }))
155- defer server .Close ()
150+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
151+ w .WriteHeader (http .StatusBadRequest )
152+ w .Header ().Set ("Content-Type" , "application/json" )
153+ json .NewEncoder (w ).Encode (errorResponse )
154+ }))
155+ defer server .Close ()
156156
157- client := New ("test-api-key" )
158- client .proxiesURL = server .URL
157+ client := New ("test-api-key" )
158+ client .proxiesURL = server .URL
159159
160- response , err := client .Query ()
160+ response , err := client .Query ()
161161
162- if err == nil {
163- t .Fatal ("expected error, got nil" )
164- }
165- if response != nil {
166- t .Errorf ("expected nil response, got %v" , response )
167- }
162+ if err == nil {
163+ t .Fatal ("expected error, got nil" )
164+ }
165+ if response != nil {
166+ t .Errorf ("expected nil response, got %v" , response )
167+ }
168168
169- apiErr , ok := err .(* Error )
170- if ! ok {
171- t .Errorf ("expected Error, got %T" , err )
172- }
173- if apiErr .Message != "INVALID_PARAMETER" {
174- t .Errorf ("expected error message 'INVALID_PARAMETER', got %q" , apiErr .Message )
175- }
169+ apiErr , ok := err .(* Error )
170+ if ! ok {
171+ t .Errorf ("expected Error, got %T" , err )
172+ }
173+ if apiErr .Message != "INVALID_PARAMETER" {
174+ t .Errorf ("expected error message 'INVALID_PARAMETER', got %q" , apiErr .Message )
175+ }
176176}
177177
178178func TestQueryHTTPError (t * testing.T ) {
179- server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
180- w .WriteHeader (http .StatusInternalServerError )
181- w .Write ([]byte ("Internal Server Error" ))
182- }))
183- defer server .Close ()
179+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
180+ w .WriteHeader (http .StatusInternalServerError )
181+ w .Write ([]byte ("Internal Server Error" ))
182+ }))
183+ defer server .Close ()
184184
185- client := New ("test-api-key" )
186- client .proxiesURL = server .URL
185+ client := New ("test-api-key" )
186+ client .proxiesURL = server .URL
187187
188- response , err := client .Query ()
188+ response , err := client .Query ()
189189
190- if err == nil {
191- t .Fatal ("expected error, got nil" )
192- }
193- if response != nil {
194- t .Errorf ("expected nil response, got %v" , response )
195- }
190+ if err == nil {
191+ t .Fatal ("expected error, got nil" )
192+ }
193+ if response != nil {
194+ t .Errorf ("expected nil response, got %v" , response )
195+ }
196196
197- apiErr , ok := err .(* Error )
198- if ! ok {
199- t .Errorf ("expected Error, got %T" , err )
200- }
201- if apiErr .Message == "" {
202- t .Error ("expected error message, got empty string" )
203- }
197+ apiErr , ok := err .(* Error )
198+ if ! ok {
199+ t .Errorf ("expected Error, got %T" , err )
200+ }
201+ if apiErr .Message == "" {
202+ t .Error ("expected error message, got empty string" )
203+ }
204204}
205205
206206func TestWithCountry (t * testing.T ) {
207- params := & QueryParams {}
208- opt := WithCountry ("US" )
209- opt (params )
210- if params .Country == nil || * params .Country != "US" {
211- t .Errorf ("expected country to be 'US', got %v" , params .Country )
212- }
207+ params := & QueryParams {}
208+ opt := WithCountry ("US" )
209+ opt (params )
210+ if params .Country == nil || * params .Country != "US" {
211+ t .Errorf ("expected country to be 'US', got %v" , params .Country )
212+ }
213213}
214214
215215func TestWithProtocol (t * testing.T ) {
216- params := & QueryParams {}
217- opt := WithProtocol ("https" )
218- opt (params )
219- if params .Protocol == nil || * params .Protocol != "https" {
220- t .Errorf ("expected protocol to be 'https', got %v" , params .Protocol )
221- }
216+ params := & QueryParams {}
217+ opt := WithProtocol ("https" )
218+ opt (params )
219+ if params .Protocol == nil || * params .Protocol != "https" {
220+ t .Errorf ("expected protocol to be 'https', got %v" , params .Protocol )
221+ }
222222}
223223
224224func TestWithPage (t * testing.T ) {
@@ -318,4 +318,4 @@ func TestQueryPage(t *testing.T) {
318318 if len (response ) != 0 {
319319 t .Errorf ("expected 0 proxies, got %d" , len (response ))
320320 }
321- }
321+ }
0 commit comments