github.com/snowflakedb/gosnowflake@v1.9.0/connector_test.go (about) 1 // Copyright (c) 2020-2022 Snowflake Computing Inc. All rights reserved. 2 3 package gosnowflake 4 5 import ( 6 "context" 7 "database/sql/driver" 8 "reflect" 9 "testing" 10 ) 11 12 type noopTestDriver struct { 13 config Config 14 conn *snowflakeConn 15 } 16 17 func (d *noopTestDriver) Open(_ string) (driver.Conn, error) { 18 return nil, nil 19 } 20 21 func (d *noopTestDriver) OpenWithConfig(_ context.Context, config Config) (driver.Conn, error) { 22 d.config = config 23 return d.conn, nil 24 } 25 26 func TestConnector(t *testing.T) { 27 conn := snowflakeConn{} 28 mock := noopTestDriver{conn: &conn} 29 createDSN("UTC") 30 config, err := ParseDSN(dsn) 31 if err != nil { 32 t.Fatal("Failed to parse dsn") 33 } 34 connector := NewConnector(&mock, *config) 35 connection, err := connector.Connect(context.Background()) 36 if err != nil { 37 t.Fatalf("Connect error %s", err) 38 } 39 if connection != &conn { 40 t.Fatalf("Connection mismatch %s", connection) 41 } 42 fillMissingConfigParameters(config) 43 if reflect.DeepEqual(config, mock.config) { 44 t.Fatalf("Config should be equal, expected %v, actual %v", config, mock.config) 45 } 46 if connector.Driver() == nil { 47 t.Fatalf("Missing driver") 48 } 49 } 50 51 func TestConnectorWithMissingConfig(t *testing.T) { 52 conn := snowflakeConn{} 53 mock := noopTestDriver{conn: &conn} 54 config := Config{ 55 User: "u", 56 Password: "p", 57 Account: "", 58 } 59 expectedErr := errEmptyAccount() 60 61 connector := NewConnector(&mock, config) 62 _, err := connector.Connect(context.Background()) 63 assertNotNilF(t, err, "the connection should have failed due to empty account.") 64 65 driverErr, ok := err.(*SnowflakeError) 66 assertTrueF(t, ok, "should be a SnowflakeError") 67 assertEqualE(t, driverErr.Number, expectedErr.Number) 68 assertEqualE(t, driverErr.Message, expectedErr.Message) 69 }