1515
1616import unittest
1717
18+ import mock
19+
1820
1921class Test_entry_from_resource (unittest .TestCase ):
2022
@@ -53,6 +55,69 @@ def test_proto_payload(self):
5355 self ._payload_helper ('protoPayload' , 'ProtobufEntry' )
5456
5557
58+ class Test_retrieve_metadata_server (unittest .TestCase ):
59+
60+ @staticmethod
61+ def _call_fut (metadata_key ):
62+ from google .cloud .logging ._helpers import retrieve_metadata_server
63+
64+ return retrieve_metadata_server (metadata_key )
65+
66+ def test_metadata_exists (self ):
67+ status_code_ok = 200
68+ response_text = 'my-gke-cluster'
69+ metadata_key = 'test_key'
70+
71+ response_mock = ResponseMock (status_code = status_code_ok )
72+ response_mock .text = response_text
73+
74+ requests_mock = mock .Mock ()
75+ requests_mock .get .return_value = response_mock
76+ requests_mock .codes .ok = status_code_ok
77+
78+ patch = mock .patch (
79+ 'google.cloud.logging._helpers.requests' ,
80+ requests_mock )
81+
82+ with patch :
83+ metadata = self ._call_fut (metadata_key )
84+
85+ self .assertEqual (metadata , response_text )
86+
87+ def test_metadata_does_not_exist (self ):
88+ status_code_ok = 200
89+ status_code_not_found = 404
90+ metadata_key = 'test_key'
91+
92+ response_mock = ResponseMock (status_code = status_code_not_found )
93+
94+ requests_mock = mock .Mock ()
95+ requests_mock .get .return_value = response_mock
96+ requests_mock .codes .ok = status_code_ok
97+
98+ patch = mock .patch (
99+ 'google.cloud.logging._helpers.requests' ,
100+ requests_mock )
101+
102+ with patch :
103+ metadata = self ._call_fut (metadata_key )
104+
105+ self .assertIsNone (metadata )
106+
107+ def test_request_exception (self ):
108+ metadata_key = 'test_url_cannot_connect'
109+ metadata_url = 'http://metadata.invalid/'
110+
111+ patch = mock .patch (
112+ 'google.cloud.logging._helpers.METADATA_URL' ,
113+ new = metadata_url )
114+
115+ with patch :
116+ metadata = self ._call_fut (metadata_key )
117+
118+ self .assertIsNone (metadata )
119+
120+
56121class EntryMock (object ):
57122
58123 def __init__ (self ):
@@ -62,3 +127,10 @@ def __init__(self):
62127 def from_api_repr (self , resource , client , loggers ):
63128 self .called = (resource , client , loggers )
64129 return self .sentinel
130+
131+
132+ class ResponseMock (object ):
133+
134+ def __init__ (self , status_code , text = 'test_response_text' ):
135+ self .status_code = status_code
136+ self .text = text
0 commit comments