11import aikido_zen .sinks .clickhouse_driver
22import pytest
33from aikido_zen .background_process import reset_comms
4- from aikido_zen .context import Context
54from aikido_zen .errors import AikidoSQLInjection
6-
7-
8- class Context1 (Context ):
9- def __init__ (self , body ):
10- self .cookies = {}
11- self .headers = {}
12- self .remote_address = "1.1.1.1"
13- self .method = "POST"
14- self .url = "url"
15- self .query = {}
16- self .body = body
17- self .source = "express"
18- self .route = "/"
19- self .parsed_userinput = {}
20- self .protection_forced_off = False
5+ import aikido_zen .test_utils as test_utils
216
227
238@pytest .fixture (autouse = True )
24- def set_blocking_to_true (monkeypatch ):
9+ def setup (monkeypatch ):
10+ reset_comms ()
2511 monkeypatch .setenv ("AIKIDO_BLOCK" , "1" )
2612
2713
@@ -35,25 +21,22 @@ def client():
3521
3622
3723def test_client_execute_without_context (client ):
38- reset_comms ()
3924 dog_name = "Steve"
4025 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
4126 client .execute (sql )
4227
4328
4429def test_client_execute_safe (client ):
45- reset_comms ()
4630 dog_name = "Steve"
4731 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
48- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
32+ test_utils . generate_and_set_context ( value = dog_name )
4933 client .execute (sql )
5034
5135
5236def test_client_execute_unsafe (client , monkeypatch ):
53- reset_comms ()
5437 dog_name = "Malicious dog', 1); -- "
5538 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
56- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
39+ test_utils . generate_and_set_context ( value = dog_name )
5740
5841 with pytest .raises (AikidoSQLInjection ):
5942 client .execute (sql )
@@ -66,21 +49,19 @@ def test_cursor_execute_safe():
6649 from clickhouse_driver import connect
6750
6851 conn = connect ("clickhouse://localhost:9000" )
69- reset_comms ()
7052 dog_name = "Steve"
7153 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
72- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
54+ test_utils . generate_and_set_context ( value = dog_name )
7355 conn .cursor ().execute (sql )
7456
7557
7658def test_cursor_execute_unsafe (monkeypatch ):
7759 from clickhouse_driver import connect
7860
7961 conn = connect ("clickhouse://localhost:9000" )
80- reset_comms ()
8162 dog_name = "Malicious dog', 1); -- "
8263 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
83- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
64+ test_utils . generate_and_set_context ( value = dog_name )
8465
8566 with pytest .raises (AikidoSQLInjection ):
8667 conn .cursor ().execute (sql )
@@ -90,18 +71,16 @@ def test_cursor_execute_unsafe(monkeypatch):
9071
9172
9273def test_client_execute_with_progress_safe (client ):
93- reset_comms ()
9474 dog_name = "Steve"
9575 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
96- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
76+ test_utils . generate_and_set_context ( value = dog_name )
9777 client .execute_with_progress (sql )
9878
9979
10080def test_client_execute_with_progress_unsafe (client , monkeypatch ):
101- reset_comms ()
10281 dog_name = "Malicious dog', 1); -- "
10382 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
104- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
83+ test_utils . generate_and_set_context ( value = dog_name )
10584
10685 with pytest .raises (AikidoSQLInjection ):
10786 client .execute_with_progress (sql )
@@ -111,18 +90,16 @@ def test_client_execute_with_progress_unsafe(client, monkeypatch):
11190
11291
11392def test_client_execute_iter_safe (client ):
114- reset_comms ()
11593 dog_name = "Steve"
11694 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
117- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
95+ test_utils . generate_and_set_context ( value = dog_name )
11896 client .execute_iter (sql )
11997
12098
12199def test_client_execute_iter_unsafe (client , monkeypatch ):
122- reset_comms ()
123100 dog_name = "Malicious dog', 1); -- "
124101 sql = "INSERT INTO dogs (dog_name, isAdmin) VALUES ('{}' , 0)" .format (dog_name )
125- Context1 ({ "dog_name" : dog_name }). set_as_current_context ( )
102+ test_utils . generate_and_set_context ( value = dog_name )
126103
127104 with pytest .raises (AikidoSQLInjection ):
128105 client .execute_iter (sql )
0 commit comments