"""Test for datadog util.""" import json import os from unittest.mock import MagicMock import requests from product.utils import datadog_util test_metadata_response_success = requests.Response() test_metadata_response_success._content = json.dumps({ 'Cluster': 'default', 'TaskARN': 'arn:aws:ecs:us-east:01:task/97', 'Family': 'nginx', 'Revision': '5', 'DesiredStatus': 'RUNNING', 'KnownStatus': 'RUNNING', 'Containers': [ { 'DockerId': '731a', 'Name': '~internal~ecs~pause', 'DockerName': 'ecs-nginx-5-internalecspause-acc699c0cbf2d6d11700', 'Image': 'amazon/amazon-ecs-pause:0.1.0', 'ImageID': '', 'Labels': { 'com.amazonaws.ecs.cluster': 'default', 'com.amazonaws.ecs.container-name': '~internal~ecs~pause', 'com.amazonaws.ecs.task-arn': 'arn:aws:ecs:us-east:01:task/97', 'com.amazonaws.ecs.task-definition-family': 'nginx', 'com.amazonaws.ecs.task-definition-version': '5' }, 'DesiredStatus': 'RESOURCES_PROVISIONED', 'KnownStatus': 'RESOURCES_PROVISIONED', 'Limits': { 'CPU': 0, 'Memory': 0 }, 'CreatedAt': '2018-02-01T20:55:08.366329616Z', 'StartedAt': '2018-02-01T20:55:09.058354915Z', 'Type': 'CNI_PAUSE', 'Networks': [ { 'NetworkMode': 'awsvpc', 'IPv4Addresses': [ '10.0.2.106' ] } ] } ], 'PullStartedAt': '2018-02-01T20:55:09.372495529Z', 'PullStoppedAt': '2018-02-01T20:55:10.552018345Z', 'AvailabilityZone': 'us-east-2b' }).encode() test_metadata_response_fail = requests.Response() test_metadata_response_fail.status_code = 500 def test_set_app_version_success(mocker, context, monkeypatch): """Test setting app version is success.""" with context: mocker.spy(context.g.ows.log, 'warning') mocker.spy(context.g.ows.log, 'info') monkeypatch.setattr( requests, 'get', MagicMock( return_value=test_metadata_response_success)) datadog_util.set_app_version() assert os.environ['DD_VERSION'] == '5' def test_set_app_version_request_failure(mocker, context, monkeypatch): """Test setting app version when metadata request fails.""" monkeypatch.setattr( requests, 'get', MagicMock( return_value=test_metadata_response_fail)) datadog_util.set_app_version() assert os.environ['DD_VERSION'] == 'UNKNOWN' def test_set_app_version_uri_failure(mocker, context, monkeypatch): """Test setting app version when metadata URI is not set.""" os.environ['ECS_CONTAINER_METADATA_URI'] = '' datadog_util.set_app_version() assert os.environ['DD_VERSION'] == 'UNKNOWN'