blob: b75247bb5adb832223e8bde834456f24e0891700 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Tests for Google Container Engine Driver
"""
import sys
import unittest
from libcloud.utils.py3 import httplib
from libcloud.container.drivers.gke import GKEContainerDriver, API_VERSION
from libcloud.common.google import GoogleBaseAuthConnection
from libcloud.test.common.test_google import GoogleAuthMockHttp, GoogleTestCase
from libcloud.test import MockHttp
from libcloud.test.container import TestCaseMixin
from libcloud.test.file_fixtures import ContainerFileFixtures
from libcloud.test.secrets import GKE_PARAMS, GKE_KEYWORD_PARAMS
class GKEContainerDriverTestCase(GoogleTestCase, TestCaseMixin):
"""
Google Compute Engine Test Class.
"""
# Mock out a few specific calls that interact with the user, system or
# environment.
datacenter = "us-central1-a"
def setUp(self):
GKEMockHttp.test = self
GKEContainerDriver.connectionCls.conn_class = GKEMockHttp
GoogleBaseAuthConnection.conn_class = GoogleAuthMockHttp
GKEMockHttp.type = None
kwargs = GKE_KEYWORD_PARAMS.copy()
kwargs["auth_type"] = "IA"
kwargs["datacenter"] = self.datacenter
self.driver = GKEContainerDriver(*GKE_PARAMS, **kwargs)
def test_list_images_response(self):
config = self.driver.list_clusters(ex_zone="us-central1-a")
assert "clusters" in config
assert config["clusters"][0]["zone"] == "us-central1-a"
def test_server_config(self):
config = self.driver.get_server_config()
assert "validImageTypes" in config
class GKEMockHttp(MockHttp):
fixtures = ContainerFileFixtures("gke")
json_hdr = {"content-type": "application/json; charset=UTF-8"}
def _get_method_name(self, type, use_param, qs, path):
api_path = "/%s" % API_VERSION
project_path = "/projects/%s" % GKE_KEYWORD_PARAMS["project"]
path = path.replace(api_path, "")
# This replace is separate, since there is a call with a different
# project name
path = path.replace(project_path, "")
# The path to get project information is the base path, so use a fake
# '/project' path instead
if not path:
path = "/project"
method_name = super(GKEMockHttp, self)._get_method_name(
type, use_param, qs, path
)
return method_name
def _zones_us_central1_a_serverconfig(self, method, url, body, headers):
body = self.fixtures.load("zones_us-central1-a_instance_serverconfig.json")
return (httplib.OK, body, self.json_hdr, httplib.responses[httplib.OK])
def _zones_us_central1_a_clusters(self, method, url, body, headers):
body = self.fixtures.load("zones_us-central1-a_list.json")
return (httplib.OK, body, self.json_hdr, httplib.responses[httplib.OK])
if __name__ == "__main__":
sys.exit(unittest.main())