
    \e;                        d dl Zd dlZd dlZd dlmZ d dlZd dlmZ	 d dl
Z
d dlmZ d dlmZ e
j                  Z G d de	j                         Z G d d	e	j                         Zej'                           G d
 de	j                         Z G d dej*                  j,                        Z G d de      Z G d de	j                         Z G d de	j                         Z G d de	j                         Z G d de	j                         Z G d de	j                         Zej                   G d de	j                                Zy)    N)mock)base)strutils)unitsc                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)StrUtilsTestc                     | j                  t        j                  d             | j                  t        j                  d             y )NTF
assertTruer   bool_from_stringassertFalseselfs    @/usr/lib/python3/dist-packages/oslo_utils/tests/test_strutils.pytest_bool_bool_from_stringz'StrUtilsTest.test_bool_bool_from_string!   s2    11$782259:    c                     | j                  t        j                  dd             | j                  t        j                  dd             y )N T)defaultwibbleFr
   r   s    r   "test_bool_bool_from_string_defaultz/StrUtilsTest.test_bool_bool_from_string_default%   s6    11"dCD228UKLr   c                 4	   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d	                   | j                  t        j                   |d
                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   | j                  t        j                   |d                   y )NtrueTRUEonOnyesYESyEs1TtYyfalseFALSEoffOFFno042zThis should not be TrueFfNnz 1 z true z 0 z false r
   )r   cs     r   _test_bool_from_stringz#StrUtilsTest._test_bool_from_string)   s   11!F)<=11!F)<=11!D':;11!D':;11!E(;<11!E(;<11!E(;<11!C&9:11!C&9:11!C&9:11!C&9:11!C&9:221W:>?221W:>?221U8<=221U8<=221T7;<221S6:;221T7;<221244 5 	6221S6:;221S6:;221S6:;221S6:; 	11!E(;<11!H+>?221U8<=221Y<@Ar   c                 (    | j                  d        y )Nc                     | S N )ss    r   <lambda>z4StrUtilsTest.test_bool_from_string.<locals>.<lambda>L   s    a r   )r1   r   s    r   test_bool_from_stringz"StrUtilsTest.test_bool_from_stringK   s    ##K0r   c                    | j                  t               | j                  t        j                  dd             | j                  t        t        j                  dd      }d}| j                  |t        |             y )Nu   使用FstrictTu{   Unrecognized value '使用', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes')r1   strr   r   r   assertRaises
ValueErrorassertEqual)r   excexpected_msgs      r   test_unicode_bool_from_stringz*StrUtilsTest.test_unicode_bool_from_stringN   sl    ##C(228EJK
H,E,E (   73 	s3x0r   c                     | j                  t        j                  d              | j                  t        j                  t        j                                      y r4   )r   r   r   r   Mockr   s    r   test_other_bool_from_stringz(StrUtilsTest.test_other_bool_from_stringY   s:    2248922499;?@r   c                 $   | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             y )N   r      r
   r   s    r   test_int_bool_from_stringz&StrUtilsTest.test_int_bool_from_string]   sd    11!45222672215622156r   c                 X   | j                  t        t        j                  d d      }d}| j	                  |t        |             | j                  t        j                  dd             | j                  t        t        j                  dd      }d}| j	                  |t        |             | j                  t        t        j                  dd      }d}| j	                  |t        |             | j                  t        j                  d	d             | j                  t        j                  d
d             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             | j                  t        j                  dd             dD ])  }| j                  t        t        j                  |d       + y )NTr:   zyUnrecognized value 'None', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'OtherFzzUnrecognized value 'Other', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'rI   zvUnrecognized value '2', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'r-   r%   r'   r/   r)   r*   r    )OoLlIi)r=   r>   r   r   r?   r<   r   r   )r   r@   rA   chars       r   test_strict_bool_from_stringz)StrUtilsTest.test_strict_bool_from_stringd   s   
H,E,Et'+   -3 	s3x0 	2275IJ
H,E,Ew'+   -3 	s3x0 
H,E,Eq'+   -3 	s3x0 	223tDE2274HI225FG223tDE224EF223tDE11#dCD 3 	+Dj(*C*CT%)  +	+r   c                     | j                  dt        j                  d             | j                  dt        j                  d             y )NrG   Tr   F)r?   r   int_from_bool_as_stringr   s    r   test_int_from_bool_as_stringz)StrUtilsTest.test_int_from_bool_as_string   s8    H<<TBCH<<UCDr   c                 d   | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d	             | j                  t        j                  d
             | j                  t        j                  d             | j                  t        j                  d             y )Nr   r%   r   r)   r$   r/   r    r*   rG   r   maybezonly on tuesdays)r   r   is_valid_boolstrr   r   s    r   test_is_valid_boolstrz"StrUtilsTest.test_is_valid_boolstr   s   11&9:11':;11%8911$7811#6711#6711#6711#6711!4511!45227;<223EFGr   c                 $   t         j                  }| j                  t        |d       | j	                  d |d             | j	                  d |d             | j	                  d |d             | j	                  d |d             | j	                  d	 |d
             | j	                  d |d             | j	                  d |d             | j	                  d |dj                  d                   | j	                  d |dd             y )NThelloz	two-wordsz	Two Wordszma-any-spa-ce-eszMa-any	 spa--ce- es
