github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/cli/interactive_tests/test_url_db_override.tcl (about)

     1  #! /usr/bin/env expect -f
     2  
     3  source [file join [file dirname $argv0] common.tcl]
     4  
     5  start_server $argv
     6  
     7  # This is run as an acceptance test to ensure that the code path
     8  # that opens the SQL connection by URL is exercised.
     9  
    10  system "$argv sql -e 'create database test; create user test'"
    11  set certs_dir "/certs"
    12  
    13  start_test "Check that the SSL settings come from flags is URL does not set them already."
    14  # Use default, sslmode is secure
    15  set ::env(COCKROACH_INSECURE) "false"
    16  
    17  spawn $argv sql --url "postgresql://test@localhost:26257" -e "select 1"
    18  eexpect "problem with CA certificate"
    19  eexpect eof
    20  
    21  spawn $argv sql --url "postgresql://test@localhost:26257" --insecure -e "select 1"
    22  eexpect "1 row"
    23  eexpect eof
    24  
    25  set ::env(COCKROACH_INSECURE) "true"
    26  end_test
    27  
    28  
    29  
    30  start_test "Check that the insecure flag overrides the sslmode if URL is already set."
    31  # Use default, sslmode is secure
    32  set ::env(COCKROACH_INSECURE) "false"
    33  
    34  spawn $argv sql --url "postgresql://test@localhost:26257?sslmode=verify-full" --certs-dir=$certs_dir -e "select 1"
    35  eexpect "password:"
    36  send "\r"
    37  eexpect "SSL is not enabled on the server"
    38  eexpect eof
    39  
    40  spawn $argv sql --url "postgresql://test@localhost:26257?sslmode=verify-full" --certs-dir=$certs_dir --insecure -e "select 1"
    41  eexpect "1 row"
    42  eexpect eof
    43  
    44  set ::env(COCKROACH_INSECURE) "true"
    45  end_test
    46  
    47  
    48  start_test "Check that the database flag overrides the db if URL is already set."
    49  spawn $argv sql --url "postgresql://root@localhost:26257/system?sslmode=disable"  -e "select length(@1) as l, @1 as db from \[show database\]" --format=csv
    50  eexpect "l,db"
    51  eexpect "6,system"
    52  eexpect eof
    53  
    54  spawn $argv sql --url "postgresql://root@localhost:26257/system?sslmode=disable" --database test -e "select length(@1) as l, @1 as db from \[show database\]" --format=csv
    55  eexpect "l,db"
    56  eexpect "4,test"
    57  eexpect eof
    58  end_test
    59  
    60  start_test "Check that the database flag does override the database if none was present in the URL."
    61  # Use empty path.
    62  spawn $argv sql --url "postgresql://root@localhost:26257?sslmode=disable" --database system -e "select length(@1) as l, @1 as db from \[show database\]" --format=csv
    63  eexpect "l,db"
    64  eexpect "6,system"
    65  eexpect eof
    66  # Use path = /
    67  spawn $argv sql --url "postgresql://root@localhost:26257/?sslmode=disable" --database system -e "select length(@1) as l, @1 as db from \[show database\]" --format=csv
    68  eexpect "l,db"
    69  eexpect "6,system"
    70  eexpect eof
    71  
    72  end_test
    73  
    74  start_test "Check that the user flag  override the user if URL is already set."
    75  spawn $argv sql --url "postgresql://test@localhost:26257?sslmode=disable" -e "select length(@1) as l, @1 as u from \[show session_user\]" --format=csv
    76  eexpect "l,u"
    77  eexpect "4,test"
    78  eexpect eof
    79  
    80  spawn $argv sql --url "postgresql://root@localhost:26257?sslmode=disable" --user test -e "select length(@1) as l, @1 as u from \[show session_user\]" --format=csv
    81  eexpect "l,u"
    82  eexpect "4,test"
    83  eexpect eof
    84  end_test
    85  
    86  start_test "Check that the host flag overrides the host if URL is already set."
    87  spawn $argv sql --url "postgresql://root@localhost:26257?sslmode=disable" --host nonexistent.invalid -e "select 1"
    88  eexpect "cannot dial server"
    89  eexpect eof
    90  end_test
    91  
    92  stop_server $argv