Skip to content

Commit 648e57f

Browse files
tmp commit
1 parent cd560a6 commit 648e57f

File tree

1 file changed

+14
-261
lines changed

1 file changed

+14
-261
lines changed

proxy/proxy_test.go

Lines changed: 14 additions & 261 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"crypto/tls"
66
"fmt"
7-
"io/ioutil"
7+
"io"
88
"log/slog"
99
"net/http"
1010
"os"
@@ -83,275 +83,28 @@ func TestProxyServerBasicHTTP(t *testing.T) {
8383
}
8484

8585
// Make request to proxy
86-
req, err := http.NewRequest("GET", "http://localhost:8080", nil)
86+
req, err := http.NewRequest("GET", "http://localhost:8080/todos/1", nil)
8787
if err != nil {
8888
t.Fatalf("Failed to create request: %v", err)
8989
}
90-
// Override the Host header to coder.com
91-
req.Host = "coder.com"
92-
//req.Header.Set("Host", "coder.com")
93-
94-
// Set Host header (important for URL parsing)
95-
//req.Host = "localhost:8080"
90+
// Override the Host header to jsonplaceholder.typicode.com
91+
req.Host = "jsonplaceholder.typicode.com"
9692

9793
// Make the request
9894
resp, err := client.Do(req)
99-
if err != nil {
100-
t.Logf("Request failed (expected for proxy without target): %v", err)
101-
// This is expected since we're not forwarding to a real target
102-
}
103-
//else {
104-
// resp.Body.Close()
105-
//}
106-
fmt.Printf("err: %v\n", err)
95+
require.NoError(t, err)
10796

108-
body, err := ioutil.ReadAll(resp.Body)
97+
body, err := io.ReadAll(resp.Body)
10998
require.NoError(t, err)
11099
fmt.Printf("body: %s\n", body)
111-
112100
resp.Body.Close()
113-
})
114101

