95 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			95 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | from __future__ import unicode_literals | ||
|  | 
 | ||
|  | import boto3 | ||
|  | from botocore.exceptions import ClientError | ||
|  | import sure   # noqa | ||
|  | 
 | ||
|  | from moto import mock_cloudwatch | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_cloudwatch | ||
|  | def test_put_list_dashboard(): | ||
|  |     client = boto3.client('cloudwatch', region_name='eu-central-1') | ||
|  |     widget = '{"widgets": [{"type": "text", "x": 0, "y": 7, "width": 3, "height": 3, "properties": {"markdown": "Hello world"}}]}' | ||
|  | 
 | ||
|  |     client.put_dashboard(DashboardName='test1', DashboardBody=widget) | ||
|  |     resp = client.list_dashboards() | ||
|  | 
 | ||
|  |     len(resp['DashboardEntries']).should.equal(1) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_cloudwatch | ||
|  | def test_put_list_prefix_nomatch_dashboard(): | ||
|  |     client = boto3.client('cloudwatch', region_name='eu-central-1') | ||
|  |     widget = '{"widgets": [{"type": "text", "x": 0, "y": 7, "width": 3, "height": 3, "properties": {"markdown": "Hello world"}}]}' | ||
|  | 
 | ||
|  |     client.put_dashboard(DashboardName='test1', DashboardBody=widget) | ||
|  |     resp = client.list_dashboards(DashboardNamePrefix='nomatch') | ||
|  | 
 | ||
|  |     len(resp['DashboardEntries']).should.equal(0) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_cloudwatch | ||
|  | def test_delete_dashboard(): | ||
|  |     client = boto3.client('cloudwatch', region_name='eu-central-1') | ||
|  |     widget = '{"widgets": [{"type": "text", "x": 0, "y": 7, "width": 3, "height": 3, "properties": {"markdown": "Hello world"}}]}' | ||
|  | 
 | ||
|  |     client.put_dashboard(DashboardName='test1', DashboardBody=widget) | ||
|  |     client.put_dashboard(DashboardName='test2', DashboardBody=widget) | ||
|  |     client.put_dashboard(DashboardName='test3', DashboardBody=widget) | ||
|  |     client.delete_dashboards(DashboardNames=['test2', 'test1']) | ||
|  | 
 | ||
|  |     resp = client.list_dashboards(DashboardNamePrefix='test3') | ||
|  |     len(resp['DashboardEntries']).should.equal(1) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_cloudwatch | ||
|  | def test_delete_dashboard_fail(): | ||
|  |     client = boto3.client('cloudwatch', region_name='eu-central-1') | ||
|  |     widget = '{"widgets": [{"type": "text", "x": 0, "y": 7, "width": 3, "height": 3, "properties": {"markdown": "Hello world"}}]}' | ||
|  | 
 | ||
|  |     client.put_dashboard(DashboardName='test1', DashboardBody=widget) | ||
|  |     client.put_dashboard(DashboardName='test2', DashboardBody=widget) | ||
|  |     client.put_dashboard(DashboardName='test3', DashboardBody=widget) | ||
|  |     # Doesnt delete anything if all dashboards to be deleted do not exist | ||
|  |     try: | ||
|  |         client.delete_dashboards(DashboardNames=['test2', 'test1', 'test_no_match']) | ||
|  |     except ClientError as err: | ||
|  |         err.response['Error']['Code'].should.equal('ResourceNotFound') | ||
|  |     else: | ||
|  |         raise RuntimeError('Should of raised error') | ||
|  | 
 | ||
|  |     resp = client.list_dashboards() | ||
|  |     len(resp['DashboardEntries']).should.equal(3) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_cloudwatch | ||
|  | def test_get_dashboard(): | ||
|  |     client = boto3.client('cloudwatch', region_name='eu-central-1') | ||
|  |     widget = '{"widgets": [{"type": "text", "x": 0, "y": 7, "width": 3, "height": 3, "properties": {"markdown": "Hello world"}}]}' | ||
|  |     client.put_dashboard(DashboardName='test1', DashboardBody=widget) | ||
|  | 
 | ||
|  |     resp = client.get_dashboard(DashboardName='test1') | ||
|  |     resp.should.contain('DashboardArn') | ||
|  |     resp.should.contain('DashboardBody') | ||
|  |     resp['DashboardName'].should.equal('test1') | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_cloudwatch | ||
|  | def test_get_dashboard_fail(): | ||
|  |     client = boto3.client('cloudwatch', region_name='eu-central-1') | ||
|  | 
 | ||
|  |     try: | ||
|  |         client.get_dashboard(DashboardName='test1') | ||
|  |     except ClientError as err: | ||
|  |         err.response['Error']['Code'].should.equal('ResourceNotFound') | ||
|  |     else: | ||
|  |         raise RuntimeError('Should of raised error') | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 |