
                             d Z ddlmZ ddlmc mZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddl
mZ  G d	 d
ej                        Zy)"Integration tests for pap command.    )absolute_importN)	SkipForGS)SkipForJSON)
SkipForXML)ObjectToURI)SetBotoConfigForTestc                       e Zd ZdZddgZddgZ ed      d        Z ed      d        Z ed      d        Z	 ed      d	        Z
 ed      d
        Z ed      d        Z ed      d        Zd Zd Zd Zd Zy)TestPublicAccessPreventionr   papsetgetz2Public access prevention only runs on GCS JSON APIc                 H    | j                         }| j                  |d       y )N	inherited)CreateBucket!VerifyPublicAccessPreventionValueself
bucket_uris     'platform/gsutil/gslib/tests/test_pap.pytest_off_on_default_bucketsz6TestPublicAccessPrevention.test_off_on_default_buckets!   s     ""$J**:{C    c                     | j                  dd      }| j                  |d       | j                  | j                  dt	        |      gz          | j                  |d       y )NenforcedT)public_access_preventionprefer_json_apir   )r   r   	RunGsUtil_set_pap_cmdsurir   s     r   #test_turning_off_on_enabled_bucketsz>TestPublicAccessPrevention.test_turning_off_on_enabled_buckets&   s]    ""J37 # 9J**:zBNN4$$T*5E'FFG**:{Cr   c                     | j                         }| j                  | j                  dt        |      gz          | j	                  |d       y )Nr   r   r   r   r   r   r   s     r   test_turning_onz*TestPublicAccessPrevention.test_turning_on/   sA    ""$JNN4$$
D4D'EEF**:zBr   c                    | j                         }| j                  | j                  dt        |      gz          | j	                  |d       | j                  | j                  dt        |      gz          | j	                  |d       y )Nr   r   r"   r   s     r   test_turning_on_and_offz2TestPublicAccessPrevention.test_turning_on_and_off5   sr    ""$JNN4$$
D4D'EEF**:zBNN4$$T*5E'FFG**:{Cr   c                 $   | j                         }| j                         }| j                  | j                  t        |      t        |      gz   d      }| j	                  |dt        |      z         | j	                  |dt        |      z         y )NT)return_stdoutz%s:\s+inherited)r   r   _get_pap_cmdr   assertRegex)r   bucket_uri1bucket_uri2stdouts       r   test_multiple_bucketsz0TestPublicAccessPrevention.test_multiple_buckets?   s    ##%K##%K^^	k	D-.	/  F 	V/${2CCDV/${2CCDr   zTesting XML only behaviorc                 "   g d}t        |      5  d}| j                  | j                  d|gz   dd      }| j                  d|       | j                  | j                  |gz   dd      }| j                  d|       d d d        y # 1 sw Y   y xY w)N))Credentialsgs_oauth2_refresh_tokenN)r/   gs_service_client_idN)r/   gs_service_key_fileN)r/   gs_service_key_file_passwordN)r/   gs_access_key_iddummykey)r/   gs_secret_access_keydummysecretzgs://any-bucket-namer   T   return_stderrexpected_statusz3command can only be with the Cloud Storage JSON API)r	   r   r   assertInr(   )r   boto_config_hmac_auth_onlyr   stderrs       r   test_xml_failsz)TestPublicAccessPrevention.test_xml_failsJ   s    	" 
8	9)j~~d//;
2KK,0./  1f mmI ~~d//:,>,0./  1f mmI 
:	9	9s   A,BBzTesting S3 only behaviorc                 r   | j                         }| j                  | j                  dt        |      gz   dd      }| j                  r| j                  d|       n| j                  d|       | j                  s>| j                  | j                  t        |      gz   dd      }| j                  d|       y y )Nr   Tr8   r9   zFlags disallowed for S3z(command can only be used for GCS Buckets)r   r   r   r   _use_gcloud_storager<   r(   )r   r   r>   s      r   test_s3_failsz(TestPublicAccessPrevention.test_s3_failse   s    ""$J^^D--($z*:;<*.,-  /F 
mm-v6
mm>G## ~~d//4
3C2DD,0./  1f mm>G $r   c                 d    | j                  | j                  dd      }| j                  d|       y NTr8   r9   command requires at least)r   r   r<   r   r>   s     r    test_set_too_few_arguments_failsz;TestPublicAccessPrevention.test_set_too_few_arguments_failsy   4    ^^D--*.,-  /F 	MM-v6r   c                 d    | j                  | j                  dd      }| j                  d|       y rD   )r   r(   r<   rF   s     r    test_get_too_few_arguments_failsz;TestPublicAccessPrevention.test_get_too_few_arguments_fails   rH   r   c                 R    | j                  dgdd      }| j                  d|       y )Nr   Tr8   r9   rE   r   r<   rF   s     r   test_no_subcommand_failsz3TestPublicAccessPrevention.test_no_subcommand_fails   s'    ^^UG4^KFMM-v6r   c                 T    | j                  g ddd      }| j                  d|       y )N)r   fakecommandtestTr8   r9   zInvalid subcommandrL   rF   s     r   test_invalid_subcommand_failsz8TestPublicAccessPrevention.test_invalid_subcommand_fails   s/    ^^:*.,-  /F 	MM&/r   N)__name__
__module____qualname____doc__r   r(   r   r   r    r#   r%   r-   r   r?   r   rB   rG   rJ   rM   rQ    r   r   r   r      s    *,,BCD DD BCD DD BCC DC
 BCD DD BCE DE *+ ,4 '(H )H&7770r   r   )rU   
__future__r   gslib.tests.testcaseteststestcase)gslib.tests.testcase.integration_testcaser   r   r   gslib.tests.utilr   r   r	   GsUtilIntegrationTestCaser   rV   r   r   <module>r^      s6    ) & ' ' ? A @ 0 1r0!C!C r0r   