
This PS implements the following changes: - switches freeze approach to requirements-direct.txt and requirements-frozen.txt files - adjusts code tabulation style according to yapf recommendations - replaces deprecated usage of responce.body attribute with responce.text - fixes integration tests in controlled by Makefile + tox - uplifts Helm to v3.9.4 Change-Id: I751db72eb8f670825382f11a36657112faeb169a
177 lines
5.8 KiB
Python
177 lines
5.8 KiB
Python
# Copyright 2018 AT&T Intellectual Property. All other rights reserved.
|
|
#
|
|
# Licensed 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.
|
|
from unittest import mock
|
|
from urllib.parse import urlparse
|
|
|
|
import pytest
|
|
import responses
|
|
|
|
import drydock_provisioner.error as errors
|
|
from drydock_provisioner.drivers.kubernetes.promenade_driver.promenade_client \
|
|
import PromenadeSession, PromenadeClient
|
|
|
|
PROM_URL = urlparse('http://promhost:80/api/v1.0')
|
|
PROM_HOST = 'promhost'
|
|
|
|
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession._get_prom_url',
|
|
return_value=PROM_URL)
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession.set_auth',
|
|
return_value=None)
|
|
@responses.activate
|
|
def test_put(patch1, patch2):
|
|
"""
|
|
Test put functionality
|
|
"""
|
|
responses.add(responses.PUT,
|
|
'http://promhost:80/api/v1.0/node-label/n1',
|
|
body='{"key1":"label1"}',
|
|
status=200)
|
|
|
|
prom_session = PromenadeSession()
|
|
result = prom_session.put('v1.0/node-label/n1',
|
|
body='{"key1":"label1"}',
|
|
timeout=(60, 60))
|
|
|
|
assert PROM_HOST == prom_session.host
|
|
assert result.status_code == 200
|
|
|
|
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession._get_prom_url',
|
|
return_value=PROM_URL)
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession.set_auth',
|
|
return_value=None)
|
|
@responses.activate
|
|
def test_get(patch1, patch2):
|
|
"""
|
|
Test get functionality
|
|
"""
|
|
responses.add(responses.GET,
|
|
'http://promhost:80/api/v1.0/node-label/n1',
|
|
status=200)
|
|
|
|
prom_session = PromenadeSession()
|
|
result = prom_session.get('v1.0/node-label/n1', timeout=(60, 60))
|
|
|
|
assert result.status_code == 200
|
|
|
|
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession._get_prom_url',
|
|
return_value=PROM_URL)
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession.set_auth',
|
|
return_value=None)
|
|
@responses.activate
|
|
def test_post(patch1, patch2):
|
|
"""
|
|
Test post functionality
|
|
"""
|
|
responses.add(responses.POST,
|
|
'http://promhost:80/api/v1.0/node-label/n1',
|
|
body='{"key1":"label1"}',
|
|
status=200)
|
|
|
|
prom_session = PromenadeSession()
|
|
result = prom_session.post('v1.0/node-label/n1',
|
|
body='{"key1":"label1"}',
|
|
timeout=(60, 60))
|
|
|
|
assert PROM_HOST == prom_session.host
|
|
assert result.status_code == 200
|
|
|
|
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession._get_prom_url',
|
|
return_value=PROM_URL)
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession.set_auth',
|
|
return_value=None)
|
|
@responses.activate
|
|
def test_relabel_node(patch1, patch2):
|
|
"""
|
|
Test relabel node call from Promenade
|
|
Client
|
|
"""
|
|
responses.add(responses.PUT,
|
|
'http://promhost:80/api/v1.0/node-labels/n1',
|
|
body='{"key1":"label1"}',
|
|
status=200)
|
|
|
|
prom_client = PromenadeClient()
|
|
|
|
result = prom_client.relabel_node('n1', {"key1": "label1"})
|
|
|
|
assert result == {"key1": "label1"}
|
|
|
|
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession._get_prom_url',
|
|
return_value=PROM_URL)
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession.set_auth',
|
|
return_value=None)
|
|
@responses.activate
|
|
def test_relabel_node_403_status(patch1, patch2):
|
|
"""
|
|
Test relabel node with 403 resp status
|
|
"""
|
|
responses.add(responses.PUT,
|
|
'http://promhost:80/api/v1.0/node-labels/n1',
|
|
body='{"key1":"label1"}',
|
|
status=403)
|
|
|
|
prom_client = PromenadeClient()
|
|
|
|
with pytest.raises(errors.ClientForbiddenError):
|
|
prom_client.relabel_node('n1', {"key1": "label1"})
|
|
|
|
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession._get_prom_url',
|
|
return_value=PROM_URL)
|
|
@mock.patch('drydock_provisioner.drivers.kubernetes'
|
|
'.promenade_driver.promenade_client'
|
|
'.PromenadeSession.set_auth',
|
|
return_value=None)
|
|
@responses.activate
|
|
def test_relabel_node_401_status(patch1, patch2):
|
|
"""
|
|
Test relabel node with 401 resp status
|
|
"""
|
|
responses.add(responses.PUT,
|
|
'http://promhost:80/api/v1.0/node-labels/n1',
|
|
body='{"key1":"label1"}',
|
|
status=401)
|
|
|
|
prom_client = PromenadeClient()
|
|
|
|
with pytest.raises(errors.ClientUnauthorizedError):
|
|
prom_client.relabel_node('n1', {"key1": "label1"})
|