github.com/snowflakedb/gosnowflake@v1.9.0/client_test.go (about)

     1  // Copyright (c) 2021-2022 Snowflake Computing Inc. All rights reserved.
     2  
     3  package gosnowflake
     4  
     5  import (
     6  	"context"
     7  	"net/http"
     8  	"net/url"
     9  	"testing"
    10  )
    11  
    12  type DummyTransport struct {
    13  	postRequests int
    14  	getRequests  int
    15  }
    16  
    17  func (t *DummyTransport) RoundTrip(r *http.Request) (*http.Response, error) {
    18  	if r.URL.Path == "" {
    19  		if r.Method == "GET" {
    20  			t.getRequests++
    21  		} else if r.Method == "POST" {
    22  			t.postRequests++
    23  		}
    24  		return &http.Response{StatusCode: 200}, nil
    25  	}
    26  	return snowflakeInsecureTransport.RoundTrip(r)
    27  }
    28  
    29  func TestInternalClient(t *testing.T) {
    30  	config, err := ParseDSN(dsn)
    31  	if err != nil {
    32  		t.Fatalf("failed to parse dsn. err: %v", err)
    33  	}
    34  	transport := DummyTransport{}
    35  	config.Transporter = &transport
    36  	driver := SnowflakeDriver{}
    37  	db, err := driver.OpenWithConfig(context.Background(), *config)
    38  	if err != nil {
    39  		t.Fatalf("failed to open with config. config: %v, err: %v", config, err)
    40  	}
    41  
    42  	internalClient := (db.(*snowflakeConn)).internal
    43  	resp, err := internalClient.Get(context.Background(), &url.URL{}, make(map[string]string), 0)
    44  	if err != nil || resp.StatusCode != 200 {
    45  		t.Fail()
    46  	}
    47  	if transport.getRequests != 1 {
    48  		t.Fatalf("Expected exactly one GET request, got %v", transport.getRequests)
    49  	}
    50  
    51  	resp, err = internalClient.Post(context.Background(), &url.URL{}, make(map[string]string), make([]byte, 0), 0, defaultTimeProvider)
    52  	if err != nil || resp.StatusCode != 200 {
    53  		t.Fail()
    54  	}
    55  	if transport.postRequests != 1 {
    56  		t.Fatalf("Expected exactly one POST request, got %v", transport.postRequests)
    57  	}
    58  
    59  	db.Close()
    60  }