OLD | NEW |
| (Empty) |
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 notification command.""" | |
16 | |
17 from __future__ import absolute_import | |
18 | |
19 import re | |
20 import uuid | |
21 | |
22 import boto | |
23 | |
24 import gslib.tests.testcase as testcase | |
25 from gslib.tests.util import ObjectToURI as suri | |
26 from gslib.tests.util import unittest | |
27 | |
28 | |
29 def _LoadNotificationUrl(): | |
30 return boto.config.get_value('GSUtil', 'test_notification_url') | |
31 | |
32 NOTIFICATION_URL = _LoadNotificationUrl() | |
33 | |
34 | |
35 class TestNotification(testcase.GsUtilIntegrationTestCase): | |
36 """Integration tests for notification command.""" | |
37 | |
38 @unittest.skipUnless(NOTIFICATION_URL, | |
39 'Test requires notification URL configuration.') | |
40 def test_watch_bucket(self): | |
41 """Tests creating a notification channel on a bucket.""" | |
42 bucket_uri = self.CreateBucket() | |
43 self.RunGsUtil([ | |
44 'notification', 'watchbucket', NOTIFICATION_URL, suri(bucket_uri)]) | |
45 | |
46 identifier = str(uuid.uuid4()) | |
47 token = str(uuid.uuid4()) | |
48 stderr = self.RunGsUtil([ | |
49 'notification', 'watchbucket', '-i', identifier, '-t', token, | |
50 NOTIFICATION_URL, suri(bucket_uri)], return_stderr=True) | |
51 self.assertIn('token: %s' % token, stderr) | |
52 self.assertIn('identifier: %s' % identifier, stderr) | |
53 | |
54 @unittest.skipUnless(NOTIFICATION_URL, | |
55 'Test requires notification URL configuration.') | |
56 def test_stop_channel(self): | |
57 """Tests stopping a notification channel on a bucket.""" | |
58 bucket_uri = self.CreateBucket() | |
59 stderr = self.RunGsUtil( | |
60 ['notification', 'watchbucket', NOTIFICATION_URL, suri(bucket_uri)], | |
61 return_stderr=True) | |
62 | |
63 channel_id = re.findall(r'channel identifier: (?P<id>.*)', stderr) | |
64 self.assertEqual(len(channel_id), 1) | |
65 resource_id = re.findall(r'resource identifier: (?P<id>.*)', stderr) | |
66 self.assertEqual(len(resource_id), 1) | |
67 | |
68 channel_id = channel_id[0] | |
69 resource_id = resource_id[0] | |
70 | |
71 self.RunGsUtil(['notification', 'stopchannel', channel_id, resource_id]) | |
72 | |
73 def test_invalid_subcommand(self): | |
74 stderr = self.RunGsUtil(['notification', 'foo', 'bar', 'baz'], | |
75 return_stderr=True, expected_status=1) | |
76 self.assertIn('Invalid subcommand', stderr) | |
OLD | NEW |