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  }