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