forked from snowflakedb/gosnowflake
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfile_transfer_agent_test.go
79 lines (72 loc) · 1.89 KB
/
file_transfer_agent_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
// Copyright (c) 2022 Snowflake Computing Inc. All rights reserved.
package gosnowflake
import (
"context"
"errors"
"fmt"
"os"
"path/filepath"
"strings"
"testing"
"github.com/aws/smithy-go"
)
func TestGetBucketAccelerateConfiguration(t *testing.T) {
if runningOnGithubAction() {
t.Skip("Should be run against an account in AWS EU North1 region.")
}
config, err := ParseDSN(dsn)
if err != nil {
t.Error(err)
}
sc, err := buildSnowflakeConn(context.Background(), *config)
if err != nil {
t.Fatal(err)
}
if err = authenticateWithConfig(sc); err != nil {
t.Fatal(err)
}
sfa := &snowflakeFileTransferAgent{
sc: sc,
commandType: uploadCommand,
srcFiles: make([]string, 0),
data: &execResponseData{
SrcLocations: make([]string, 0),
},
}
if err = sfa.transferAccelerateConfig(); err != nil {
var ae smithy.APIError
if errors.As(err, &ae) {
if ae.ErrorCode() == "MethodNotAllowed" {
t.Fatalf("should have ignored 405 error: %v", err)
}
}
}
}
func TestDownloadWithInvalidLocalPath(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "data")
if err != nil {
t.Error(err)
}
defer os.RemoveAll(tmpDir)
testData := filepath.Join(tmpDir, "data.txt")
f, err := os.OpenFile(testData, os.O_CREATE|os.O_RDWR, os.ModePerm)
if err != nil {
t.Error(err)
}
f.WriteString("test1,test2\ntest3,test4\n")
f.Close()
runTests(t, dsn, func(dbt *DBTest) {
if _, err = dbt.db.Exec("use role sysadmin"); err != nil {
t.Skip("snowflake admin account not accessible")
}
dbt.mustExec("rm @~/test_get")
sqlText := fmt.Sprintf("put file://%v @~/test_get", testData)
sqlText = strings.ReplaceAll(sqlText, "\\", "\\\\")
dbt.mustExec(sqlText)
sqlText = fmt.Sprintf("get @~/test_get/data.txt file://%v\\get", tmpDir)
if _, err = dbt.db.Query(sqlText); err == nil {
t.Fatalf("should return local path not directory error.")
}
dbt.mustExec("rm @~/test_get")
})
}