115-
// Test CONNECT request
116-
//t.Run("CONNECTRequest", func(t *testing.T) {
117-
// // Create HTTP client
118-
// client := &http.Client{
119-
// Transport: &http.Transport{
120-
// TLSClientConfig: &tls.Config{
121-
// InsecureSkipVerify: true,
122-
// },
123-
// },
124-
// Timeout: 5 * time.Second,
125-
// }
126-
//
127-
// // Make CONNECT request
128-
// req, err := http.NewRequest("CONNECT", "http://example.com:443", nil)
129-
// if err != nil {
130-
// t.Fatalf("Failed to create CONNECT request: %v", err)
131-
// }
132-
//
133-
// // Set Host header
134-
// req.Host = "example.com:443"
135-
//
136-
// // Make the request
137-
// resp, err := client.Do(req)
138-
// if err != nil {
139-
// t.Logf("CONNECT request failed (expected for proxy without target): %v", err)
140-
// // This is expected since we're not forwarding to a real target
141-
// } else {
142-
// resp.Body.Close()
143-
// }
144-
//})
145-
//
146-
//// Cancel context to stop server
147-
//cancel()
148-
//
149-
//// Wait for server to stop
150-
//select {
151-
//case err := <-serverDone:
152-
// if err != nil && err != context.Canceled {
153-
// t.Errorf("Server stopped with error: %v", err)
154-
// }
155-
//case <-time.After(5 * time.Second):
156-
// t.Error("Server did not stop within timeout")
157-
//}
102+
expectedResponse := `{
103+
"userId": 1,
104+
"id": 1,
105+
"title": "delectus aut autem",
106+
"completed": false
107+
}`
108+
require.Equal(t, expectedResponse, string(body))
109+
})
158110
}
159-
160-
// TestProxyServerWithRules tests proxy with specific rules
161-
//func TestProxyServerWithRules(t *testing.T) {
162-
// // Create test logger
163-
// logger := slog.New(slog.NewTextHandler(io.Discard, &slog.HandlerOptions{
164-
// Level: slog.LevelError,
165-
// }))
166-
//
167-
// // Create restrictive rules (only allow github.com)
168-
// testRules, err := rules.ParseAllowSpecs([]string{"github.com"})
169-
// if err != nil {
170-
// t.Fatalf("Failed to parse test rules: %v", err)
171-
// }
172-
//
173-
// // Create rule engine
174-
// ruleEngine := rules.NewRuleEngine(testRules, logger)
175-
//
176-
// // Create mock auditor
177-
// auditor := &mockAuditor{}
178-
//
179-
// // Create TLS config
180-
// tlsConfig := &tls.Config{
181-
// MinVersion: tls.VersionTLS12,
182-
// }
183-
//
184-
// // Create proxy server
185-
// server := NewProxyServer(Config{
186-
// HTTPPort: 0, // Use random port
187-
// RuleEngine: ruleEngine,
188-
// Auditor: auditor,
189-
// Logger: logger,
190-
// TLSConfig: tlsConfig,
191-
// })
192-
//
193-
// // Create context with timeout
194-
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
195-
// defer cancel()
196-
//
197-
// // Start server in goroutine
198-
// serverDone := make(chan error, 1)
199-
// go func() {
200-
// serverDone <- server.Start(ctx)
201-
// }()
202-
//
203-
// // Give server time to start
204-
// time.Sleep(100 * time.Millisecond)
205-
//
206-
// // Test allowed request
207-
// t.Run("AllowedRequest", func(t *testing.T) {
208-
// client := &http.Client{
209-
// Transport: &http.Transport{
210-
// TLSClientConfig: &tls.Config{
211-
// InsecureSkipVerify: true,
212-
// },
213-
// },
214-
// Timeout: 5 * time.Second,
215-
// }
216-
//
217-
// req, err := http.NewRequest("GET", "http://localhost:8080/test", nil)
218-
// if err != nil {
219-
// t.Fatalf("Failed to create request: %v", err)
220-
// }
221-
//
222-
// // Set Host header to github.com (should be allowed)
223-
// req.Host = "github.com"
224-
//
225-
// resp, err := client.Do(req)
226-
// if err != nil {
227-
// t.Logf("Request failed (expected for proxy without target): %v", err)
228-
// } else {
229-
// resp.Body.Close()
230-
// }
231-
// })
232-
//
233-
// // Test blocked request
234-
// t.Run("BlockedRequest", func(t *testing.T) {
235-
// client := &http.Client{
236-
// Transport: &http.Transport{
237-
// TLSClientConfig: &tls.Config{
238-
// InsecureSkipVerify: true,
239-
// },
240-
// },
241-
// Timeout: 5 * time.Second,
242-
// }
243-
//
244-
// req, err := http.NewRequest("GET", "http://localhost:8080/test", nil)
245-
// if err != nil {
246-
// t.Fatalf("Failed to create request: %v", err)
247-
// }
248-
//
249-
// // Set Host header to example.com (should be blocked)
250-
// req.Host = "example.com"
251-
//
252-
// resp, err := client.Do(req)
253-
// if err != nil {
254-
// t.Logf("Request failed (expected for proxy without target): %v", err)
255-
// } else {
256-
// resp.Body.Close()
257-
// }
258-
// })
259-
//
260-
// // Cancel context to stop server
261-
// cancel()
262-
//
263-
// // Wait for server to stop
264-
// select {
265-
// case err := <-serverDone:
266-
// if err != nil && err != context.Canceled {
267-
// t.Errorf("Server stopped with error: %v", err)
268-
// }
269-
// case <-time.After(5 * time.Second):
270-
// t.Error("Server did not stop within timeout")
271-
// }
272-
//}
273-
//
274-
//// TestProxyServerStartStop tests basic start/stop functionality
275-
//func TestProxyServerStartStop(t *testing.T) {
276-
// // Create test logger
277-
// logger := slog.New(slog.NewTextHandler(io.Discard, &slog.HandlerOptions{
278-
// Level: slog.LevelError,
279-
// }))
280-
//
281-
// // Create test rules
282-
// testRules, err := rules.ParseAllowSpecs([]string{"*"})
283-
// if err != nil {
284-
// t.Fatalf("Failed to parse test rules: %v", err)
285-
// }
286-
//
287-
// ruleEngine := rules.NewRuleEngine(testRules, logger)
288-
// auditor := &mockAuditor{}
289-
// tlsConfig := &tls.Config{MinVersion: tls.VersionTLS12}
290-
//
291-
// // Create proxy server
292-
// server := NewProxyServer(Config{
293-
// HTTPPort: 0,
294-
// RuleEngine: ruleEngine,
295-
// Auditor: auditor,
296-
// Logger: logger,
297-
// TLSConfig: tlsConfig,
298-
// })
299-
//
300-
// // Test that server can be created
301-
// if server == nil {
302-
// t.Fatal("Failed to create proxy server")
303-
// }
304-
//
305-
// // Test that server can be stopped (even if not started)
306-
// err = server.Stop()
307-
// if err != nil {
308-
// t.Errorf("Stop() failed: %v", err)
309-
// }
310-
//}
311-
//
312-
//// TestProxyServerContextCancellation tests context cancellation
313-
//func TestProxyServerContextCancellation(t *testing.T) {
314-
// // Create test logger
315-
// logger := slog.New(slog.NewTextHandler(io.Discard, &slog.HandlerOptions{
316-
// Level: slog.LevelError,
317-
// }))
318-
//
319-
// // Create test rules
320-
// testRules, err := rules.ParseAllowSpecs([]string{"*"})
321-
// if err != nil {
322-
// t.Fatalf("Failed to parse test rules: %v", err)
323-
// }
324-
//
325-
// ruleEngine := rules.NewRuleEngine(testRules, logger)
326-
// auditor := &mockAuditor{}
327-
// tlsConfig := &tls.Config{MinVersion: tls.VersionTLS12}
328-
//
329-
// // Create proxy server
330-
// server := NewProxyServer(Config{
331-
// HTTPPort: 0,
332-
// RuleEngine: ruleEngine,
333-
// Auditor: auditor,
334-
// Logger: logger,
335-
// TLSConfig: tlsConfig,
336-
// })
337-
//
338-
// // Create context that will be cancelled quickly
339-
// ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
340-
// defer cancel()
341-
//
342-
// // Start server
343-
// serverDone := make(chan error, 1)
344-
// go func() {
345-
// serverDone <- server.Start(ctx)
346-
// }()
347-
//
348-
// // Wait for context cancellation
349-
// select {
350-
// case err := <-serverDone:
351-
// if err != nil && err != context.DeadlineExceeded {
352-
// t.Errorf("Server stopped with unexpected error: %v", err)
353-
// }
354-
// case <-time.After(1 * time.Second):
355-
// t.Error("Server did not stop within timeout")
356-
// }
357-
//}

0 commit comments

Comments
 (0)