update/software-client/software_client/tests/v1/test_release.py

197 lines
5.1 KiB
Python

# Copyright (c) 2013-2024 Wind River Systems, Inc.
# Copyright 2013 Hewlett-Packard Development Company, L.P.
#
# 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.
import testtools
from software_client.tests import utils
import software_client.v1.release
RELEASE = {
'sd':
{'starlingx-24.03.0': {
'state': 'deployed',
'sw_version': '24.03.0',
'status': 'REL',
'unremovable': 'Y',
'summary': 'STX 24.03 GA release',
'description': 'STX 24.03 major GA release',
'install_instructions': '',
'warnings': '',
'apply_active_release_only': '',
'reboot_required': 'Y',
'requires': [],
'packages': []
}
}
}
fixtures = {
'/v1/software/query?show=all':
{
'GET': (
{},
{'sd': RELEASE['sd']},
),
},
'/v1/software/show/1':
{
'POST': (
{},
True,
),
},
'/v1/software/delete/1':
{
'POST': (
{},
{},
),
},
'/v1/software/is_available/1':
{
'POST': (
{},
True,
),
},
'/v1/software/is_deployed/1':
{
'POST': (
{},
False,
),
},
'/v1/software/is_committed/1':
{
'POST': (
{},
False,
),
},
'/v1/software/install_local':
{
'GET': (
{},
{},
),
},
}
class Args:
def __init__(self, **kwargs):
for key, value in kwargs.items():
if isinstance(value, dict):
self.__dict__[key] = Args(**value)
else:
self.__dict__[key] = value
class ReleaseManagerTest(testtools.TestCase):
def setUp(self):
super(ReleaseManagerTest, self).setUp()
self.api = utils.FakeAPI(fixtures)
self.mgr = software_client.v1.release.ReleaseManager(self.api)
def test_release_list(self):
input = {"state": "all", "release": ""}
args = Args(**input)
release = self.mgr.list(args)
expect = [
('GET', '/v1/software/query?show=all', {}, None),
]
self.assertEqual(self.api.calls, expect)
self.assertEqual(len(release), 2)
def test_release_show(self):
input = {"state": "", "release": "1"}
args = Args(**input)
release = self.mgr.show(args)
expect = [
('POST', '/v1/software/show/1', {}, {}),
]
self.assertEqual(self.api.calls, expect)
self.assertEqual(len(release), 2)
def test_release_delete(self):
response = self.mgr.release_delete("1")
expect = [
('POST', '/v1/software/delete/1', {}, {}),
]
self.assertEqual(self.api.calls, expect)
self.assertEqual(len(response), 2)
def test_is_available(self):
response = self.mgr.is_available('1')
expect = [
('POST', '/v1/software/is_available/1', {}, {}),
]
self.assertEqual(self.api.calls, expect)
self.assertTrue(response[1], True)
def test_is_deployed(self):
response = self.mgr.is_deployed('1')
expect = [
('POST', '/v1/software/is_deployed/1', {}, {}),
]
self.assertEqual(self.api.calls, expect)
self.assertFalse(response[1], False)
def test_is_committed(self):
response = self.mgr.is_committed('1')
expect = [
('POST', '/v1/software/is_committed/1', {}, {}),
]
self.assertEqual(self.api.calls, expect)
self.assertFalse(response[1], True)
def test_upload(self):
input = {'release': '1', 'local': ''}
args = Args(**input)
response = self.mgr.upload(args)
expect = [
('POST', '/v1/software/upload', {}, {}),
]
self.assertNotEqual(self.api.calls, expect)
self.assertEqual(response, 0)
def test_upload_dir(self):
input = {'release': '1'}
args = Args(**input)
response = self.mgr.upload_dir(args)
expect = [
('POST', '/v1/software/upload', {}, {}),
]
self.assertNotEqual(self.api.calls, expect)
self.assertEqual(response, 0)
def test_install_local(self):
self.mgr.install_local()
expect = [
('GET', '/v1/software/install_local', {}, None),
]
self.assertEqual(self.api.calls, expect)
def test_commit_patch(self):
input = {'sw_version': '1', 'all': ''}
args = Args(**input)
kernel = self.mgr.commit_patch(args)
expect = [
('GET', '/v1/software/commit_patch/1', {}, None),
]
self.assertNotEqual(self.api.calls, expect)