-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathfiles_test.go
154 lines (129 loc) · 4.13 KB
/
files_test.go
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package coze
import (
"bytes"
"context"
"net/http"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestFiles(t *testing.T) {
// Test Upload method
t.Run("Upload file success", func(t *testing.T) {
mockTransport := &mockTransport{
roundTripFunc: func(req *http.Request) (*http.Response, error) {
// Verify request method and path
assert.Equal(t, http.MethodPost, req.Method)
assert.Equal(t, "/v1/files/upload", req.URL.Path)
// Return mock response
return mockResponse(http.StatusOK, &uploadFilesResp{
FileInfo: &UploadFilesResp{
FileInfo: FileInfo{
ID: "file1",
Bytes: 1024,
CreatedAt: 1234567890,
FileName: "test.txt",
},
},
})
},
}
core := newCore(&http.Client{Transport: mockTransport}, ComBaseURL)
files := newFiles(core)
// Create a test file content
content := []byte("test file content")
fileReader := bytes.NewReader(content)
uploadReq := &UploadFilesReq{
File: NewUploadFile(fileReader, "test.txt"),
}
resp, err := files.Upload(context.Background(), uploadReq)
require.NoError(t, err)
assert.Equal(t, "test_log_id", resp.LogID())
assert.Equal(t, "file1", resp.ID)
assert.Equal(t, 1024, resp.Bytes)
assert.Equal(t, 1234567890, resp.CreatedAt)
assert.Equal(t, "test.txt", resp.FileName)
})
// Test Retrieve method
t.Run("Retrieve file success", func(t *testing.T) {
mockTransport := &mockTransport{
roundTripFunc: func(req *http.Request) (*http.Response, error) {
// Verify request method and path
assert.Equal(t, http.MethodPost, req.Method)
assert.Equal(t, "/v1/files/retrieve", req.URL.Path)
// Verify query parameters
assert.Equal(t, "file1", req.URL.Query().Get("file_id"))
// Return mock response
return mockResponse(http.StatusOK, &retrieveFilesResp{
FileInfo: &RetrieveFilesResp{
FileInfo: FileInfo{
ID: "file1",
Bytes: 1024,
CreatedAt: 1234567890,
FileName: "test.txt",
},
},
})
},
}
core := newCore(&http.Client{Transport: mockTransport}, ComBaseURL)
files := newFiles(core)
resp, err := files.Retrieve(context.Background(), &RetrieveFilesReq{
FileID: "file1",
})
require.NoError(t, err)
assert.Equal(t, "test_log_id", resp.LogID())
assert.Equal(t, "file1", resp.ID)
assert.Equal(t, 1024, resp.Bytes)
assert.Equal(t, 1234567890, resp.CreatedAt)
assert.Equal(t, "test.txt", resp.FileName)
})
// Test Upload method with error
t.Run("Upload file with error", func(t *testing.T) {
mockTransport := &mockTransport{
roundTripFunc: func(req *http.Request) (*http.Response, error) {
// Return error response
return mockResponse(http.StatusBadRequest, &baseResponse{})
},
}
core := newCore(&http.Client{Transport: mockTransport}, ComBaseURL)
files := newFiles(core)
content := []byte("test file content")
fileReader := bytes.NewReader(content)
uploadReq := &UploadFilesReq{
File: NewUploadFile(fileReader, "test.txt"),
}
resp, err := files.Upload(context.Background(), uploadReq)
require.Error(t, err)
assert.Nil(t, resp)
})
// Test Retrieve method with error
t.Run("Retrieve file with error", func(t *testing.T) {
mockTransport := &mockTransport{
roundTripFunc: func(req *http.Request) (*http.Response, error) {
// Return error response
return mockResponse(http.StatusBadRequest, &baseResponse{})
},
}
core := newCore(&http.Client{Transport: mockTransport}, ComBaseURL)
files := newFiles(core)
resp, err := files.Retrieve(context.Background(), &RetrieveFilesReq{
FileID: "invalid_file_id",
})
require.Error(t, err)
assert.Nil(t, resp)
})
// Test UploadFilesReq
t.Run("Test UploadFilesReq", func(t *testing.T) {
content := []byte("test file content")
fileReader := bytes.NewReader(content)
uploadReq := NewUploadFile(fileReader, "test.txt")
assert.Equal(t, "test.txt", uploadReq.Name())
// Test reading from the request
buffer := make([]byte, len(content))
n, err := uploadReq.Read(buffer)
require.NoError(t, err)
assert.Equal(t, len(content), n)
assert.Equal(t, content, buffer)
})
}