a ze%@sddlZddlZddlZddlmZmZmZddlmZddlm Z z ddl Z Wne yfdZ Yn0z ddl Z Wne ydZ Yn0e dGdddejZGdd d ejZee d Gd d d ejZed kredS)N)BytesIOStringIO TextIOWrapper)mock)supportz os.environc@s$eZdZddZddZddZdS)GetpassGetuserTestcCs d}||j_||tdS)N some_name)get return_value assertEqualgetpassgetuser)selfenviron expected_namerE/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_getpass.py%test_username_takes_username_from_envsz8GetpassGetuserTest.test_username_takes_username_from_envcCsFd|j_z tWnty&Yn0||jjdddDdS)NcSsg|]}t|qSr)rcall).0xrrr !zMGetpassGetuserTest.test_username_priorities_of_env_values..)ZLOGNAMEZUSERZLNAMEUSERNAME)r r r r ImportErrorr Zcall_args_list)rrrrr&test_username_priorities_of_env_valuess   z9GetpassGetuserTest.test_username_priorities_of_env_valuesc Csd}d|j_trtdb}td8}d|_|g|_||t|dWdn1sd0YWdq1s0Yn| t tjdS)Nrz os.getuidz pwd.getpwuid*) r r pwdrpatchr r r assert_called_once_with assertRaisesr)rrruidZgetpwrrrtest_username_falls_back_to_pwd#s Hz2GetpassGetuserTest.test_username_falls_back_to_pwdN)__name__ __module__ __qualname__rrr"rrrrrs rc@sPeZdZddZddZedddZeddd Zd d Z d d Z dS)GetpassRawinputTestcCs2tjtd}td}tjd||d|jdS)Nspec input_string some_promptinput)rMockrr _raw_inputflushr)rstreamr,rrr test_flushes_stream_after_prompt4s z4GetpassRawinputTest.test_flushes_stream_after_promptcCsTtd}d}td*}tj||d|j|Wdn1sF0YdS)Nr)r*z sys.stderrr+)rrrr r.writer)rr,promptstderrrrrtest_uses_stderr_as_default;s  z/GetpassRawinputTest.test_uses_stderr_as_default sys.stdincCs$d|j_tjtd|jdS)Nr)r0)readliner r r.rr)r mock_inputrrr test_uses_stdin_as_default_inputBsz4GetpassRawinputTest.test_uses_stdin_as_default_inputcCs2ttdd}d|j_tjd|d|jdS)Nascii)encodingu Hasło: )r3r0)rrr8r r r.r)rr9r0rrr#test_uses_stdin_as_different_localeHsz7GetpassRawinputTest.test_uses_stdin_as_different_localecCstd}|jttj|ddS)Nr+)rr EOFErrorr r.rr,rrrtest_raises_on_empty_inputPsz.GetpassRawinputTest.test_raises_on_empty_inputcCs td}|dtj|ddS)Nztest testr+)rr r r.r@rrrtest_trims_trailing_newlineTsz/GetpassRawinputTest.test_trims_trailing_newlineN) r#r$r%r1r5rrr:r=rArCrrrrr&2s  r&z!tests require system with termiosc@s4eZdZddZddZddZddZd d Zd S) UnixGetpassTestc Cstd}tdv}tdL}d|_t|dtjtjB||jd||jWdn1st0YWdn1s0YWdn1s0YdS)Nos.open io.FileIOio.TextIOWrapperz/dev/ttyzw+) rrr r unix_getpassrosO_RDWRO_NOCTTY)ropenfileiotextiorrrtest_uses_tty_directlyas  z&UnixGetpassTest.test_uses_tty_directlyc Cstd}tdtdtdj}td@}d|_gd}t||_t|dtj|Wdn1s0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YdS)NrErFrGtermios.tcgetattrtermios.tcsetattr)rSrSrSrS)rrr listr rHassert_called_withANY)rrLZ tcgetattr tcsetattrZ fake_attrsrrrtest_resets_termiosos   z#UnixGetpassTest.test_resets_termiosc Cs2td}td}td}tdtdf}td<}d|_t|_tj|_t| d|jWdn1s0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YWdn1s$0YdS) NrErFrGrPrQzgetpass.fallback_getpassrRz Password: ) rrr rtermioserror side_effectr rHr)rrLrMrNrWfallbackrrr-test_falls_back_to_fallback_if_termios_raises{s,z=UnixGetpassTest.test_falls_back_to_fallback_if_termios_raisesc Cstd}tdtdtdbtd8d|_tjtd}tj|d|jWdn1sx0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YdS) NrErFrGrPrQrRr'r7) rrr r-rr rHr/rU)rrLZ mock_streamrrrtest_flushes_stream_after_inputs   z/UnixGetpassTest.test_flushes_stream_after_inputc Cstd}tjdtd}t|_t|j_tD}| t j t Wdn1s^0YWdn1s|0Y|j |d||d|Wdn1s0YWdn1s0YdS)NrEr6r'Warningz Password:)rrrIOErrorr[AttributeErrorfilenorZcaptured_stderrZ assertWarnsr ZGetPassWarningrHr8rZassertIngetvalue)rZos_openstdinr4rrrtest_falls_back_to_stdins   D z(UnixGetpassTest.test_falls_back_to_stdinN)r#r$r%rOrXr]r^rerrrrrD^s   rD__main__)r rIZunittestiorrrrrBrrYrrrZTestCaserr&Z skipUnlessrDr#mainrrrrs(         , C