excamationzexc!amation!	ampserandz&ampser$and
ju5tnum8erzstrip-z	 strip - percheu	   perchÃ©zlatin-1strangeu	   strangeignore)errors)r   to_slugr=   	TypeErrorr?   encode)r   re   s     r   test_slugifyzStrUtilsTest.test_slugify   s    "")Wd3''"23gk&:;+ !78	:w~'>?gm&<=w|'<=7;#78 !7!7	!BC	E x@	Br   N)__name__
__module____qualname__r   r   r1   r8   rB   rE   rJ   rT   rW   r[   rh   r5   r   r   r   r      sA    ;M BD1	1A7(+TEHBr   r   c                      e Zd Zd ed      fd ed      fd ed      fd edd	
      fgZd ed      fd ed      fd ed      fd edd	      fgZd ed      fd ed      fd ed      fd edd	      fd ed d	      fd! ed"d	      fgZd# ed$      fd% ed%$      fd& ed&$      fd' ed'$      fd( ed($      fd) ed)$      fd* ed*$      fd+ ed+$      fd, ed,$      fd- ed-$      fd. ed.$      fd/ ed/$      fd0 ed0$      fd1 ed1$      fd2 ed2$      fd3 ed3$      fd4 ed4$      fd5 ed5$      fd6 ed6$      fd7 ed7$      fd8 ed8$      fd9 ed9$      fd: ed;d	<      fgZd= ed=>      fd? ed?>      fd; ed;>      fd@ edAd	B      fgZdC edDE      fdF ed	E      fgZ	e
dG        ZdH ZyI)JStringToBytesTestsiSI)unit_systemiecIECmixedinvalid_unit_systemKKKT)rp   assert_errorno_signr   )signpositive+negative-invalid_sign~)rx   rv   integer79)	magnitudedecimalz7.9decimal_point_startz.9decimal_point_endz79.)r   rv   invalid_literalz7.9.9garbage_valueasdfno_unit_prefix)unit_prefixkKMGr!   PEZr#   RQKiMiGiTiPiEiZiYiRiQiinvalid_unit_prefixB)r   rv   b)unit_suffixbitinvalid_unit_suffixKg)r   rv   
return_decF)
return_intr   c                     t        j                  | j                  | j                  | j                  | j
                  | j                  | j                        | _        y r4   )	testscenariosmultiply_scenarios_unit_system_sign
_magnitude_unit_prefix_unit_suffix_return_int	scenarios)clss    r   generate_scenariosz$StringToBytesTest.generate_scenarios   sD    %889I9I9<9<9<9I9I9<9I9I9<Jr   c                 f   d }d }dj                  | j                  | j                  | j                  | j                  g      }| j
                  dk(  xr, | j                  dk(  xs | j                  j                  d      }| j
                  dk(  xr | j                  dk(  }t        | d	d
      s|s|r=| j                  t        t        j                  || j
                  | j                         y  || j                  | j                  | j                        } || j                  | j
                        }||z  }t        j                  || j
                  | j                        }	| j                  r/| j                  |	t        t        j                   |                   y | j#                  |	|       y )Nc                 6    t        | |      }|dv r|dz  }|S )N)r   r      )float)rx   r   r   ress       r   _get_quantityz=StringToBytesTest.test_string_to_bytes.<locals>._get_quantity   s'    $	23Cl*qJr   c                     | sy|dk(  rt        t        |       }|S |dk(  r8| j                  d      rt        t        |       }|S t        t        d| z        }|S |dk(  r| dk(  rd} t        t        |       }S )	NrG   ro   rr   rR   z%sirs   r   r   )getattrr   endswith)r   rp   r   s      r   _get_constantz=StringToBytesTest.test_string_to_bytes.<locals>._get_constant  s    $e[1 J %'',!%5C J "%)<=C J '
 #%"%Ke[1Jr   r   ro   r   rR   rr   r   rv   F)rp   r   )joinrx   r   r   r   rp   r   r   r=   r>   r   string_to_bytesr   r?   intmathceilassertAlmostEqual)
