
    $                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZddlm	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  ej0                  d      Z ej0                  d      Z ej0                  d      ZdZ ed       G d dej:                               Z G d dej>                        Z  G d de      Z!y)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                   >    e Zd ZdZddgZddgZd Zd Zd Zd Z	d	 Z
y
)TestWebz&Integration tests for the web command.r   setgetc           
      "   | j                         }| j                  | j                  ddddt        |      gz          | j                  | j                  t        |      gz   d      }| j                  t        j                  |      t               y )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_fullzTestWeb.test_full/   s    ""$JNN	vtUD$45	67 ^^D--j1A0BB*.  0FTZZ'5    c                    | j                         }| j                  | j                  ddt        |      gz          | j                  | j                  t        |      gz   d      }| j                  t        j                  |      t               y )Nr   r   Tr   )	r   r   r   r   r   r   r   r    WEBCFG_MAINr"   s      r&   	test_mainzTestWeb.test_main8   sy    ""$JNN4$$fd:6F'GGH^^D--j1A0BB*.  0F 	TZZ'5r(   c                    | j                         }| j                  | j                  ddt        |      gz          | j                  | j                  t        |      gz   d      }| j                  t        j                  |      t               y )Nr   r   Tr   )	r   r   r   r   r   r   r   r    WEBCFG_ERRORr"   s      r&   
test_errorzTestWeb.test_error@   sw    ""$JNN4$$eT*5E'FFG^^D--j1A0BB*.  0FTZZ'6r(   c                     | j                         }| j                  | j                  t        |      gz          | j                  | j                  t        |      gz   d      }| j                  t        |       y )NTr   )r   r   r   r   r   assertInWEBCFG_EMPTYr"   s      r&   
test_emptyzTestWeb.test_emptyG   sh    ""$JNN4$$Z(8'99:^^D--j1A0BB*.  0FMM,'r(   c                    | j                  | j                  dd      }| j                  d|       | j                  | j                  dd      }| j                  d|       | j                  dgdd      }| j                  d|       y)z1Ensures web commands fail with too few arguments.T   )return_stderrexpected_statuszcommand requires at leastr   N)r   r   r0   r   )r#   stderrs     r&   testTooFewArgumentsFailsz TestWeb.testTooFewArgumentsFailsN   s     ^^D--*.,-  /F 	MM-v6 ^^D--*.,-  /F 	MM-v6 ^^UG4^KFMM-v6r(   N)__name__
__module____qualname____doc__r   r   r'   r+   r.   r2   r8    r(   r&   r   r   (   s0    .,,667(7r(   r   c                   z   e Zd Zej                  j                  ej                  d ej                               d        Z	ej                  j                  ej                  d ej                               d        Z
ej                  j                  ej                  d ej                               d        Zy)TestWebShim_GetWeb)newc           	      ^   t        ddg      5  t        ddd      5  | j                  dddgd	
      }dj                  |j                  d         }| j                  dj                  t        j                  d            |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NGSUtiluse_gcloud_storageTruerD   hidden_shim_modedry_runrF   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messagesr0   formatr   _get_gcloud_binary_pathr#   mock_log_handler
info_liness      r&    test_shim_translates_get_commandz,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##B,_SetWebc           	      ^   t        ddg      5  t        ddd      5  | j                  dg dd	      }d
j                  |j                  d         }| j                  dj                  t        j                  d            |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrC   rG   rF   rJ   rK   r   )r   r   r   r   r   rN   TrO   rQ   rR   znGcloud Storage Command: {} storage buckets update --web-error-page 404 --web-main-page-suffix main gs://bucketrS   rY   s      r&    test_shim_translates_set_commandz,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r]   c           	      ^   t        ddg      5  t        ddd      5  | j                  dddgd	
      }dj                  |j                  d         }| j                  dj                  t        j                  d            |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrC   rG   rF   rJ   rK   r   r   rN   TrO   rQ   rR   zqGcloud Storage Command: {} storage buckets update --clear-web-error-page --clear-web-main-page-suffix gs://bucketrS   rY   s      r&   "test_shim_translates_clear_commandz.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r]   N)r9   r:   r;   r   patchobjectr   
WebCommandMockr\   r`   rb   r=   r(   r&   r?   r?   a   s    ::S^^YIDIIK@M AM( ::S^^YIDIIK@Q AQ, ::S^^YIDIIK@" A"r(   r?   c                       e Zd ZdgZdgZy)TestWebOldAlias	setwebcfg	getwebcfgN)r9   r:   r;   r   r   r=   r(   r&   rh   rh      s    ,,r(   rh   )"r<   
__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*   r-   r1   GsUtilIntegrationTestCaser   ShimUnitTestBaser?   rh   r=   r(   r&   <module>rw      s    0 & %  '  	   ' ' ? 0 1 2 !djjNOdjj78tzz56- ?@57h00 57 A57p="(++ ="@g r(   