File tree Expand file tree Collapse file tree 3 files changed +14
-4
lines changed Expand file tree Collapse file tree 3 files changed +14
-4
lines changed Original file line number Diff line number Diff line change 1- from dbbackup import utils
1+ from urllib . parse import quote
22import logging
3+
4+ from dbbackup import utils
35from .base import BaseCommandDBConnector
46from .exceptions import DumpError
57
@@ -12,9 +14,9 @@ def create_postgres_uri(self):
1214 raise DumpError ('A host name is required' )
1315
1416 dbname = self .settings .get ('NAME' ) or ''
15- user = self .settings .get ('USER' ) or ''
17+ user = quote ( self .settings .get ('USER' ) or '' )
1618 password = self .settings .get ('PASSWORD' ) or ''
17- password = ':{}' .format (password ) if password else ''
19+ password = ':{}' .format (quote ( password ) ) if password else ''
1820 if not user :
1921 password = ''
2022 else :
Original file line number Diff line number Diff line change 66import sys
77from dotenv import load_dotenv
88
9- test = len (sys .argv ) < 0 or sys .argv [1 ] == 'test'
9+ test = len (sys .argv ) <= 1 or sys .argv [1 ] == 'test'
1010if not test :
1111 load_dotenv ()
1212
Original file line number Diff line number Diff line change @@ -21,6 +21,14 @@ def setUp(self):
2121 self .connector .settings ['NAME' ] = 'dbname'
2222 self .connector .settings ['HOST' ] = 'hostname'
2323
24+ def test_user_password_uses_special_characters (self , mock_dump_cmd ):
25+ self .connector .settings ['PASSWORD' ] = '@!'
26+ self .connector .settings ['USER' ] = '@'
27+
28+ self .connector .create_dump ()
29+
30+ self .assertIn ('postgresql://%40:%40%21@hostname/dbname' , mock_dump_cmd .call_args [0 ][0 ])
31+
2432 def test_create_dump (self , mock_dump_cmd ):
2533 dump = self .connector .create_dump ()
2634 # Test dump
You can’t perform that action at this time.
0 commit comments