r   r   r   texterr_sierr_iecquantityconstantexpectedactuals
             r   test_string_to_bytesz&StringToBytesTest.test_string_to_bytes   sw   		( ww		4>>43C3C((* +!!T) Ot/?/?3/F 0N/3/?/?/H/H/M 	""e+G0@0@C0G4/6Wj(*B*B"0@0@)-  :  DNND<L<LM !1!143C3CDh&))$D<L<L59__F??VS8)<%=>""684r   N)ri   rj   rk   dictr   r   r   r   r   r   classmethodr   r   r5   r   r   rm   rm      s    
t%&	'(	$7+,	T JK	L 
DbM"	Ts^$	Ts^$	3T:;	E 
D4()	D5)*	t 45	dUFG	D7FG	$dCDJ 
4B/0	ds#$	ds#$	ds#$	ds#$	ds#$	ds#$	ds#$	ds#$	ds#$	ds#$	ds#$	t%&	t%&	t%&	t%&	t%&	t%&	t%&	t%&	t%&	t%&	4 HI/L6 
ds#$	'(	ds#$	D IJ	L 
tu-.	tt,-K
 J J.5r   rm   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
MaskPasswordTestCasec                 V    d}d}| j                  |t        j                  |             y )Nzx
        Namespace(passcode='', username='', password='my"password',
        profile='', verify=None, token='')
        zs
        Namespace(passcode='', username='', password='***',
        profile='', verify=None, token='***')
        r?   r   mask_passwordr   payloadr   s      r   test_namespace_objectsz+MaskPasswordTestCase.test_namespace_objects0  s-     	8#9#9'#BCr   c                     t         j                  D cg c]  }|j                          }}d}| j                  t         j                  ||       y c c}w )Nz)The _SANITIZE_KEYS must all be lowercase.)r   _SANITIZE_KEYSlowerr?   )r   r   loweredmessages       r   test_sanitize_keysz'MaskPasswordTestCase.test_sanitize_keys;  sC    &.&=&=>1779>>=00'7C ?s   Ac                 b   d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d	}d
}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d }| j                  |t        j                  |             d!}d"}| j                  |t        j                  |             d#}d$}| j                  |t        j                  |             d%}d&}| j                  |t        j                  |             d'}d(}| j                  |t        j                  |             d)}d*}| j                  |t        j                  |             d+}d,}| j                  |t        j                  |             d-}d.}| j                  |t        j                  |             y )/N{'adminPass':'TL0EfN33'}{'adminPass':'***'}z{ 'adminPass' : 'TL0EfN33' }z{ 'adminPass' : '***' }z{'admin_pass':'TL0EfN33'}z{'admin_pass':'***'}z{ 'admin_pass' : 'TL0EfN33' }z{ 'admin_pass' : '***' }z{'admin_password':'TL0EfN33'}z{'admin_password':'***'}z!{ 'admin_password' : 'TL0EfN33' }z{ 'admin_password' : '***' }z{'password':'TL0EfN33'}z{'password':'***'}z{ 'password' : 'TL0EfN33' }z{ 'password' : '***' }z{'auth_password':'TL0EfN33'}z{'auth_password':'***'}z { 'auth_password' : 'TL0EfN33' }z{ 'auth_password' : '***' }z{'secret_uuid':'myuuid'}z{'secret_uuid':'***'}z{ 'secret_uuid' : 'myuuid' }z{ 'secret_uuid' : '***' }z{'token':'token'}{'token':'***'}z{ 'token' : 'token' }z{ 'token' : '***' }z{ 'fernetkey' : 'token' }z{ 'fernetkey' : '***' }z{ 'FernetKey' : 'token' }z{ 'FernetKey' : '***' }z{ 'sslkey' : 'token' }z{ 'sslkey' : '***' }z{ 'SslKey' : 'token' }z{ 'SslKey' : '***' }z{ 'passphrase' : 'token' }z{ 'passphrase' : '***' }z{ 'PassPhrase' : 'token' }z{ 'PassPhrase' : '***' }z"{ 'KeystoneFernetKey1' : 'token' }z { 'KeystoneFernetKey1' : '***' }z${ 'OctaviaCaKeyPassword' : 'token' }z"{ 'OctaviaCaKeyPassword' : '***' }z&{ 'OctaviaCaKeyPassphrase' : 'token' }z${ 'OctaviaCaKeyPassphrase' : '***' }r   r   s      r   	test_jsonzMaskPasswordTestCase.test_jsonA  sW   0,8#9#9'#BC408#9#9'#BC1-8#9#9'#BC518#9#9'#BC518#9#9'#BC958#9#9'#BC/+8#9#9'#BC3/8#9#9'#BC408#9#9'#BC848#9#9'#BC0.8#9#9'#BC428#9#9'#BC)(8#9#9'#BC-,8#9#9'#BC108#9#9'#BC108#9#9'#BC.-8#9#9'#BC.-8#9#9'#BC218#9#9'#BC218#9#9'#BC ;98#9#9'#BC<;8#9#9'#BC>=8#9#9'#BCr   c                    d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d	}d}| j                  |t        j                  |             d
}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             y )Nz<adminPass>TL0EfN33</adminPass>z<adminPass>***</adminPass>zN<adminPass>
                        TL0EfN33
                     </adminPass>z!<admin_pass>TL0EfN33</admin_pass>z<admin_pass>***</admin_pass>zP<admin_pass>
                        TL0EfN33
                     </admin_pass>z)<admin_password>TL0EfN33</admin_password>z$<admin_password>***</admin_password>zX<admin_password>
                        TL0EfN33
                     </admin_password>z<password>TL0EfN33</password>z<password>***</password>zL<password>
                        TL0EfN33
                     </password>z<Password1>TL0EfN33</Password1>z<Password1>***</Password1>r   r   s      r   test_xmlzMaskPasswordTestCase.test_xml  s_   738#9#9'#BC% 48#9#9'#BC958#9#9'#BC& 68#9#9'#BCA=8#9#9'#BC* >8#9#9'#BC518#9#9'#BC$ 28#9#9'#BC738#9#9'#BCr   c                    d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d	}d
}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             y )NzadminPass='TL0EfN33'zadminPass='***'zadminPass = 'TL0EfN33'zadminPass = '***'zadminPass = "TL0EfN33"zadminPass = "***"zadmin_pass='TL0EfN33'zadmin_pass='***'zadmin_pass = 'TL0EfN33'zadmin_pass = '***'zadmin_pass = "TL0EfN33"zadmin_pass = "***"zadmin_password='TL0EfN33'zadmin_password='***'zadmin_password = 'TL0EfN33'zadmin_password = '***'zadmin_password = "TL0EfN33"zadmin_password = "***"zpassword='TL0EfN33'zpassword='***'zpassword = 'TL0EfN33'zpassword = '***'zpassword = "TL0EfN33"zpassword = "***"r   r   s      r   test_xml_attributez'MaskPasswordTestCase.test_xml_attribute  s   ,(8#9#9'#BC.*8#9#9'#BC/+8#9#9'#BC-)8#9#9'#BC/+8#9#9'#BC0,8#9#9'#BC1-8#9#9'#BC3/8#9#9'#BC408#9#9'#BC+'8#9#9'#BC-)8#9#9'#BC.*8#9#9'#BCr   c                 L   d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             y )	Nz2body: {"changePassword": {"adminPass": "1234567"}}z.body: {"changePassword": {"adminPass": "***"}}z+body: {"rescue": {"admin_pass": "1234567"}}z'body: {"rescue": {"admin_pass": "***"}}z/body: {"rescue": {"admin_password": "1234567"}}z+body: {"rescue": {"admin_password": "***"}}z)body: {"rescue": {"password": "1234567"}}z%body: {"rescue": {"password": "***"}}r   r   s      r   test_json_messagez&MaskPasswordTestCase.test_json_message   s    JG8#9#9'#BCC@8#9#9'#BCGD8#9#9'#BCA>8#9#9'#BCr   c                 L   d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             y )	Nae  <?xml version="1.0" encoding="UTF-8"?>
<rebuild
    xmlns="http://docs.openstack.org/compute/api/v1.1"
    name="foobar"
    imageRef="http://openstack.example.com/v1.1/32278/images/70a599e0-31e7"
    accessIPv4="1.2.3.4"
    accessIPv6="fe80::100"
    adminPass="seekr3t">
  <metadata>
    <meta key="My Server Name">Apache1</meta>
  </metadata>
