"""Test for datadog util.""" import json import os from unittest.mock import MagicMock import pytest import requests from owslogger.utils import datadog 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(monkeypatch: pytest.MonkeyPatch) -> None: """Test setting app version is success.""" monkeypatch.setattr( requests, "get", MagicMock(return_value=test_metadata_response_success) ) datadog.set_app_version() assert os.environ["DD_VERSION"] == "5" def test_set_app_version_request_failure(monkeypatch: pytest.MonkeyPatch) -> None: """Test setting app version when metadata request fails.""" monkeypatch.setattr( requests, "get", MagicMock(return_value=test_metadata_response_fail) ) datadog.set_app_version() assert os.environ["DD_VERSION"] == "UNKNOWN" def test_set_app_version_uri_failure() -> None: """Test setting app version when metadata URI is not set.""" os.environ["ECS_CONTAINER_METADATA_URI"] = "" datadog.set_app_version() assert os.environ["DD_VERSION"] == "UNKNOWN"