
    $                        S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJ	r	  SSK
Jr  SSKJs  Jr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  \R0                  " S5      r\R0                  " S5      r\R0                  " S5      rSr\" S5       " S S\R:                  5      5       r " S S\R>                  5      r  " S S\5      r!g)z)Integration tests for the webcfg command.    )absolute_import)print_function)division)unicode_literalsN)mock)web)	SkipForS3)ObjectToURI)SetBotoConfigForTest)SetEnvironmentForTest)	shim_utilz2{"notFoundPage": "404", "mainPageSuffix": "main"}
z{"mainPageSuffix": "main"}
z{"notFoundPage": "404"}
zhas no website configurationz2Web set not supported for S3, web get returns XML.c                   F    \ rS rSrSrSS/rSS/rS rS rS r	S	 r
S
 rSrg)TestWeb(   z&Integration tests for the web command.r   setgetc           
         U R                  5       nU R                  U R                  SSSS[        U5      /-   5        U R                  U R                  [        U5      /-   SS9nU R                  [        R                  " U5      [        5        g )N-mmain-e404Treturn_stdout)	CreateBucket	RunGsUtil_set_web_cmdsuri_get_web_cmdassertEqualjsonloadsWEBCFG_FULLself
bucket_uristdouts      'platform/gsutil/gslib/tests/test_web.py	test_fullTestWeb.test_full/   s    ""$JNN	vtUD$45	67 ^^D--j1A0BB*.  0FTZZ'5    c                    U R                  5       nU R                  U R                  SS[        U5      /-   5        U R                  U R                  [        U5      /-   SS9nU R                  [        R                  " U5      [        5        g )Nr   r   Tr   )	r   r   r   r   r   r   r    r!   WEBCFG_MAINr#   s      r'   	test_mainTestWeb.test_main8   sy    ""$JNN4$$fd:6F'GGH^^D--j1A0BB*.  0F 	TZZ'5r*   c                    U R                  5       nU R                  U R                  SS[        U5      /-   5        U R                  U R                  [        U5      /-   SS9nU R                  [        R                  " U5      [        5        g )Nr   r   Tr   )	r   r   r   r   r   r   r    r!   WEBCFG_ERRORr#   s      r'   
test_errorTestWeb.test_error@   sw    ""$JNN4$$eT*5E'FFG^^D--j1A0BB*.  0FTZZ'6r*   c                     U R                  5       nU R                  U R                  [        U5      /-   5        U R                  U R                  [        U5      /-   SS9nU R                  [        U5        g )NTr   )r   r   r   r   r   assertInWEBCFG_EMPTYr#   s      r'   
test_emptyTestWeb.test_emptyG   sh    ""$JNN4$$Z(8'99:^^D--j1A0BB*.  0FMM,'r*   c                     U R                  U R                  SSS9nU R                  SU5        U R                  U R                  SSS9nU R                  SU5        U R                  S/SSS9nU R                  SU5        g)z1Ensures web commands fail with too few arguments.T   )return_stderrexpected_statuszcommand requires at leastr   N)r   r   r4   r   )r$   stderrs     r'   testTooFewArgumentsFails TestWeb.testTooFewArgumentsFailsN   s     ^^D--*.,-  /F 	MM-v6 ^^D--*.,-  /F 	MM-v6 ^^UG4^KFMM-v6r*    N)__name__
__module____qualname____firstlineno____doc__r   r   r(   r-   r1   r6   r=   __static_attributes__r?   r*   r'   r   r   (   s0    .,,667(7r*   r   c                   p   \ rS rSr\R
                  R                  \R                  S\R                  " 5       S9S 5       r
\R
                  R                  \R                  S\R                  " 5       S9S 5       r\R
                  R                  \R                  S\R                  " 5       S9S 5       rSrg	)
TestWebShima   _GetWeb)newc           	      n   [        SS/5         [        SSS.5         U R                  SSS/S	S
9nSR                  UR                  S   5      nU R                  SR                  [        R                  " S5      5      U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NGSUtiluse_gcloud_storageTruerM   hidden_shim_modedry_runrO   fake_dir(CLOUDSDK_CORE_PASS_CREDENTIALS_TO_GSUTILCLOUDSDK_ROOT_DIRr   r   gs://bucketTreturn_log_handler
infozGcloud Storage Command: {} storage buckets describe --format=gsutiljson[key=website_config,empty=' has no website configuration.',empty_prefix_key=storage_url] gs://bucket	r   r   
RunCommandjoinmessagesr4   formatr   _get_gcloud_binary_pathr$   mock_log_handler
info_liness      r'    test_shim_translates_get_command,TestWebShim.test_shim_translates_get_commandc   s    	GHJ 
K 6<)" 	  ??53
 ?C	 + D
 YY/88@A
 $V22:>@AK	M	
K 
K	 	
K 
K#   B&A'BB&
B#	B&&
B4_SetWebc           	      n   [        SS/5         [        SSS.5         U R                  S/ SQSS	9nS
R                  UR                  S   5      nU R                  SR                  [        R                  " S5      5      U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NrL   rP   rO   rS   rT   r   )r   r   r   r   r   rW   TrX   rZ   r[   znGcloud Storage Command: {} storage buckets update --web-error-page 404 --web-main-page-suffix main gs://bucketr\   rb   s      r'    test_shim_translates_set_command,TestWebShim.test_shim_translates_set_commandx   s    	GHJ 
K 6<)" 	  ??5 3
 ?C + D YY/88@A
MfY66zBCZ	Q	
K 
K	 	
K 
Krg   c           	      n   [        SS/5         [        SSS.5         U R                  SSS/S	S
9nSR                  UR                  S   5      nU R                  SR                  [        R                  " S5      5      U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NrL   rP   rO   rS   rT   r   r   rW   TrX   rZ   r[   zqGcloud Storage Command: {} storage buckets update --clear-web-error-page --clear-web-main-page-suffix gs://bucketr\   rb   s      r'   "test_shim_translates_clear_command.TestWebShim.test_shim_translates_clear_command   s    	GHJ 
K 6<)" 	  ??55-2H>B + DYY/88@A
 &'-v$<<ZH(J 		"	
K 
K	 	
K 
Krg   r?   N)r@   rA   rB   rC   r   patchobjectr   
WebCommandMockre   rj   rm   rE   r?   r*   r'   rG   rG   a   s    ::S^^YDIIK@M AM( ::S^^YDIIK@Q AQ, ::S^^YDIIK@" A"r*   rG   c                        \ rS rSrS/rS/rSrg)TestWebOldAlias   	setwebcfg	getwebcfgr?   N)r@   rA   rB   rC   r   r   rE   r?   r*   r'   rt   rt      s    ,,r*   rt   )"rD   
__future__r   r   r   r   r    osunittestr   gslib.commandsr   gslib.tests.testcaseteststestcase)gslib.tests.testcase.integration_testcaser	   gslib.tests.utilr
   r   r   r   gslib.utilsr   r!   r"   r,   r0   r5   GsUtilIntegrationTestCaser   ShimUnitTestBaserG   rt   r?   r*   r'   <module>r      s    0 & %  '  	   ' ' ? 0 1 2 !jjNOjj78zz56- ?@57h00 57 A57p="(++ ="@g r*   