|
28 | 28 | # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
29 | 29 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
30 | 30 |
|
| 31 | +import os |
| 32 | + |
31 | 33 | import mock |
32 | 34 | import urllib3 |
33 | 35 |
|
@@ -131,3 +133,63 @@ def request(self, *args, **kwargs): |
131 | 133 | "provider": "azure", |
132 | 134 | "region": "westus2", |
133 | 135 | } |
| 136 | + |
| 137 | + |
| 138 | +def test_azure_app_service_metadata(): |
| 139 | + env_template = { |
| 140 | + "WEBSITE_RESOURCE_GROUP": "resource_group", |
| 141 | + "WEBSITE_SITE_NAME": "site_name", |
| 142 | + "WEBSITE_INSTANCE_ID": "instance_id", |
| 143 | + } |
| 144 | + for owner_name in ( |
| 145 | + "f5940f10-2e30-3e4d-a259-63451ba6dae4+elastic-apm-AustraliaEastwebspace", |
| 146 | + "f5940f10-2e30-3e4d-a259-63451ba6dae4+appsvc_linux_australiaeast-AustraliaEastwebspace-Linux", |
| 147 | + ): |
| 148 | + env = env_template.copy() |
| 149 | + env["WEBSITE_OWNER_NAME"] = owner_name |
| 150 | + with mock.patch.dict(os.environ, env): |
| 151 | + metadata = elasticapm.utils.cloud.azure_app_service_metadata() |
| 152 | + assert metadata == { |
| 153 | + "account": {"id": "f5940f10-2e30-3e4d-a259-63451ba6dae4"}, |
| 154 | + "instance": {"id": "instance_id", "name": "site_name"}, |
| 155 | + "project": {"name": "resource_group"}, |
| 156 | + "provider": "azure", |
| 157 | + "region": "AustraliaEast", |
| 158 | + } |
| 159 | + |
| 160 | + |
| 161 | +def test_azure_app_service_metadata_wrong_format(): |
| 162 | + env = { |
| 163 | + # the - before "elastic" is faulty |
| 164 | + "WEBSITE_OWNER_NAME": "f5940f10-2e30-3e4d-a259-63451ba6dae4-elastic-apm-AustraliaEastwebspace", |
| 165 | + "WEBSITE_RESOURCE_GROUP": "resource_group", |
| 166 | + "WEBSITE_SITE_NAME": "site_name", |
| 167 | + "WEBSITE_INSTANCE_ID": "instance_id", |
| 168 | + } |
| 169 | + with mock.patch.dict(os.environ, env): |
| 170 | + metadata = elasticapm.utils.cloud.azure_app_service_metadata() |
| 171 | + assert metadata == {} |
| 172 | + |
| 173 | + |
| 174 | +def test_azure_app_service_metadata_empty(): |
| 175 | + with mock.patch.dict(os.environ, {}): |
| 176 | + metadata = elasticapm.utils.cloud.azure_app_service_metadata() |
| 177 | + assert metadata == {} |
| 178 | + |
| 179 | + |
| 180 | +def test_azure_app_service_metadata_not_complete(): |
| 181 | + env_template = { |
| 182 | + "WEBSITE_OWNER_NAME": "f5940f10-2e30-3e4d-a259-63451ba6dae4+elastic-apm-AustraliaEastwebspace", |
| 183 | + "WEBSITE_RESOURCE_GROUP": "resource_group", |
| 184 | + "WEBSITE_SITE_NAME": "site_name", |
| 185 | + "WEBSITE_INSTANCE_ID": "instance_id", |
| 186 | + } |
| 187 | + for k in env_template.keys(): |
| 188 | + env = env_template.copy() |
| 189 | + with mock.patch.dict(os.environ, env): |
| 190 | + os.environ[k] = "" |
| 191 | + metadata = elasticapm.utils.cloud.azure_app_service_metadata() |
| 192 | + assert metadata == {} |
| 193 | + del os.environ[k] |
| 194 | + metadata = elasticapm.utils.cloud.azure_app_service_metadata() |
| 195 | + assert metadata == {} |
0 commit comments