1 # -*- coding: utf-8 -*- 2 # Copyright 2013 Google Inc. All Rights Reserved. 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 """Integration tests for the webcfg command.""" 16 17 from __future__ import absolute_import 18 19 import json 20 import gslib.tests.testcase as testcase 21 from gslib.tests.testcase.integration_testcase import SkipForS3 22 from gslib.tests.util import ObjectToURI as suri 23 24 WEBCFG_FULL = json.loads('{"notFoundPage": "404", "mainPageSuffix": "main"}\n') 25 WEBCFG_MAIN = json.loads('{"mainPageSuffix": "main"}\n') 26 WEBCFG_ERROR = json.loads('{"notFoundPage": "404"}\n') 27 WEBCFG_EMPTY = 'has no website configuration' 28 29 30 @SkipForS3('Web set not supported for S3, web get returns XML.') 31 class TestWeb(testcase.GsUtilIntegrationTestCase): 32 """Integration tests for the web command.""" 33 34 _set_web_cmd = ['web', 'set'] 35 _get_web_cmd = ['web', 'get'] 36 37 def test_full(self): 38 bucket_uri = self.CreateBucket() 39 self.RunGsUtil( 40 self._set_web_cmd + ['-m', 'main', '-e', '404', suri(bucket_uri)]) 41 stdout = self.RunGsUtil( 42 self._get_web_cmd + [suri(bucket_uri)], return_stdout=True) 43 self.assertEquals(json.loads(stdout), WEBCFG_FULL) 44 45 def test_main(self): 46 bucket_uri = self.CreateBucket() 47 self.RunGsUtil(self._set_web_cmd + ['-m', 'main', suri(bucket_uri)]) 48 stdout = self.RunGsUtil( 49 self._get_web_cmd + [suri(bucket_uri)], return_stdout=True) 50 self.assertEquals(json.loads(stdout), WEBCFG_MAIN) 51 52 def test_error(self): 53 bucket_uri = self.CreateBucket() 54 self.RunGsUtil(self._set_web_cmd + ['-e', '404', suri(bucket_uri)]) 55 stdout = self.RunGsUtil( 56 self._get_web_cmd + [suri(bucket_uri)], return_stdout=True) 57 self.assertEquals(json.loads(stdout), WEBCFG_ERROR) 58 59 def test_empty(self): 60 bucket_uri = self.CreateBucket() 61 self.RunGsUtil(self._set_web_cmd + [suri(bucket_uri)]) 62 stdout = self.RunGsUtil( 63 self._get_web_cmd + [suri(bucket_uri)], return_stdout=True) 64 self.assertIn(WEBCFG_EMPTY, stdout) 65 66 def testTooFewArgumentsFails(self): 67 """Ensures web commands fail with too few arguments.""" 68 # No arguments for get, but valid subcommand. 69 stderr = self.RunGsUtil(self._get_web_cmd, return_stderr=True, 70 expected_status=1) 71 self.assertIn('command requires at least', stderr) 72 73 # No arguments for set, but valid subcommand. 74 stderr = self.RunGsUtil(self._set_web_cmd, return_stderr=True, 75 expected_status=1) 76 self.assertIn('command requires at least', stderr) 77 78 # Neither arguments nor subcommand. 79 stderr = self.RunGsUtil(['web'], return_stderr=True, expected_status=1) 80 self.assertIn('command requires at least', stderr) 81 82 83 class TestWebOldAlias(TestWeb): 84 _set_web_cmd = ['setwebcfg'] 85 _get_web_cmd = ['getwebcfg'] 86