</rebuild>aa  <?xml version="1.0" encoding="UTF-8"?>
<rebuild
    xmlns="http://docs.openstack.org/compute/api/v1.1"
    name="foobar"
    imageRef="http://openstack.example.com/v1.1/32278/images/70a599e0-31e7"
    accessIPv4="1.2.3.4"
    accessIPv6="fe80::100"
    adminPass="***">
  <metadata>
    <meta key="My Server Name">Apache1</meta>
  </metadata>
</rebuild>z<?xml version="1.0" encoding="UTF-8"?>
<rescue xmlns="http://docs.openstack.org/compute/api/v1.1"
    admin_pass="MySecretPass"/>zx<?xml version="1.0" encoding="UTF-8"?>
<rescue xmlns="http://docs.openstack.org/compute/api/v1.1"
    admin_pass="***"/>z<?xml version="1.0" encoding="UTF-8"?>
<rescue xmlns="http://docs.openstack.org/compute/api/v1.1"
    admin_password="MySecretPass"/>z|<?xml version="1.0" encoding="UTF-8"?>
<rescue xmlns="http://docs.openstack.org/compute/api/v1.1"
    admin_password="***"/>z<?xml version="1.0" encoding="UTF-8"?>
<rescue xmlns="http://docs.openstack.org/compute/api/v1.1"
    password="MySecretPass"/>zv<?xml version="1.0" encoding="UTF-8"?>
