mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-04-21 01:41:26 -07:00
fix tests for MariaDB and MySQL 5.7
This commit is contained in:
parent
a024854859
commit
fe2a3e4fe6
2 changed files with 75 additions and 42 deletions
|
@ -42,46 +42,52 @@
|
||||||
priv:
|
priv:
|
||||||
'mysql_role_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
'mysql_role_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
||||||
|
|
||||||
- name: Mysql_role Column case sensitive | Select columns a
|
- name: Mysql_role Column case sensitive | Assert role privileges are all caps
|
||||||
community.mysql.mysql_query:
|
community.mysql.mysql_query:
|
||||||
<<: *mysql_params
|
<<: *mysql_params
|
||||||
login_user: column_case_sensitive
|
|
||||||
query:
|
query:
|
||||||
- SELECT a FROM mysql_role_column_case.t1
|
- SHOW GRANTS FOR role_column_case_sensitive
|
||||||
register: assert_failure_read_lower_a
|
register: column_case_insensitive_grants
|
||||||
failed_when:
|
failed_when:
|
||||||
- assert_failure_read_lower_a is succeeded
|
# Column order may vary, thus test each separately
|
||||||
|
- >-
|
||||||
|
column_case_insensitive_grants.query_result[0][1]
|
||||||
|
is not search("`A`", ignorecase=false)
|
||||||
|
or column_case_insensitive_grants.query_result[0][1]
|
||||||
|
is not search("`B`", ignorecase=false)
|
||||||
|
or column_case_insensitive_grants.query_result[0][1]
|
||||||
|
is not search("`CC`", ignorecase=false)
|
||||||
|
or column_case_insensitive_grants.query_result[0][1]
|
||||||
|
is not search("`DD`", ignorecase=false)
|
||||||
|
|
||||||
- name: Mysql_role Column case sensitive | Select columns b
|
- name: Mysql_role Column case sensitive | Assert 1 column is accessible on MySQL
|
||||||
community.mysql.mysql_query:
|
community.mysql.mysql_query:
|
||||||
<<: *mysql_params
|
<<: *mysql_params
|
||||||
login_user: column_case_sensitive
|
login_user: column_case_sensitive
|
||||||
query:
|
query:
|
||||||
- SELECT B FROM mysql_role_column_case.t1
|
- DESC mysql_role_column_case.t1
|
||||||
|
register: assert_1_col_accessible
|
||||||
- name: Mysql_role Column case sensitive | Select columns cC
|
|
||||||
community.mysql.mysql_query:
|
|
||||||
<<: *mysql_params
|
|
||||||
login_user: column_case_sensitive
|
|
||||||
query:
|
|
||||||
- SELECT cC FROM mysql_role_column_case.t1
|
|
||||||
register: assert_failure_read_lower_cc
|
|
||||||
failed_when:
|
failed_when:
|
||||||
- assert_failure_read_lower_cc is succeeded
|
- assert_1_col_accessible.rowcount[0] | int != 1
|
||||||
|
when:
|
||||||
|
- db_engine == 'mysql'
|
||||||
|
|
||||||
- name: Mysql_role Column case sensitive | Select columns Dd
|
- name: Mysql_role Column case sensitive | Assert 4 column are accessible on MariaDB
|
||||||
community.mysql.mysql_query:
|
community.mysql.mysql_query:
|
||||||
<<: *mysql_params
|
<<: *mysql_params
|
||||||
login_user: column_case_sensitive
|
login_user: column_case_sensitive
|
||||||
query:
|
query:
|
||||||
- SELECT Dd FROM mysql_role_column_case.t1
|
- SET ROLE role_column_case_sensitive
|
||||||
register: assert_failure_read_lower_dd
|
- DESC mysql_role_column_case.t1
|
||||||
|
register: assert_4_col_accessible
|
||||||
failed_when:
|
failed_when:
|
||||||
- assert_failure_read_lower_dd is succeeded
|
- assert_4_col_accessible.rowcount[1] | int != 4
|
||||||
|
when:
|
||||||
|
- db_engine == 'mariadb'
|
||||||
|
|
||||||
# ====================== Test the fix =====================================
|
# ====================== Test the fix =====================================
|
||||||
|
|
||||||
- name: Mysql_role Column case sensitive | Create role with case sensitive
|
- name: Mysql_role Column case sensitive | Recreate role with case sensitive
|
||||||
community.mysql.mysql_role:
|
community.mysql.mysql_role:
|
||||||
<<: *mysql_params
|
<<: *mysql_params
|
||||||
name: 'role_column_case_sensitive'
|
name: 'role_column_case_sensitive'
|
||||||
|
@ -92,33 +98,34 @@
|
||||||
'mysql_role_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
'mysql_role_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
||||||
column_case_sensitive: true
|
column_case_sensitive: true
|
||||||
|
|
||||||
- name: Mysql_role Column case sensitive | Select columns a
|
- name: Mysql_role Column case sensitive | Assert role privileges are case sensitive
|
||||||
community.mysql.mysql_query:
|
community.mysql.mysql_query:
|
||||||
<<: *mysql_params
|
<<: *mysql_params
|
||||||
login_user: column_case_sensitive
|
|
||||||
query:
|
query:
|
||||||
- SELECT a FROM mysql_role_column_case.t1
|
- SHOW GRANTS FOR role_column_case_sensitive
|
||||||
|
register: column_case_sensitive_grants
|
||||||
|
failed_when:
|
||||||
|
# Column order may vary, thus test each separately
|
||||||
|
- >-
|
||||||
|
column_case_sensitive_grants.query_result[0][1]
|
||||||
|
is not search("`a`", ignorecase=false)
|
||||||
|
or column_case_sensitive_grants.query_result[0][1]
|
||||||
|
is not search("`B`", ignorecase=false)
|
||||||
|
or column_case_sensitive_grants.query_result[0][1]
|
||||||
|
is not search("`cC`", ignorecase=false)
|
||||||
|
or column_case_sensitive_grants.query_result[0][1]
|
||||||
|
is not search("`Dd`", ignorecase=false)
|
||||||
|
|
||||||
- name: Mysql_role Column case sensitive | Select columns b
|
- name: Mysql_role Column case sensitive | Assert 4 columns are accessible
|
||||||
community.mysql.mysql_query:
|
community.mysql.mysql_query:
|
||||||
<<: *mysql_params
|
<<: *mysql_params
|
||||||
login_user: column_case_sensitive
|
login_user: column_case_sensitive
|
||||||
query:
|
query:
|
||||||
- SELECT B FROM mysql_role_column_case.t1
|
- SET ROLE role_column_case_sensitive
|
||||||
|
- DESC mysql_role_column_case.t1
|
||||||
- name: Mysql_role Column case sensitive | Select columns cC
|
register: assert_4_col_accessible
|
||||||
community.mysql.mysql_query:
|
failed_when:
|
||||||
<<: *mysql_params
|
- assert_4_col_accessible.rowcount[1] | int != 4
|
||||||
login_user: column_case_sensitive
|
|
||||||
query:
|
|
||||||
- SELECT cC FROM mysql_role_column_case.t1
|
|
||||||
|
|
||||||
- name: Mysql_role Column case sensitive | Select columns Dd
|
|
||||||
community.mysql.mysql_query:
|
|
||||||
<<: *mysql_params
|
|
||||||
login_user: column_case_sensitive
|
|
||||||
query:
|
|
||||||
- SELECT Dd FROM mysql_role_column_case.t1
|
|
||||||
|
|
||||||
# ========================= Teardown ======================================
|
# ========================= Teardown ======================================
|
||||||
|
|
||||||
|
|
|
@ -41,9 +41,22 @@
|
||||||
- SHOW GRANTS FOR column_case_sensitive@'%'
|
- SHOW GRANTS FOR column_case_sensitive@'%'
|
||||||
register: column_case_insensitive_grants
|
register: column_case_insensitive_grants
|
||||||
failed_when:
|
failed_when:
|
||||||
|
# Column order may vary, thus test each separately
|
||||||
- >-
|
- >-
|
||||||
column_case_insensitive_grants.query_result[0][1]
|
column_case_insensitive_grants.query_result[0][1]
|
||||||
is not search("`A`, `B`, `CC`, `DD`")
|
is not search("`A`", ignorecase=false)
|
||||||
|
or column_case_insensitive_grants.query_result[0][1]
|
||||||
|
is not search("`B`", ignorecase=false)
|
||||||
|
or column_case_insensitive_grants.query_result[0][1]
|
||||||
|
is not search("`CC`", ignorecase=false)
|
||||||
|
or column_case_insensitive_grants.query_result[0][1]
|
||||||
|
is not search("`DD`", ignorecase=false)
|
||||||
|
when:
|
||||||
|
# MySQL 5.7 returns the column name without the backticks.
|
||||||
|
# Searching for a single character doesn't make sense. So we skip the
|
||||||
|
# the test for MySQL 5.7
|
||||||
|
- (db_engine == 'mysql' and db_version is version('8.0', '>'))
|
||||||
|
or (db_engine == 'mariadb')
|
||||||
|
|
||||||
# ======================== Test fix ======================================
|
# ======================== Test fix ======================================
|
||||||
|
|
||||||
|
@ -64,9 +77,22 @@
|
||||||
- SHOW GRANTS FOR column_case_sensitive@'%'
|
- SHOW GRANTS FOR column_case_sensitive@'%'
|
||||||
register: column_case_sensitive_grants
|
register: column_case_sensitive_grants
|
||||||
failed_when:
|
failed_when:
|
||||||
|
# Column order may vary, thus test each separately
|
||||||
- >-
|
- >-
|
||||||
column_case_sensitive_grants.query_result[0][1]
|
column_case_sensitive_grants.query_result[0][1]
|
||||||
is not search("`B`, `Dd`, `a`, `cC`")
|
is not search("`a`", ignorecase=false)
|
||||||
|
or column_case_sensitive_grants.query_result[0][1]
|
||||||
|
is not search("`B`", ignorecase=false)
|
||||||
|
or column_case_sensitive_grants.query_result[0][1]
|
||||||
|
is not search("`cC`", ignorecase=false)
|
||||||
|
or column_case_sensitive_grants.query_result[0][1]
|
||||||
|
is not search("`Dd`", ignorecase=false)
|
||||||
|
when:
|
||||||
|
# MySQL 5.7 returns the column name without the backticks.
|
||||||
|
# Searching for a single character doesn't make sense. So we skip the
|
||||||
|
# the test for MySQL 5.7
|
||||||
|
- (db_engine == 'mysql' and db_version is version('8.0', '>'))
|
||||||
|
or (db_engine == 'mariadb')
|
||||||
|
|
||||||
# ========================= Teardown ======================================
|
# ========================= Teardown ======================================
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue