123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- # We test interesting combinations of server and client SSL configs
- # (part of the CREATE SOURCE statement).
- $ set-sql-timeout duration=1s
- > CREATE SECRET ssl_ca AS '${arg.ssl-ca}'
- > CREATE SECRET ssl_cert AS '${arg.ssl-client-cert}'
- > CREATE SECRET ssl_key AS '${arg.ssl-client-key}'
- > CREATE SECRET ssl_wrong_cert AS '${arg.ssl-wrong-client-cert}'
- > CREATE SECRET ssl_wrong_key AS '${arg.ssl-wrong-client-key}'
- $ mysql-connect name=mysql url=mysql://root@mysql password=${arg.mysql-root-password}
- # Bootstrap users and data
- $ mysql-execute name=mysql
- DROP DATABASE IF EXISTS public;
- CREATE DATABASE public;
- USE public;
- DROP USER IF EXISTS host;
- CREATE USER host;
- GRANT ALL ON *.* TO host;
- DROP USER IF EXISTS hostssl;
- CREATE USER hostssl;
- GRANT ALL ON *.* TO hostssl;
- DROP USER IF EXISTS hostnossl;
- CREATE USER hostnossl;
- GRANT ALL ON *.* TO hostnossl;
- DROP USER IF EXISTS certuser;
- CREATE USER certuser;
- GRANT ALL ON *.* TO certuser;
- DROP TABLE IF EXISTS numbers;
- CREATE TABLE numbers (number int PRIMARY KEY, is_prime bool, name text);
- INSERT INTO numbers VALUES (1, true, 'one');
- $ set-regex match=(\d{1,3}\.){3}\d{1,3} replacement=(HOST)
- # server: host, client: disable => OK
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER host,
- SSL MODE disabled
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # server: host, client: prefer => unsupported
- ! CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER host,
- SSL MODE prefer
- );
- contains: invalid CONNECTION: unknown SSL MODE "PREFER"
- # server: host, client: require => OK
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER host,
- SSL MODE required
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # server: hostssl, client: require => OK
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER hostssl,
- SSL MODE required
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # TODO: database-issues#7660 (error not handled properly)
- # # server: hostssl, client: verify-ca => ERROR
- # > CREATE CONNECTION mysql_conn TO MYSQL (
- # HOST mysql,
- # USER hostssl,
- # SSL MODE verify_ca
- # );
- # ! CREATE SOURCE "mz_source"
- # FROM MYSQL CONNECTION mysql_conn
- # FOR TABLES (public.numbers);
- # contains:self signed certificate in certificate chain
- # > DROP CONNECTION mysql_conn;
- # server: hostssl, client: verify-ca => OK
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER hostssl,
- SSL MODE verify_ca,
- SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # TODO: database-issues#7660 (error not handled properly)
- # # server: hostssl, client: verify-identity => ERROR
- # > CREATE CONNECTION mysql_conn TO MYSQL (
- # HOST mysql,
- # USER hostssl,
- # SSL MODE verify_identity
- # );
- # ! CREATE SOURCE "mz_source"
- # FROM MYSQL CONNECTION mysql_conn
- # FOR TABLES (public.numbers);
- # contains:self signed certificate in certificate chain
- # > DROP CONNECTION mysql_conn;
- # TODO: database-issues#7660
- # # server: hostssl, client: verify-identity => OK
- # > CREATE CONNECTION mysql_conn TO MYSQL (
- # HOST mysql,
- # USER hostssl,
- # SSL MODE verify_identity,
- # SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- # );
- # > CREATE SOURCE "mz_source"
- # FROM MYSQL CONNECTION mysql_conn
- # FOR TABLES (public.numbers);
- # > SELECT * FROM "numbers";
- # 1 1 one
- # $ mysql-execute name=mysql
- # INSERT INTO numbers VALUES (2, true, 'two');
- # > SELECT * FROM "numbers";
- # 1 1 one
- # 2 1 two
- # > DROP SOURCE "mz_source" CASCADE;
- # > DROP CONNECTION mysql_conn;
- # $ mysql-execute name=mysql
- # DELETE FROM numbers WHERE number = 2;
- # server: hostnossl, client: disable => OK
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER hostnossl,
- SSL MODE disabled
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # TODO: database-issues#7660 (error not handled properly)
- # # server: hostnossl, client: verify-ca => ERROR
- # > CREATE CONNECTION mysql_conn TO MYSQL (
- # HOST mysql,
- # USER hostnossl,
- # SSL MODE verify_ca
- # );
- # ! CREATE SOURCE "mz_source"
- # FROM MYSQL CONNECTION mysql_conn
- # FOR TABLES (public.numbers);
- # contains:self signed certificate in certificate chain
- # > DROP CONNECTION mysql_conn;
- # server: certuser, client: require => OK
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE required,
- SSL CERTIFICATE SECRET ssl_cert,
- SSL KEY SECRET ssl_key,
- SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # server: certuser, client: verify-ca => OK in MySQL
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE verify_ca,
- SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # TODO: database-issues#7660 (error not handled properly)
- # # server: certuser, client: verify-ca (wrong cert) => ERROR
- # > CREATE CONNECTION mysql_conn TO MYSQL (
- # HOST mysql,
- # USER certuser,
- # SSL MODE verify_ca,
- # SSL CERTIFICATE SECRET ssl_wrong_cert,
- # SSL KEY SECRET ssl_wrong_key,
- # SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- # );
- # ! CREATE SOURCE "mz_source"
- # FROM MYSQL CONNECTION mysql_conn
- # contains:db error: FATAL: certificate authentication failed for user "certuser"
- # > DROP CONNECTION mysql_conn;
- # server: certuser, client: verify-ca => OK
- > CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE verify_ca,
- SSL CERTIFICATE SECRET ssl_cert,
- SSL KEY SECRET ssl_key,
- SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- );
- > CREATE SOURCE "mz_source"
- FROM MYSQL CONNECTION mysql_conn
- FOR TABLES (public.numbers);
- > SELECT * FROM "numbers";
- 1 1 one
- $ mysql-execute name=mysql
- INSERT INTO numbers VALUES (2, true, 'two');
- > SELECT * FROM "numbers";
- 1 1 one
- 2 1 two
- > DROP SOURCE "mz_source" CASCADE;
- > DROP CONNECTION mysql_conn;
- $ mysql-execute name=mysql
- DELETE FROM numbers WHERE number = 2;
- # TODO: database-issues#7660 (error not handled properly)
- # # server: certuser, client: verify-identity => OK
- # > CREATE CONNECTION mysql_conn TO MYSQL (
- # HOST mysql,
- # USER certuser,
- # SSL MODE verify_identity,
- # SSL CERTIFICATE SECRET ssl_cert,
- # SSL KEY SECRET ssl_key,
- # SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- # );
- # > CREATE SOURCE "mz_source"
- # FROM MYSQL CONNECTION mysql_conn
- # FOR TABLES (public.numbers);
- # > SELECT * FROM "numbers";
- # 1 1 one
- # $ mysql-execute name=mysql
- # INSERT INTO numbers VALUES (2, true, 'two');
- # > SELECT * FROM "numbers";
- # 1 1 one
- # 2 1 two
- # > DROP SOURCE "mz_source" CASCADE;
- # > DROP CONNECTION mysql_conn;
- # $ mysql-execute name=mysql
- # DELETE FROM numbers WHERE number = 2;
- # missing sslcert
- ! CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE verify_full,
- SSL CERTIFICATE SECRET noexist,
- SSL KEY SECRET ssl_key,
- SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- );
- contains:unknown catalog item 'noexist'
- # missing sslkey
- ! CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE verify_full,
- SSL CERTIFICATE SECRET ssl_cert,
- SSL KEY SECRET noexist,
- SSL CERTIFICATE AUTHORITY SECRET ssl_ca
- );
- contains:unknown catalog item 'noexist'
- # missing sslrootcert
- ! CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE verify_full,
- SSL CERTIFICATE SECRET ssl_cert,
- SSL KEY SECRET ssl_key,
- SSL CERTIFICATE AUTHORITY SECRET noexist
- );
- contains:unknown catalog item 'noexist'
- # require both sslcert and sslkey
- ! CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE verify_full,
- SSL CERTIFICATE SECRET ssl_cert
- );
- contains:invalid CONNECTION: both SSL KEY and SSL CERTIFICATE are required
- ! CREATE CONNECTION mysql_conn TO MYSQL (
- HOST mysql,
- USER certuser,
- SSL MODE verify_full,
- SSL KEY SECRET ssl_cert
- );
- contains:invalid CONNECTION: both SSL KEY and SSL CERTIFICATE are required
|