<rescue xmlns="http://docs.openstack.org/compute/api/v1.1"
    password="***"/>r   r   s      r   test_xml_messagez%MaskPasswordTestCase.test_xml_message  s     	8#9#9'#BC# 	8#9#9'#BC' 	8#9#9'#BC! 	8#9#9'#BCr   c                    d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |d             d}d	}| j                  |t        j                  |d
             d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |d             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}d}| j                  |t        j                  |             d}t        |      }d}| j                  |t        j                  |             d}t        |      }d}| j                  |t        j                  |             d }t        |      }d!}| j                  |t        j                  |             d"}d#}| j                  |t        j                  |             d$}d%}| j                  |t        j                  |             d&}d'}| j                  |t        j                  |             d(}d)}| j                  |t        j                  |             d*}d+}| j                  |t        j                  |             d,}d-}| j                  |t        j                  |             d.}d/}| j                  |t        j                  |             y )0Nztest = 'password'  :   'aaaaaa'ztest = 'password'  :   '111'111)secretzmysqld --password "aaaaaa"zmysqld --password "****"z****zmysqld --password aaaaaazmysqld --password ???z???zmysqld --password = "aaaaaa"zmysqld --password = "****"zmysqld --password = 'aaaaaa'zmysqld --password = '****'zmysqld --password = aaaaaazmysqld --password = ****ztest = password =   aaaaaaztest = password =   111ztest = password=   aaaaaaztest = password=   111ztest = password =aaaaaaztest = password =111ztest = password=aaaaaaztest = password=111z(test = "original_password" : "aaaaaaaaa"z"test = "original_password" : "***"ztest = "param1" : "value"z)test = "original_password" : "aaaaa"aaaa"r   r   z{'adminPass':'TL0E'fN33'}z{'token':'mytoken'}r   z<test = 'node.session.auth.password','-v','TL0EfN33','nomask'z7test = 'node.session.auth.password','-v','***','nomask'zGtest = 'node.session.auth.password', '--password', 'TL0EfN33', 'nomask'zBtest = 'node.session.auth.password', '--password', '***', 'nomask'z=test = 'node.session.auth.password', '--password', 'TL0EfN33'z8test = 'node.session.auth.password', '--password', '***'z4test = node.session.auth.password -v TL0EfN33 nomaskz/test = node.session.auth.password -v *** nomaskz<test = node.session.auth.password --password TL0EfN33 nomaskz7test = node.session.auth.password --password *** nomaskz5test = node.session.auth.password --password TL0EfN33z0test = node.session.auth.password --password ***"   test = cmd --password myépasstest = cmd --password ***)r?   r   r   r<   r   s      r   test_mask_passwordz'MaskPasswordTestCase.test_mask_password>  s   31!//F	H /-!//G	I -*!//F	H 1/!//G	I 1/!//G	I /-!//G	I /,!//F	H .+!//F	H ,)!//F	H +(!//F	H =78#9#9'#BC-.8#9#9'#BC=78#9#9'#BC0g,,8#9#9'#BC1g,,8#9#9'#BC+g,(8#9#9'#BC8#9#9'#BC*&8#9#9'#BC 8#9#9'#BCHD8#9#9'#BC8#9#9'#BCJF8#9#9'#BC</8#9#9'#BCr   N)ri   rj   rk   r   r   r   r   r   r   r   r   r5   r   r   r   r   .  s8    	DD]D~,D\0DdD.D`pDr   r   c                   4     e Zd ZdZ fdZd Zd Zd Z xZS )TestMappingz Test class for non-dict mappingsc                 >    t         t        |           ddd| _        y )Nshhhbarpasswordfoo)superr   __init__datar   	__class__s    r   r   zTestMapping.__init__  s    k4)+!'!	r   c                      | j                   |   S r4   )r   )r   keys     r   __getitem__zTestMapping.__getitem__  s    yy~r   c                 6    | j                   j                         S r4   )r   __iter__r   s    r   r   zTestMapping.__iter__  s    yy!!##r   c                 ,    t        | j                        S r4   )lenr   r   s    r   __len__zTestMapping.__len__  s    499~r   )	ri   rj   rk   __doc__r   r   r   r  __classcell__r   s   @r   r   r     s    *$r   r   c                   "     e Zd ZdZ fdZ xZS )NestedMappingz3Test class that contains an instance of TestMappingc                 L    t         t        |           dt               i| _        y )Nnested)r   r  r   r   r   r   s    r   r   zNestedMapping.__init__  s    mT+-{}-	r   )ri   rj   rk   r  r   r  r  s   @r   r  r    s    =. .r   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
