mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-08-03 04:34:27 -07:00
Revert "sync fork with upstream main"
This reverts commit 77593b7a91e8d417eead0d3d5366ba991c767565. I imported PR569 to be able to test on my fork, but to avoid polluting this patch I now revert those commit.
This commit is contained in:
parent
d38caa264f
commit
5477603583
17 changed files with 56 additions and 437 deletions
|
@ -18,7 +18,3 @@
|
|||
- include_tasks: test_priv_subtract.yml
|
||||
vars:
|
||||
enable_check_mode: yes
|
||||
|
||||
- name: Test column case sensitive
|
||||
ansible.builtin.import_tasks:
|
||||
file: test_column_case_sensitive.yml
|
||||
|
|
|
@ -1,149 +0,0 @@
|
|||
---
|
||||
|
||||
- vars:
|
||||
mysql_parameters: &mysql_params
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: '{{ mysql_password }}'
|
||||
login_host: '{{ mysql_host }}'
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
|
||||
block:
|
||||
|
||||
# ========================= Prepare =======================================
|
||||
# We use query to prevent our module of changing the case
|
||||
- name: Mysql_role Column case sensitive | Create a test table
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
query:
|
||||
- CREATE DATABASE mysql_role_column_case
|
||||
- >-
|
||||
CREATE TABLE mysql_role_column_case.t1
|
||||
(a int, B int, cC int, Dd int)
|
||||
- >-
|
||||
INSERT INTO mysql_role_column_case.t1
|
||||
(a, B, cC, Dd) VALUES (1,2,3,4)
|
||||
|
||||
- name: Mysql_role Column case sensitive | Create users
|
||||
community.mysql.mysql_user:
|
||||
<<: *mysql_params
|
||||
name: column_case_sensitive
|
||||
host: '%'
|
||||
password: 'msandbox'
|
||||
|
||||
# ================= Reproduce failure =====================================
|
||||
|
||||
- name: Mysql_role Column case sensitive | Create role
|
||||
community.mysql.mysql_role:
|
||||
<<: *mysql_params
|
||||
name: 'role_column_case_sensitive'
|
||||
state: present
|
||||
members:
|
||||
- 'column_case_sensitive@%'
|
||||
priv:
|
||||
'mysql_role_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
||||
|
||||
- name: Mysql_role Column case sensitive | Assert role privileges are all caps
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
query:
|
||||
- SHOW GRANTS FOR role_column_case_sensitive
|
||||
register: column_case_insensitive_grants
|
||||
failed_when:
|
||||
# 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 | Assert 1 column is accessible on MySQL
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
login_user: column_case_sensitive
|
||||
query:
|
||||
- DESC mysql_role_column_case.t1
|
||||
register: assert_1_col_accessible
|
||||
failed_when:
|
||||
- assert_1_col_accessible.rowcount[0] | int != 1
|
||||
when:
|
||||
- db_engine == 'mysql'
|
||||
|
||||
- name: Mysql_role Column case sensitive | Assert 4 column are accessible on MariaDB
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
login_user: column_case_sensitive
|
||||
query:
|
||||
- SET ROLE role_column_case_sensitive
|
||||
- DESC mysql_role_column_case.t1
|
||||
register: assert_4_col_accessible
|
||||
failed_when:
|
||||
- assert_4_col_accessible.rowcount[1] | int != 4
|
||||
when:
|
||||
- db_engine == 'mariadb'
|
||||
|
||||
# ====================== Test the fix =====================================
|
||||
|
||||
- name: Mysql_role Column case sensitive | Recreate role with case sensitive
|
||||
community.mysql.mysql_role:
|
||||
<<: *mysql_params
|
||||
name: 'role_column_case_sensitive'
|
||||
state: present
|
||||
members:
|
||||
- 'column_case_sensitive@%'
|
||||
priv:
|
||||
'mysql_role_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
||||
column_case_sensitive: true
|
||||
|
||||
- name: Mysql_role Column case sensitive | Assert role privileges are case sensitive
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
query:
|
||||
- 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 | Assert 4 columns are accessible
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
login_user: column_case_sensitive
|
||||
query:
|
||||
- SET ROLE role_column_case_sensitive
|
||||
- DESC mysql_role_column_case.t1
|
||||
register: assert_4_col_accessible
|
||||
failed_when:
|
||||
- assert_4_col_accessible.rowcount[1] | int != 4
|
||||
|
||||
# ========================= Teardown ======================================
|
||||
|
||||
- name: Mysql_role Column case sensitive | Delete test users
|
||||
community.mysql.mysql_user:
|
||||
<<: *mysql_params
|
||||
name: column_case_sensitive
|
||||
host_all: true
|
||||
state: absent
|
||||
|
||||
- name: Mysql_role Column case sensitive | Delete role
|
||||
community.mysql.mysql_role:
|
||||
<<: *mysql_params
|
||||
name: 'role_column_case_sensitive'
|
||||
state: absent
|
||||
|
||||
- name: Mysql_role Column case sensitive | Delete test database
|
||||
community.mysql.mysql_db:
|
||||
<<: *mysql_params
|
||||
name: mysql_role_column_case
|
||||
state: absent
|
|
@ -286,7 +286,3 @@
|
|||
- include_tasks: test_user_grants_with_roles_applied.yml
|
||||
|
||||
- include_tasks: test_revoke_only_grant.yml
|
||||
|
||||
- name: Mysql_user - test column case sensitive
|
||||
ansible.builtin.import_tasks:
|
||||
file: test_column_case_sensitive.yml
|
||||
|
|
|
@ -1,134 +0,0 @@
|
|||
---
|
||||
|
||||
- vars:
|
||||
mysql_parameters: &mysql_params
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: '{{ mysql_password }}'
|
||||
login_host: '{{ mysql_host }}'
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
|
||||
block:
|
||||
|
||||
# ========================= Prepare =======================================
|
||||
# We use query to prevent our module of changing the case
|
||||
- name: Mysql_user Column case sensitive | Create a test table
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
query:
|
||||
- CREATE DATABASE mysql_user_column_case
|
||||
- >-
|
||||
CREATE TABLE mysql_user_column_case.t1
|
||||
(a int, B int, cC int, Dd int)
|
||||
- >-
|
||||
INSERT INTO mysql_user_column_case.t1
|
||||
(a, B, cC, Dd) VALUES (1,2,3,4)
|
||||
|
||||
# ================= Reproduce failure =====================================
|
||||
|
||||
- name: Mysql_user Column case sensitive | Create test user
|
||||
community.mysql.mysql_user:
|
||||
<<: *mysql_params
|
||||
name: column_case_sensitive
|
||||
host: '%'
|
||||
password: 'msandbox'
|
||||
priv:
|
||||
'mysql_user_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
||||
|
||||
- name: Mysql_user Column case sensitive | Assert user privileges are all caps
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
query:
|
||||
- SHOW GRANTS FOR column_case_sensitive@'%'
|
||||
register: column_case_insensitive_grants
|
||||
failed_when:
|
||||
# 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_user Column case sensitive | Assert 1 column is accessible on MySQL 5.7
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
login_user: column_case_sensitive
|
||||
query:
|
||||
- DESC mysql_user_column_case.t1
|
||||
register: assert_1_col_accessible
|
||||
failed_when:
|
||||
- assert_1_col_accessible.rowcount[0] | int != 1
|
||||
when:
|
||||
- db_engine == 'mysql' and db_version is version('5.7', '<=')
|
||||
|
||||
- name: Mysql_user Column case sensitive | Assert 4 column are accessible on MariaDB and MySQL 8+
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
login_user: column_case_sensitive
|
||||
query:
|
||||
- DESC mysql_user_column_case.t1
|
||||
register: assert_4_col_accessible
|
||||
failed_when:
|
||||
- assert_4_col_accessible.rowcount[0] | int != 4
|
||||
when:
|
||||
- >-
|
||||
db_engine == 'mariadb'
|
||||
or (db_engine == 'mysql' and db_version is version('8.0', '>='))
|
||||
|
||||
# ======================== Test fix ======================================
|
||||
|
||||
- name: Mysql_user Column case sensitive | Create users with case sensitive
|
||||
community.mysql.mysql_user:
|
||||
<<: *mysql_params
|
||||
name: column_case_sensitive
|
||||
host: '%'
|
||||
password: 'msandbox'
|
||||
priv:
|
||||
'mysql_user_column_case.t1': 'SELECT(a, B, cC, Dd)'
|
||||
column_case_sensitive: true
|
||||
|
||||
- name: Mysql_user Column case sensitive | Assert user privileges are case sensitive
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
query:
|
||||
- SHOW GRANTS FOR 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_user Column case sensitive | Assert 4 columns are accessible
|
||||
community.mysql.mysql_query:
|
||||
<<: *mysql_params
|
||||
login_user: column_case_sensitive
|
||||
query:
|
||||
- DESC mysql_user_column_case.t1
|
||||
register: assert_4_col_accessible
|
||||
failed_when:
|
||||
- assert_4_col_accessible.rowcount[0] | int != 4
|
||||
|
||||
# ========================= Teardown ======================================
|
||||
|
||||
- name: Mysql_user Column case sensitive | Delete test users
|
||||
community.mysql.mysql_user:
|
||||
<<: *mysql_params
|
||||
name: column_case_sensitive
|
||||
host_all: true
|
||||
state: absent
|
||||
|
||||
- name: Mysql_user Column case sensitive | Delete test database
|
||||
community.mysql.mysql_db:
|
||||
<<: *mysql_params
|
||||
name: mysql_user_column_case
|
||||
state: absent
|
|
@ -6,5 +6,3 @@ plugins/modules/mysql_info.py validate-modules:parameter-list-no-elements
|
|||
plugins/modules/mysql_query.py validate-modules:parameter-list-no-elements
|
||||
plugins/modules/mysql_user.py validate-modules:undocumented-parameter
|
||||
plugins/modules/mysql_variables.py validate-modules:doc-required-mismatch
|
||||
plugins/module_utils/mysql.py pylint:unused-import
|
||||
plugins/module_utils/version.py pylint:unused-import
|
8
tests/sanity/ignore-2.13.txt
Normal file
8
tests/sanity/ignore-2.13.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
plugins/modules/mysql_db.py validate-modules:doc-elements-mismatch
|
||||
plugins/modules/mysql_db.py validate-modules:parameter-list-no-elements
|
||||
plugins/modules/mysql_db.py validate-modules:use-run-command-not-popen
|
||||
plugins/modules/mysql_info.py validate-modules:doc-elements-mismatch
|
||||
plugins/modules/mysql_info.py validate-modules:parameter-list-no-elements
|
||||
plugins/modules/mysql_query.py validate-modules:parameter-list-no-elements
|
||||
plugins/modules/mysql_user.py validate-modules:undocumented-parameter
|
||||
plugins/modules/mysql_variables.py validate-modules:doc-required-mismatch
|
|
@ -9,8 +9,7 @@ from ansible_collections.community.mysql.plugins.module_utils.user import (
|
|||
handle_grant_on_col,
|
||||
has_grant_on_col,
|
||||
normalize_col_grants,
|
||||
sort_column_order,
|
||||
privileges_unpack,
|
||||
sort_column_order
|
||||
)
|
||||
|
||||
|
||||
|
@ -93,21 +92,3 @@ def test_handle_grant_on_col(privileges, start, end, output):
|
|||
def test_normalize_col_grants(input_, expected):
|
||||
"""Tests normalize_col_grants function."""
|
||||
assert normalize_col_grants(input_) == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'priv,expected,mode,column_case_sensitive,ensure_usage',
|
||||
[
|
||||
('mydb.*:SELECT', {'"mydb".*': ['SELECT']}, 'ANSI', False, False),
|
||||
('mydb.*:SELECT', {'`mydb`.*': ['SELECT']}, 'NOTANSI', False, False),
|
||||
('mydb.*:SELECT', {'"mydb".*': ['SELECT'], '*.*': ['USAGE']}, 'ANSI', False, True),
|
||||
('mydb.*:SELECT', {'`mydb`.*': ['SELECT'], '*.*': ['USAGE']}, 'NOTANSI', False, True),
|
||||
('mydb.*:SELECT (a)', {'`mydb`.*': ['SELECT (A)']}, 'NOTANSI', False, False),
|
||||
('mydb.*:UPDATE (b, a)', {'`mydb`.*': ['UPDATE (a, b)']}, 'NOTANSI', True, False),
|
||||
('mydb.*:SELECT (b, a, c)', {'`mydb`.*': ['SELECT (A, B, C)']}, 'NOTANSI', False, False),
|
||||
('mydb.*:SELECT (b, a, c)', {'`mydb`.*': ['SELECT (a, b, c)']}, 'NOTANSI', True, False),
|
||||
]
|
||||
)
|
||||
def test_privileges_unpack(priv, mode, column_case_sensitive, ensure_usage, expected):
|
||||
"""Tests privileges_unpack function."""
|
||||
assert privileges_unpack(priv, mode, column_case_sensitive, ensure_usage) == expected
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue