-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathcommon_test.go
More file actions
118 lines (106 loc) · 3.74 KB
/
common_test.go
File metadata and controls
118 lines (106 loc) · 3.74 KB
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
package proxies
import (
"bytes"
"context"
"os"
"testing"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
"github.com/pterm/pterm"
)
// captureOutput sets pterm writers for tests
func captureOutput(t *testing.T) *bytes.Buffer {
var buf bytes.Buffer
pterm.SetDefaultOutput(&buf)
pterm.Info.Writer = &buf
pterm.Error.Writer = &buf
pterm.Success.Writer = &buf
pterm.Warning.Writer = &buf
pterm.Debug.Writer = &buf
pterm.Fatal.Writer = &buf
pterm.DefaultTable = *pterm.DefaultTable.WithWriter(&buf)
t.Cleanup(func() {
pterm.SetDefaultOutput(os.Stdout)
pterm.Info.Writer = os.Stdout
pterm.Error.Writer = os.Stdout
pterm.Success.Writer = os.Stdout
pterm.Warning.Writer = os.Stdout
pterm.Debug.Writer = os.Stdout
pterm.Fatal.Writer = os.Stdout
pterm.DefaultTable = *pterm.DefaultTable.WithWriter(os.Stdout)
})
return &buf
}
// FakeProxyService implements ProxyService for testing
type FakeProxyService struct {
ListFunc func(ctx context.Context, opts ...option.RequestOption) (*[]kernel.ProxyListResponse, error)
GetFunc func(ctx context.Context, id string, opts ...option.RequestOption) (*kernel.ProxyGetResponse, error)
NewFunc func(ctx context.Context, body kernel.ProxyNewParams, opts ...option.RequestOption) (*kernel.ProxyNewResponse, error)
DeleteFunc func(ctx context.Context, id string, opts ...option.RequestOption) error
CheckFunc func(ctx context.Context, id string, body kernel.ProxyCheckParams, opts ...option.RequestOption) (*kernel.ProxyCheckResponse, error)
}
func (f *FakeProxyService) List(ctx context.Context, opts ...option.RequestOption) (*[]kernel.ProxyListResponse, error) {
if f.ListFunc != nil {
return f.ListFunc(ctx, opts...)
}
empty := []kernel.ProxyListResponse{}
return &empty, nil
}
func (f *FakeProxyService) Get(ctx context.Context, id string, opts ...option.RequestOption) (*kernel.ProxyGetResponse, error) {
if f.GetFunc != nil {
return f.GetFunc(ctx, id, opts...)
}
return &kernel.ProxyGetResponse{ID: id, Type: kernel.ProxyGetResponseTypeDatacenter}, nil
}
func (f *FakeProxyService) New(ctx context.Context, body kernel.ProxyNewParams, opts ...option.RequestOption) (*kernel.ProxyNewResponse, error) {
if f.NewFunc != nil {
return f.NewFunc(ctx, body, opts...)
}
return &kernel.ProxyNewResponse{ID: "new-proxy", Type: kernel.ProxyNewResponseTypeDatacenter}, nil
}
func (f *FakeProxyService) Delete(ctx context.Context, id string, opts ...option.RequestOption) error {
if f.DeleteFunc != nil {
return f.DeleteFunc(ctx, id, opts...)
}
return nil
}
func (f *FakeProxyService) Check(ctx context.Context, id string, body kernel.ProxyCheckParams, opts ...option.RequestOption) (*kernel.ProxyCheckResponse, error) {
if f.CheckFunc != nil {
return f.CheckFunc(ctx, id, body, opts...)
}
return &kernel.ProxyCheckResponse{ID: id, Type: kernel.ProxyCheckResponseTypeDatacenter}, nil
}
// Helper function to create test proxy responses
func createDatacenterProxy(id, name, country string) kernel.ProxyListResponse {
return kernel.ProxyListResponse{
ID: id,
Name: name,
Type: kernel.ProxyListResponseTypeDatacenter,
Config: kernel.ProxyListResponseConfigUnion{
Country: country,
},
}
}
func createResidentialProxy(id, name, country, city, state string) kernel.ProxyListResponse {
return kernel.ProxyListResponse{
ID: id,
Name: name,
Type: kernel.ProxyListResponseTypeResidential,
Config: kernel.ProxyListResponseConfigUnion{
Country: country,
City: city,
State: state,
},
}
}
func createCustomProxy(id, name, host string, port int64) kernel.ProxyListResponse {
return kernel.ProxyListResponse{
ID: id,
Name: name,
Type: kernel.ProxyListResponseTypeCustom,
Config: kernel.ProxyListResponseConfigUnion{
Host: host,
Port: port,
},
}
}