MaskDictionaryPasswordTestCasec                    ddi}ddi}| j                  |t        j                  |             ddi}ddi}| j                  |t        j                  |             ddd}ddd}| j                  |t        j                  |             ddddd}ddddd}| j                  |t        j                  |             d	d
dddd}dd
dddd}| j                  |t        j                  |             ddi}ddi}| j                  |t        j                  |             dddii}dddii}| j                  |t        j                  |             dddii}dddii}| j                  |t        j                  |             y )Nr   TL0EfN33***z	TL0Ef"N33admin)userr   
somestring)strvaldictvalz--password abczthis is fines   TL0EfN33)r  dont_changer  z--password ***ipmi_passwordzKeDrahishvowphyecMornEm0or(	passwordsKeystoneFernetKey1c5FijjSkeystonecredential0r?   r   mask_dict_passwordr   s      r   test_dictionaryz.MaskDictionaryPasswordTestCase.test_dictionary  s   z*&!44W=	? {+&!44W=	? #
;#7!44W=	? *'.JGI*(/UCE!44W=	? ."0'.KHJ /#1(/UCE 	!44W=	? #$AB#U+!44W=	? !5y AB"6!>?!44W=	? !6	 BC"7!?@!44W=	?r   c                     i }i }| j                  |t        j                  |             ddd}ddd}| j                  |t        j                  |             y )N	somevalueanothervalue)somekey
anotherkeyr  r   s      r   test_do_no_harmz.MaskDictionaryPasswordTestCase.test_do_no_harm  sd    !44W=	? *!/1*"02!44W=	?r   c                 |    i }d|d<   |j                         }| j                  |t        j                  |             y )NrI   rG   )copyr?   r   r  r   s      r   test_do_an_intz-MaskDictionaryPasswordTestCase.test_do_an_int  s9    
<<>!44W=	?r   c                 ^    ddi}ddi}| j                  |t        j                  |             y )Nr  r   r   r  r   s      r   test_mask_valuesz/MaskDictionaryPasswordTestCase.test_mask_values  s6    HI:;!44W=	?r   c           	          ddddddddd	gd d
d}ddddddddd	gd d
d}| j                  |t        j                  |             y )N	DK0PK1AK3Tmeow
*aa38skdjfcatr   皙?{   rG   rI   r   r   boolr   r   r   listnoner<   r  r  r   s      r   test_other_non_str_valuesz8MaskDictionaryPasswordTestCase.test_other_non_str_values  sl    *D#)|DaVT! !&t$*> q!fd " 	!44W=	?r   c           	          ddddddddd	gd
dd}t        j                  |      }t        j                  |       | j	                  ||       y
)z5Make sure that the argument passed in is not modifiedr(  Tr)  r*  r+  r-  r.  rG   rI   Nr   r/  )r#  deepcopyr   r  r?   )r   r   pristines      r   test_argument_untouchedz6MaskDictionaryPasswordTestCase.test_argument_untouched!  sT    *D#)|DaVT! ==)##G,7+r   c                 l    ddd}t               }| j                  |t        j                  |             y )Nr  r   r   )r   r?   r   r  r   r   r   s      r   test_non_dictz,MaskDictionaryPasswordTestCase.test_non_dict,  s3     %  -8#>#>w#GHr   c                 p    ddddi}t               }| j                  |t        j                  |             y )Nr  r  r   r   )r  r?   r   r  r9  s      r   test_nested_non_dictz3MaskDictionaryPasswordTestCase.test_nested_non_dict3  s:    5&+!   /8#>#>w#GHr   N)ri   rj   rk   r  r!  r$  r&  r3  r7  r:  r<  r5   r   r   r
  r
    s-    -?^???
?	,IIr   r
  c                       e Zd Zd Zd Zy)IsIntLikeTestCasec                 $   | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             y )NrG   r    514r*   )r   r   is_int_liker   s    r   test_is_int_like_truez'IsIntLikeTestCase.test_is_int_like_true=  s^    ,,Q/0,,S12,,U34,,S12r   c                    | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d              | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d             | j                  t        j                  d	             | j                  t        j                  d
             | j                  t        j                  d             | j                  t        j                  d             y )Ng?z1.1z1.1.1z0.aaaaaaz....1gz$0cc3346e-9fef-4445-abe6-5d2b2690ec64a112e30o51
0xDEADBEEF)r   r   rA  r   s    r   test_is_int_like_falsez(IsIntLikeTestCase.test_is_int_like_falseC  sL   --c23--e45--g67--d34--d34--h78--f56--d34  !GH	J--d34--f56--f56--l;<r   N)ri   rj   rk   rB  rJ  r5   r   r   r>  r>  <  s    3=r   r>  c                       e Zd Zd Zd Zy)StringLengthTestCasec                    | j                  t        j                  ddd             | j                  t        t        j                  ddd       | j                  t        t        j                  ddd       | j                  t
        t        j                  d	dd       | j                  t
        t        j                  t               dd       y )
Ntestname   
max_lengthr   rG   
min_length   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   assertIsNoner   check_string_lengthr=   r>   rf   r   r   s    r   test_check_string_lengthz-StringLengthTestCase.test_check_string_lengthW  s    (66 &S: 	;*"66f 	 	4 	*"66#V 	 	= 	)"66f 	 	6 	)"66&&S 	 	:r   c                    | j                  t        j                  dd             | j                  t        t        j                  dd       | j                  t        t        j                  dd       | j                  t
        t        j                  dd       | j                  t
        t        j                  t               d       y )	NrN  rP  rQ  r   rG   rS  rU  rV  rW  r   s    r   test_check_string_length_nonamez4StringLengthTestCase.test_check_string_length_nonameg  s    (66 S2 	3*"66 	 	, 	*"66# 	 	5 	)"66 	 	. 	)"66&S 	 	2r   N)ri   rj   rk   rZ  r\  r5   r   r   rL  rL  V  s    : 2r   rL  c                       e Zd Zd Zd Zd Zy)SplitPathTestCasec                    | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d	d
       | j                  t        t        j                  d	d
d       | j                  t        t        j                  d	d
dd       | j                  t        t        j                  ddd       | j                  t        t        j                  d	dd       y )Nr   /z//z//a/a/cz//c/a/c/z/a///arI      T/a/c/o/r      )r=   r>   r   
split_pathr   s    r   test_split_path_failedz(SplitPathTestCase.test_split_path_failedy  sN   *h&9&92>*h&9&93?*h&9&94@*h&9&95A*h&9&96B*h&9&95A*h&9&97C*h&9&96B*h&9&94C*h&9&94AF*h&9&94AtL*h&9&9:q!L*h&9&94AFr   c                    | j                  t        j                  d      dg       | j                  t        j                  d      dg       | j                  t        j                  dd      ddg       | j                  t        j                  dd      g d	       | j                  t        j                  d
ddd      g d       | j                  t        j                  dddd      g d       | j                  t        j                  dd      ddg       | j                  t        j                  ddd      g d       y )Nrc  az/a/ra  rI   r0   z/a/c/ord  )rk  r0   rN   re  T)rk  r0   zo/r)rk  r0   Nrb  )rk  r0   r   )r?   r   rh  r   s    r   test_split_path_successz)SplitPathTestCase.test_split_path_success  s   ,,T2SE:,,U3cU;,,VQ7#sD,,Xq9?K,,ZAtD*	,,,VQ4@)	+,,Wa83*E,,Wa;^Lr   c                 (   	 t        j                  dd       	 t        j                  dddd       y # t        $ r%}| j                  t	        |      d       Y d }~Cd }~ww xY w# t        $ r%}| j                  t	        |      d       Y d }~y d }~ww xY w)Nzo
n erI   zInvalid path: o%0An%20erd  T)r   rh  r>   r?   r<   )r   errs     r   test_split_path_invalid_pathz.SplitPathTestCase.test_split_path_invalid_path  s    	B!,	B!Q5  	BSX'@AA	B  	BSX'@AA	Bs+   2 A# 	A AA #	B,BBN)ri   rj   rk   ri  rl  ro  r5   r   r   r^  r^  x  s    G
MBr   r^  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
SplitByCommasc                 N    | j                  t        t        j                  d       y )Nz	"ab","b""r=   r>   r   split_by_commasr   s    r   test_not_closed_quotesz$SplitByCommas.test_not_closed_quotes  s    *h&>&>Lr   c                 N    | j                  t        t        j                  d       y )Nz"ab""b"rs  r   s    r   #test_no_comma_before_opening_quotesz1SplitByCommas.test_no_comma_before_opening_quotes  s    *h&>&>	Jr   c                 N    | j                  t        t        j                  d       y )Nza"b,cdrs  r   s    r   test_quote_inside_unquotedz(SplitByCommas.test_quote_inside_unquoted  s    *h&>&>Ir   c                 N    | j                  |t        j                  |             y r4   )r?   r   rt  )r   expectinputs      r   checkzSplitByCommas.check  s    !9!9%!@Ar   c                 ,    | j                  ddgd       y )Nza,bacz"a,b",acr}  r   s    r   
test_plainzSplitByCommas.test_plain  s    

E4=*-r   c                 ,    | j                  g dd       y )N)zabc"dezfg,hzklm\z"nopz#"abc\"","de","fg,h","klm\\","\"nop"r  r   s    r   !test_with_backslash_inside_quotedz/SplitByCommas.test_with_backslash_inside_quoted  s    

:9	;r   c                 ,    | j                  ddgd       y )Nza\bcr  za\bc,der  r   s    r   #test_with_backslash_inside_unquotedz1SplitByCommas.test_with_backslash_inside_unquoted  s    

GT?J/r   c                 ,    | j                  ddgd       y )Nza"b""cdz"a\"b\"\"c",dr  r   s    r   -test_with_escaped_quotes_in_row_inside_quotedz;SplitByCommas.test_with_escaped_quotes_in_row_inside_quoted  s    

Hc?$45r   N)ri   rj   rk   ru  rw  ry  r}  r  r  r  r  r5   r   r   rq  rq    s.    MKJB.;06r   rq  c                   (   e Zd Zej                   ej
                  dddddddddddddd	dddd
dd	dddddddddd      d               Zej                   ej
                  ddddddddddddddd ed      ddd      d                Zy!)"ValidateIntegerTestCase*   answer)valuerO  outputr+   7lucky   r   )r  rO  r  	min_value	max_value   i,  zSpartaaa!!!)r  rO  r  r  300)r  rO  r  r  c                 R    | j                  t        j                  ||fi ||       y r4   )r?   r   validate_integer)r   r  r  rO  kwargss        r   test_valid_inputsz)ValidateIntegerTestCase.test_valid_inputs  s/     	225$ =5;=>D	Fr   zim-not-an-intr   )r  rO  gQ	@Pie299zSparta no-show)r  rO  r  r  7   zdoing 55 in a 546   )r  rO  r     UnicodeErrori  c                 T     | j                   t        t        j                  ||fi | y r4   )r=   r>   r   r  )r   r  rO  r  s       r   test_invalid_inputsz+ValidateIntegerTestCase.test_invalid_inputs  s+     	*h&?&?	1)/	1r   N)	ri   rj   rk   ddtunpackr   r  chrr  r5   r   r   r  r    s     	ZZSXXH;h"=WA/7aA/]c!}!	"F	" F 	ZZSXX4e,'7c3$6 C. "#1# 1r   r  )collections.abccollectionsr#  r   unittestr   r  oslotestr   	test_baser   
oslo_utilsr   r   load_tests_apply_scenarios
load_testsBaseTestCaser   rm   r   r   abcMappingr   r  r
  r>  rL  r^  rq  r  r5   r   r   <module>r     s(        
 &   55
PB9)) PBfv5	.. v5r  $ $ &@D911 @DF+//)) $.K .oIY%;%; oId=	.. =42911 2D$B	.. $BN6I** 66 1i44 1 	1r   