예제 #1
0
def _get_projectid_from_metadata():
    """Get the current project id from the metadata server, if reachable.

    Returns:
        str: The current project id or None if the metadata server is
            unreachable.
    """
    if metadata_server.can_reach_metadata_server():
        return metadata_server.get_project_id()
    return None
    def test_get_project_id_with_exception(self, mock_meta_req):
        """Test get_project_id returns correctly when exception is raised.

        Setup:
            * Have _issue_http_request raise errors.MetadataServerHttpError

        Expected results:
            * A matching string.
        """
        mock_meta_req.side_effect = _MockMetadataServerHttpError('Unreachable')
        actual_response = metadata_server.get_project_id()
        self.assertIsNone(actual_response)
    def test_get_project_id(self, mock_meta_req):
        """Test get_project_id returns correctly.

        Setup:
            * Have _issue_http_request return a project id.

        Expected results:
            * A matching string.
        """
        mock_response = 'test-project'

        with mock.patch(
                'http.client.HTTPResponse',
                mock.mock_open(read_data=mock_response)) as mock_http_resp:
            mock_http_resp.return_value.status = http.client.OK
            mock_meta_req.side_effect = mock_http_resp

            actual_response = metadata_server.get_project_id()

        self.assertEqual(actual_response, mock_response)