提交 0eae7b7d 编写于 作者: Y Yiru Wang Mac

change spec file

......@@ -158,6 +158,7 @@ def sing_pack(srcname, tablename):
ResponseCode.PACK_NAME_NOT_FOUND))
pack_info_dict = SinglePackInfoSchema(
many=False).dump(package_info_obj)
pack_info_dict = parsing_maintainner(srcname, pack_info_dict)
issue_count = database_name.session.query(
PackagesIssue).filter_by(pkg_name=package_info_obj.name).count()
pack_info_dict["issue"] = issue_count
......@@ -179,6 +180,26 @@ def sing_pack(srcname, tablename):
ResponseCode.response_json(
ResponseCode.DIS_CONNECTION_DB))
def parsing_maintainner(srcname,pack_info_dict):
"""
Single package query maintainer and maintainlevel
Args:
srcname: Source package name
pack_info_dict:
Returns: Dictionary of package information
"""
with DBHelper(db_name="lifecycle") as database_name:
maintainer_obj = database_name.session.query(PackagesMaintainer).filter_by(
name=srcname).first()
if maintainer_obj is None:
pack_info_dict["maintainer"] = None
pack_info_dict["maintainlevel"] = None
else:
pack_info_dict["maintainer"] = maintainer_obj.maintainer
pack_info_dict["maintainlevel"] = maintainer_obj.maintainlevel
return pack_info_dict
def buildrequired_search(srcname, tablename):
"""
......@@ -275,7 +296,7 @@ def provide_(tablename, bin_provides_set):
bin_provides_dict['id'] = bin_provides_obj.id
bin_provides_dict['name'] = bin_provides_obj.name
reqired_set = data_name.session.query(
BinProvides).filter_by(name=bin_provides_obj.name).all()
BinRequires).filter_by(name=bin_provides_obj.name).all()
required_pkgkey_list = [
reqired_obj.pkgKey for reqired_obj in reqired_set]
required_bin_set = data_name.session.query(BinPack).filter(
......
......@@ -286,10 +286,8 @@ class SinglePackInfoSchema(Schema):
'version',
'release',
'url',
'maintainer',
'feature',
'rpm_license',
'maintainlevel',
'summary',
'description')
......
......@@ -136,6 +136,11 @@ class InitDataBase():
LOGGER.logger.error('The priority value type in the database initialization \
configuration file is incorrect')
continue
lifecycle_status_val = database_config.get('lifecycle')
if lifecycle_status_val not in ('enable', 'disable'):
LOGGER.logger.error('The status value of the life cycle in the initialization\
configuration file can only be enable or disable')
continue
# Initialization data
self._init_data(database_config)
......@@ -195,7 +200,12 @@ class InitDataBase():
raise FileNotFoundError("sqlite file {src} or {bin} does not exist, please \
check and try again".format(src=src_db_file, bin=bin_db_file))
# 3. Obtain temporary source package files and binary package files
if self.__save_data(src_db_file, bin_db_file, self.database_name, _db_name):
_lifecycle_status_val = database_config.get('lifecycle')
if self.__save_data(src_db_file,
bin_db_file,
self.database_name,
_db_name,
_lifecycle_status_val):
# Update the configuration file of the database
database_content = {
'database_name': _db_name,
......@@ -209,7 +219,6 @@ class InitDataBase():
LOGGER.logger.error(error_msg)
# Delete the specified database
self.__del_database(_db_name)
# Delete tables created in the life cycle
def __del_database(self, db_name):
try:
......@@ -257,7 +266,7 @@ class InitDataBase():
LOGGER.logger.error(sql_error)
return None
def __save_data(self, src_db_file, bin_db_file, db_name, table_name):
def __save_data(self, src_db_file, bin_db_file, db_name, table_name, lifecycle_status_val):
"""
integration of multiple data files
......@@ -274,7 +283,8 @@ class InitDataBase():
as database:
self._database = database
# Save data related to source package
self._save_src_packages(db_name, table_name)
self._save_src_packages(
db_name, table_name, lifecycle_status_val)
self._save_src_requires(db_name)
with DBHelper(db_name=bin_db_file, db_type='sqlite:///', complete_route_db=True)\
......@@ -291,7 +301,7 @@ class InitDataBase():
else:
return True
def _save_src_packages(self, db_name, table_name):
def _save_src_packages(self, db_name, table_name, lifecycle_status_val):
"""
Save the source package data
......@@ -311,8 +321,8 @@ class InitDataBase():
package provided '.format(db_name=db_name))
with DBHelper(db_name=db_name) as database:
database.batch_add(packages_datas, SrcPack)
self._storage_packages(table_name, packages_datas)
if lifecycle_status_val == 'enable':
InitDataBase._storage_packages(table_name, packages_datas)
@staticmethod
def __meta_model(table_name):
......@@ -323,12 +333,13 @@ class InitDataBase():
'__tablename__': table_name})
return model
def _storage_packages(self, table_name, package_data):
@staticmethod
def _storage_packages(table_name, package_data):
"""
Bulk storage of source code package data
"""
add_packages = []
cls_model = InitDataBase.__meta_model(table_name)
cls_model = Packages.package_meta(table_name)
pkg_keys = ('name', 'url', 'rpm_license', 'version',
'release', 'summary', 'description')
with DBHelper(db_name="lifecycle") as database:
......@@ -354,6 +365,7 @@ class InitDataBase():
if add_packages:
database.batch_add(add_packages, cls_model)
database.session.commit()
def _save_src_requires(self, db_name):
"""
......
......@@ -5,7 +5,7 @@ Logging related
import os
import pathlib
import logging
from logging.handlers import RotatingFileHandler
from concurrent_log_handler import ConcurrentRotatingFileHandler
from packageship import system_config
from packageship.libs.configutils.readconfig import ReadConfig
......@@ -44,7 +44,7 @@ def setup_log(config=None):
except FileExistsError:
pathlib.Path(path).touch()
file_log_handler = RotatingFileHandler(
file_log_handler = ConcurrentRotatingFileHandler(
path, maxBytes=max_bytes, backupCount=backup_count)
formatter = logging.Formatter(
......@@ -96,7 +96,7 @@ class Log():
self.max_bytes = 314572800
def __init_handler(self):
self.__file_handler = RotatingFileHandler(
self.__file_handler = ConcurrentRotatingFileHandler(
self.__path, maxBytes=self.max_bytes, backupCount=self.backup_count, encoding="utf-8")
def __set_handler(self):
......
#!/usr/bin/python3
import sys
import signal
try:
def sig_handler(signum, frame):
print('Exit command mode')
sys.exit(0)
signal.signal(signal.SIGINT, sig_handler)
except:
pass
from packageship.pkgship import main
if __name__ == '__main__':
main()
......@@ -144,9 +144,7 @@ class PkgshipCommand(BaseCommand):
super(PkgshipCommand, self).__init__()
self.statistics = dict()
self.table = PkgshipCommand.create_table()
# Calculate the total width of the current terminal
# self.columns = int(os.popen('stty size', 'r').read().split()[1])
self.columns = 100
self.params = []
......
......@@ -109,8 +109,8 @@ function stop_service(){
if [ ! -n "$1" ]
then
echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]"
exit 0
echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]"
exit 0
fi
if [ X$2 = X ];then
......@@ -156,6 +156,6 @@ elif [ $1 = restart ];then
echo "===The run log is saved into: $daemonize==="
else
echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]"
echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]"
fi
Name: pkgship
Version: 1.1.0
Release: 0
Release: 2
Summary: Pkgship implements rpm package dependence ,maintainer, patch query and so no.
License: Mulan 2.0
URL: https://gitee.com/openeuler/openEuler-Advisor
......@@ -10,10 +10,10 @@ BuildArch: noarch
BuildRequires: python3-flask-restful python3-flask python3 python3-pyyaml python3-sqlalchemy
BuildRequires: python3-prettytable python3-requests python3-flask-session python3-flask-script python3-marshmallow
BuildRequires: python3-pandas python3-dateutil python3-XlsxWriter python3-xlrd python3-Flask-APScheduler python3-retrying
BuildRequires: python3-Flask-APScheduler python3-pandas python3-retrying python3-xlrd python3-XlsxWriter
Requires: python3-pip python3-flask-restful python3-flask python3 python3-pyyaml
Requires: python3-sqlalchemy python3-prettytable python3-requests
Requires: python3-pyinstaller python3-flask-session python3-flask-script python3-marshmallow python3-uWSGI
Requires: python3-flask-session python3-flask-script python3-marshmallow python3-uWSGI
Requires: python3-pandas python3-dateutil python3-XlsxWriter python3-xlrd python3-Flask-APScheduler python3-retrying
%description
......@@ -30,33 +30,17 @@ Pkgship implements rpm package dependence ,maintainer, patch query and so no.
%check
# The apscheduler cannot catch the local time, so a time zone must be assigned before running the test case.
export TZ=Asia/Shanghai
# change log_path to solve default log_path permission denied problem
log_path=`pwd`/tmp/
sed -i "/\[LOG\]/a\log_path=$log_path" test/common_files/package.ini
%{__python3} -m unittest test/run_tests.py
%{__python3} -m unittest test/init_test.py
%{__python3} -m unittest test/read_test.py
%{__python3} -m unittest test/write_test.py
rm -rf $log_path
%post
#build cli bin
if [ -f "/usr/bin/pkgship" ]; then
rm -rf /usr/bin/pkgship
fi
cd %{python3_sitelib}/packageship/
if [ -f "/usr/bin/pyinstaller" ]; then
/usr/bin/pyinstaller -F pkgship.py
elif [ -f "/usr/local/bin/pyinstaller" ]; then
/usr/local/bin/pyinstaller -F pkgship.py
else
echo "pkship install fail,there is no pyinstaller!"
exit
fi
sed -i "s/hiddenimports\=\[\]/hiddenimports\=\['pkg_resources.py2_warn'\]/g" pkgship.spec
/usr/local/bin/pyinstaller pkgship.spec
cp dist/pkgship /usr/bin/
rm -rf %{python3_sitelib}/packageship/build %{python3_sitelib}/packageship/dist
%postun
......@@ -66,11 +50,18 @@ rm -rf %{python3_sitelib}/packageship/build %{python3_sitelib}/packageship/dist
%{python3_sitelib}/*
%config %{_sysconfdir}/pkgship/*
%attr(0755,root,root) %{_bindir}/pkgshipd
%attr(0755,root,root) %{_bindir}/pkgship
%changelog
* Sat Aug 29 2020 Yiru Wang <wangyiru1@huawei.com> - 1.1.0-0
- Add the RPM package life cycle and issue summary features, adding the requires
* Tue Sep 1 2020 Zhengtang Gong <gongzhengtang@huawei.com> - 1.1.0-2
- Delete the packaged form of pyinstaller and change the execution
of the command in the form of a single file as the input
* Sat Aug 29 2020 Yiru Wang <wangyiru1@huawei.com> - 1.1.0-1
- Add package management features:
RPM packages statically displayed in the version repository
RPM packages used time displayed for current version in the version repository
Issue management of packages in a version-management repository
* Fri Aug 21 2020 Chengqiang Bao < baochengqiang1@huawei.com > - 1.0.0-7
- Fixed a problem with command line initialization of the Filepath parameter where relative paths are not supported and paths are too long
......
......@@ -5,8 +5,7 @@ file for software packaging
"""
from distutils.core import setup
config_path = "/etc/pkgship/" # pylint: disable=invalid-name
_CONFIG_PATH = "/etc/pkgship/"
setup(
name='packageship',
......@@ -59,6 +58,6 @@ setup(
long_description=open('README.md', encoding='utf-8').read(),
author='gongzt',
data_files=[
(config_path, ['packageship/package.ini']),
('/usr/bin', ['packageship/pkgshipd'])]
(_CONFIG_PATH, ['packageship/package.ini']),
('/usr/bin', ['packageship/pkgshipd', 'packageship/pkgship'])]
)
#!/usr/bin/python3
import unittest
class TestBase(unittest.TestCase):
"""
unittest unit test basic class
"""
def response_json_format(self, response):
"""
Json data judgment of corresponding content
"""
self.assertIn("code", response, msg="Error in data format return")
self.assertIn("msg", response, msg="Error in data format return")
self.assertIn("data", response, msg="Error in data format return")
......@@ -41,7 +41,7 @@ def get_correct_json_by_filename(filename):
"correct_test_result_json",
"{}.json".format(filename))
try:
with open(json_path, "r") as json_fp:
with open(json_path, "r", encoding='utf-8') as json_fp:
correct_list = json.loads(json_fp.read())
except FileNotFoundError:
return []
......
......@@ -24,32 +24,29 @@ class MyTestResult(unittest.TestResult):
"""When the use case is executed successfully"""
self.success_case_count += 1
super(MyTestResult, self).addSuccess(test)
if self.verbosity > 0:
sys.stderr.write('Success ')
sys.stderr.write(str(test))
sys.stderr.write('\n')
sys.stderr.write('Success ')
sys.stderr.write(str(test))
sys.stderr.write('\n')
def addError(self, test, err):
"""When a code error causes a use case to fail"""
self.err_case_count += 1
super(MyTestResult, self).addError(test, err)
if self.verbosity > 0:
sys.stderr.write('Error ')
sys.stderr.write(str(test)+'\n')
_,err_info = self.errors[-1]
sys.stderr.write(err_info)
sys.stderr.write('\n')
sys.stderr.write('Error ')
sys.stderr.write(str(test)+'\n')
_,err_info = self.errors[-1]
sys.stderr.write(err_info)
sys.stderr.write('\n')
def addFailure(self, test, err):
"""When the assertion is false"""
self.failure_case_count += 1
super(MyTestResult, self).addFailure(test, err)
if self.verbosity > 0:
sys.stderr.write('Failure ')
sys.stderr.write(str(test)+'\n')
_, err_info = self.failures[-1]
sys.stderr.write(err_info)
sys.stderr.write('\n')
sys.stderr.write('Failure ')
sys.stderr.write(str(test) + '\n')
_, err_info = self.failures[-1]
sys.stderr.write(err_info)
sys.stderr.write('\n')
class MyTestRunner():
......@@ -57,11 +54,8 @@ class MyTestRunner():
Run All TestCases
"""
def __init__(self, verbosity=0):
self.verbosity = verbosity
def run(self, test):
"""run MyTestResult and return result"""
result = MyTestResult(self.verbosity)
result = MyTestResult()
test(result)
return result
......@@ -7,6 +7,7 @@ import os
import unittest
from packageship.libs.exception import Error
try:
from packageship import system_config
......
......@@ -2,6 +2,8 @@
# -*- coding:utf-8 -*-
import os
import unittest
import json
from .basetest import TestBase
from packageship.libs.exception import Error
try:
......@@ -28,6 +30,15 @@ except Error:
raise
class ReadTestBase(unittest.TestCase):
class ReadTestBase(TestBase):
def client_request(self, url):
"""
Simulate client sending request
"""
response = self.client.get(url)
response_content = json.loads(response.data)
return response_content
def setUp(self):
self.client = app.test_client()
[
{
"input": {
"packagename": "A",
"dbname": "mainline"
},
"output": {
"code": "2001",
"data": {
"A1": [
"A",
"0.0.23b",
"mainline",
[
[
"B",
"build"
],
[
"D",
"build"
],
[
"D1",
"install"
],
[
"B1",
"install"
]
]
],
"A2": [
"A",
"0.0.23b",
"mainline",
[
[
"C",
"build"
],
[
"C1",
"install"
],
[
"A1",
"install"
]
]
],
"A_src": [
"source",
"0.0.23b",
"mainline",
[
[
"root",
null
]
]
],
"B1": [
"B",
"0.0.2",
"mainline",
[
[
"A",
"build"
],
[
"D",
"build"
]
]
],
"B2": [
"B",
"0.0.2",
"mainline",
[
[
"C",
"build"
]
]
],
"C1": [
"C",
"0.1",
"mainline",
[
[
"A",
"build"
],
[
"B",
"build"
],
[
"A2",
"install"
],
[
"B2",
"install"
]
]
],
"D1": [
"D",
"0.11",
"mainline",
[
[
"D2",
"install"
],
[
"A2",
"install"
]
]
]
},
"msg": "Successful Operation!"
}
{
"input": {
"packagename": "A",
"dbname": "mainline"
},
"output": {
"code": "2001",
"data": {
"A1": [
"A",
"0.0.23b",
"mainline",
[
[
"B",
"build"
],
[
"B1",
"install"
],
[
"D",
"build"
],
[
"D1",
"install"
]
]
],
"A2": [
"A",
"0.0.23b",
"mainline",
[
[
"A1",
"install"
],
[
"C",
"build"
],
[
"C1",
"install"
]
]
],
"A_src": [
"source",
"0.0.23b",
"mainline",
[
[
"root",
null
]
]
],
"B1": [
"B",
"0.0.2",
"mainline",
[
[
"A",
"build"
],
[
"D",
"build"
]
]
],
"B2": [
"B",
"0.0.2",
"mainline",
[
[
"C",
"build"
]
]
],
"C1": [
"C",
"0.1",
"mainline",
[
[
"A",
"build"
],
[
"A2",
"install"
],
[
"B",
"build"
],
[
"B2",
"install"
]
]
],
"C2": [
"C",
"0.1",
"mainline",
[
[
null,
null
]
]
],
"D1": [
"D",
"0.11",
"mainline",
[
[
"A2",
"install"
],
[
"D2",
"install"
]
]
],
"D2": [
"D",
"0.11",
"mainline",
[
[
null,
null
]
]
]
},
"msg": "Successful Operation!"
}
}
]
\ No newline at end of file
[
{
"database_name": "mainline",
"priority": 1,
"status": "enable"
"priority": 1
},
{
"database_name": "fedora30",
"priority": 2,
"status": "enable"
"priority": 2
}
]
\ No newline at end of file
[
{
"url": "/packages/packageInfo?sourceName=A&dbName=mainline",
"data": [
{
"buildDep": [
"B1",
"C1"
],
"dbname": "mainline",
"license": "GPLv2+ and BSD and MIT and IBM",
"maintainer": null,
"maintainlevel": null,
"rpm_packager": "Fedora Project",
"sourceName": "A",
"sourceURL": "http://play0ad.com",
"subpack": {
"A1": [
"A2"
],
"A2": [
"C1",
"D1"
]
},
"version": "0.0.23b"
}
]
}
]
\ No newline at end of file
{
"buildrequired": [
"B1",
"C1",
"C1"
],
"description": "0 A.D. (pronounced \"zero ey-dee\") is a free, open-source, cross-platform\nreal-time strategy (RTS) game of ancient warfare. In short, it is a\nhistorically-based war/economy game that allows players to relive or rewrite\nthe history of Western civilizations, focusing on the years between 500 B.C.\nand 500 A.D. The project is highly ambitious, involving state-of-the-art 3D\ngraphics, detailed artwork, sound, and a flexible and powerful custom-built\ngame engine.\n\nThe game has been in development by Wildfire Games (WFG), a group of volunteer,\nhobbyist game developers, since 2001.",
"feature": 0,
"gitee_url": "www.gitee.com/src-openeuler/A",
"issue": 0,
"license": "GPLv2+ and BSD and MIT and IBM",
"maintainer": null,
"maintainlevel": null,
"pkg_name": "A",
"release": "1.fc29",
"subpack": [
{
"id": 1,
"name": "A1",
"provides": [
{
"id": 4,
"name": "Ba",
"requiredby": [
"B1"
]
},
{
"id": 7,
"name": "Da",
"requiredby": [
"D1"
]
}
],
"requires": [
{
"id": 1,
"name": "Ac",
"providedby": [
"C1",
"C1"
]
}
]
},
{
"id": 2,
"name": "A2",
"provides": [
{
"id": 6,
"name": "Ca",
"requiredby": []
}
],
"requires": [
{
"id": 2,
"name": "Ac",
"providedby": [
"C1",
"C1"
]
},
{
"id": 3,
"name": "Bc",
"providedby": [
"C1"
]
}
]
}
],
"summary": "Cross-Platform RTS Game of Ancient Warfare",
"url": "http://play0ad.com",
"version": "0.0.23b"
}
\ No newline at end of file
[
{
"issue_type": [
"需求",
"CVE和安全问题",
"缺陷"
]
},
{
"issue_status": [
"open",
"progressing",
"closed",
"rejected"
]
},
{
"input": {
"hook_name": "issue_hooks",
"password": "pwd",
"hook_id": 1,
"hook_url": "http://gitee.com/liwen/gitos/hooks/1/edit",
"timestamp": "1576754827988",
"sign": "rLEHLuZRIQHuTPeXMib9Czoq9dVXO4TsQcmQQHtjXHA=",
"issue": {
"html_url": "https://gitee.com/oschina/gitee/issues/IG6E9",
"id": 295024870,
"number": "IG8E1",
"title": "IE fault",
"body": "js fault",
"issue_type": "缺陷",
"state": "open",
"comments": 0,
"created_at": "2018-02-07T23:46:46+08:00",
"updated_at": "2018-02-07T23:46:46+08:00",
"user": {
"id": 1,
"login": "robot",
"avatar_url": "https://gitee.com/assets/favicon.ico",
"html_url": "https://gitee.com/robot",
"type": "User",
"site_admin": false,
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"labels": [
{
"id": 827033694,
"name": "bug",
"color": "d73a4a"
}
],
"assignee": {
"id": 1,
"login": "robot",
"avatar_url": "https://gitee.com/assets/favicon.ico",
"html_url": "https://gitee.com/robot",
"type": "User",
"site_admin": false,
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"milestone": {
"html_url": "https://gitee.com/oschina/gitee/milestones/1",
"id": 3096855,
"number": 1,
"title": "problem",
"description": null,
"open_issues": 13,
"started_issues": 6,
"closed_issues": 31,
"approved_issues": 42,
"state": "open",
"created_at": "2018-02-01T23:46:46+08:00",
"updated_at": "2018-02-02T23:46:46+08:00",
"due_on": null
}
},
"repository": {
"id": 120249025,
"name": "Gitee",
"path": "Cython",
"full_name": "China/Gitee",
"owner": {
"id": 1,
"login": "robot",
"avatar_url": "https://gitee.com/assets/favicon.ico",
"html_url": "https://gitee.com/robot",
"type": "User",
"site_admin": false,
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"private": false,
"html_url": "https://gitee.com/oschina/gitee",
"url": "https://gitee.com/oschina/gitee",
"description": "",
"fork": false,
"created_at": "2018-02-05T23:46:46+08:00",
"updated_at": "2018-02-05T23:46:46+08:00",
"pushed_at": "2018-02-05T23:46:46+08:00",
"git_url": "git://gitee.com:oschina/gitee.git",
"ssh_url": "git@gitee.com:oschina/gitee.git",
"clone_url": "https://gitee.com/oschina/gitee.git",
"svn_url": "svn://gitee.com/oschina/gitee",
"git_http_url": "https://gitee.com/oschina/gitee.git",
"git_ssh_url": "git@gitee.com:oschina/gitee.git",
"git_svn_url": "svn://gitee.com/oschina/gitee",
"homepage": null,
"stargazers_count": 11,
"watchers_count": 12,
"forks_count": 0,
"language": "ruby",
"has_issues": true,
"has_wiki": true,
"has_pages": false,
"license": null,
"open_issues_count": 0,
"default_branch": "master",
"namespace": "oschina",
"name_with_namespace": "China/Gitee",
"path_with_namespace": "oschina/gitee"
},
"sender": {
"id": 1,
"login": "robot",
"avatar_url": "https://gitee.com/assets/favicon.ico",
"html_url": "https://gitee.com/robot",
"type": "User",
"site_admin": false,
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"enterprise": {
"name": "oschina",
"url": "https://gitee.com/oschina"
}
}
}
]
\ No newline at end of file
[{
"dbname": "mainline",
"downloadURL": null,
"license": "GPLv2+ and BSD and MIT and IBM",
"maintainer": null,
"maintainlevel": null,
"sourceName": "A",
"sourceURL": "http://play0ad.com",
"version": "0.0.23b"
}, {
"dbname": "mainline",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "B",
"sourceURL": null,
"version": "0.0.2"
}, {
"dbname": "mainline",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "C",
"sourceURL": null,
"version": "0.1"
}, {
"dbname": "mainline",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "D",
"sourceURL": null,
"version": "0.11"
}, {
"dbname": "fedora30",
"downloadURL": null,
"license": "GPLv2+ and BSD and MIT and IBM",
"maintainer": null,
"maintainlevel": null,
"sourceName": "A",
"sourceURL": "http://play0ad.com",
"version": "0.0.23b"
}, {
"dbname": "fedora30",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "B",
"sourceURL": null,
"version": "0.0.3"
}, {
"dbname": "fedora30",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "C",
"sourceURL": null,
"version": "0.1"
}, {
"dbname": "fedora30",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "D",
"sourceURL": null,
"version": "0.12"
}, {
"dbname": "fedora30",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "E",
"sourceURL": null,
"version": "0.4"
}, {
"dbname": "fedora30",
"downloadURL": null,
"license": null,
"maintainer": null,
"maintainlevel": null,
"sourceName": "F",
"sourceURL": null,
"version": "1"
}]
[
{
"release": "1.fc29",
"used_time": 0,
"maintainer": null,
"feature": 0,
"latest_version": null,
"latest_version_time": null,
"maintainlevel": null,
"url": "http://play0ad.com",
"release_time": null,
"id": 1,
"version": "0.0.23b",
"name": "A",
"rpm_license": "GPLv2+ and BSD and MIT and IBM",
"issue": 0
}
]
\ No newline at end of file
[
{
"id": 1,
"name": "A",
"maintainer": null,
"maintainlevel": null,
"release": "1.fc29",
"rpm_version": "0.0.23b",
"used_time": 0,
"release_time": null,
"latest_version_time": null,
"latest_version": null,
"feature": 0,
"url": "http://play0ad.com",
"license": "GPLv2+ and BSD and MIT and IBM",
"issue": 0
}
]
\ No newline at end of file
- database_name: mainline
priority: 1
status: enable
- database_name: fedora30
priority: 2
status: enable
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 4
\ No newline at end of file
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 3
\ No newline at end of file
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 4
\ No newline at end of file
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 3
\ No newline at end of file
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 6
\ No newline at end of file
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 3
\ No newline at end of file
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 4
\ No newline at end of file
version_control: NA
src_repo: NA
tag_prefix: NA
seperator: NA
maintainer: taotao
maintainlevel: 3
\ No newline at end of file
import unittest
import datetime
from test.base_code.my_test_runner import MyTestRunner
RUNNER = MyTestRunner()
def import_data_tests():
"""Initialize related test cases"""
from test.test_module.init_system_tests.test_importdata import ImportData
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(ImportData))
return RUNNER.run(suite)
start_time = datetime.datetime.now()
result_4_import = import_data_tests()
stop_time = datetime.datetime.now()
print('\nA Init Test total of %s test cases were run: \nsuccessful:%s\tfailed:%s\terror:%s\n' % (
int(result_4_import.testsRun),
int(result_4_import.success_case_count),
int(result_4_import.failure_case_count),
int(result_4_import.err_case_count)
))
print('Init Test Total Time: %s' % (stop_time - start_time))
#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
Execute all test cases
"""
import unittest
import datetime
from test.base_code.my_test_runner import MyTestRunner
RUNNER = MyTestRunner(verbosity=1)
def import_data_tests():
"""Initialize related test cases"""
from test.test_module.init_system_tests.test_importdata import ImportData
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(ImportData))
return RUNNER.run(suite)
RUNNER = MyTestRunner()
def read_data_tests():
"""Test cases with read operations on data"""
from test.test_module.dependent_query_tests.test_install_depend import TestInstallDepend
from test.test_module.dependent_query_tests.test_self_depend import TestSelfDepend
from test.test_module.dependent_query_tests.test_be_depend import TestBeDepend
......@@ -30,54 +14,30 @@ def read_data_tests():
from test.test_module.dependent_query_tests.test_build_depend import TestBuildDepend
from test.test_module.packages_tests.test_packages import TestPackages
from test.test_module.single_package_tests.test_get_singlepack import TestGetSinglePack
from test.test_module.lifecycle.test_maintainer import TestGetMaintainers
from test.test_module.lifecycle.test_downloadexcel import TestDownloadExcelFile
from test.test_module.lifecycle.test_get_issues import TestGetIssue
suite = unittest.TestSuite()
classes = [TestInstallDepend, TestSelfDepend, TestBeDepend,
TestGetRepodatas, TestBuildDepend, TestPackages, TestGetSinglePack]
TestGetRepodatas, TestBuildDepend, TestPackages,
TestGetSinglePack, TestGetMaintainers, TestDownloadExcelFile,
TestGetIssue]
for cls in classes:
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(cls))
return RUNNER.run(suite)
def write_data_tests():
"""Test cases with write operations on data"""
from test.test_module.repodatas_test.test_delete_repodatas import TestDeleteRepodatas
from test.test_module.single_package_tests.test_update_singlepack import TestUpdatePackage
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestDeleteRepodatas))
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestUpdatePackage))
return RUNNER.run(suite)
def main():
"""Test case execution entry function"""
start_time = datetime.datetime.now()
result_4_import = import_data_tests()
result_4_read = read_data_tests()
result_4_write = write_data_tests()
stop_time = datetime.datetime.now()
print('\nA total of %s test cases were run: \nsuccessful:%s\tfailed:%s\terror:%s\n' % (
int(result_4_import.testsRun) + int(result_4_read.testsRun) + int(result_4_write.testsRun),
int(
result_4_import.success_case_count
) + int(result_4_read.success_case_count) + int(result_4_write.success_case_count),
int(
result_4_import.failure_case_count
) + int(result_4_read.failure_case_count) + int(result_4_write.failure_case_count),
int(
result_4_import.err_case_count
) + int(result_4_read.err_case_count) + int(result_4_write.err_case_count)
))
print('Total Time: %s' % (stop_time - start_time))
start_time = datetime.datetime.now()
result_4_read = read_data_tests()
stop_time = datetime.datetime.now()
print('\nA Read Test total of %s test cases were run: \nsuccessful:%s\tfailed:%s\terror:%s\n' % (
int(result_4_read.testsRun),
int(result_4_read.success_case_count),
int(result_4_read.failure_case_count),
int(result_4_read.err_case_count)
))
main()
print('Read Test Total Time: %s' % (stop_time - start_time))
......@@ -280,10 +280,7 @@ class TestSelfDepend(ReadTestBase):
data=json.dumps(input_value),
content_type="application/json")
output_for_input = correct_data["output"]
from pprint import pprint
resp_dict = json.loads(resp.data)
self.assertTrue(compare_two_values(output_for_input, resp_dict),
msg="The answer is not correct")
......
......@@ -64,7 +64,7 @@ class ImportData(unittest.TestCase):
# Yaml file exists but the content is empty
try:
_config_path = ReadConfig().get_system('init_conf_path')
_config_path = ReadConfig(system_config.SYS_CONFIG_PATH).get_system('init_conf_path')
shutil.copyfile(_config_path, _config_path + '.bak')
with open(_config_path, 'w', encoding='utf-8') as w_f:
......@@ -83,7 +83,7 @@ class ImportData(unittest.TestCase):
# Yaml file exists but DB exists_ The same with name
try:
_config_path = ReadConfig().get_system('init_conf_path')
_config_path = ReadConfig(system_config.SYS_CONFIG_PATH).get_system('init_conf_path')
shutil.copyfile(_config_path, _config_path + '.bak')
with open(_config_path, 'r', encoding='utf-8') as file:
origin_yaml = yaml.load(file.read(), Loader=yaml.FullLoader)
......@@ -118,7 +118,7 @@ class ImportData(unittest.TestCase):
config.set("SYSTEM", "init_conf_path", "D:\\Users\\conf.yaml")
config.write(open(system_config.SYS_CONFIG_PATH, "w"))
_config_path = ReadConfig().get_system('init_conf_path')
_config_path = ReadConfig(system_config.SYS_CONFIG_PATH).get_system('init_conf_path')
InitDataBase(config_file_path=_config_path).init_data()
except FileNotFoundError as error:
self.assertEqual(
......@@ -132,36 +132,10 @@ class ImportData(unittest.TestCase):
system_config.SYS_CONFIG_PATH + ".bak",
system_config.SYS_CONFIG_PATH)
# Dbtype error
try:
# Back up source files
shutil.copyfile(
system_config.SYS_CONFIG_PATH,
system_config.SYS_CONFIG_PATH + ".bak")
# Modify dbtype to "test"_ dbtype"
config = ConfigParser()
config.read(system_config.SYS_CONFIG_PATH)
config.set("DATABASE", "dbtype", "test_dbtype")
config.write(open(system_config.SYS_CONFIG_PATH, "w"))
_config_path = ReadConfig().get_system('init_conf_path')
InitDataBase(config_file_path=None).init_data()
except Error as error:
self.assertEqual(
error.__class__,
Error,
msg="Wrong exception type thrown when dbtype is wrong")
finally:
# To restore a file, delete the file first and then rename it back
os.remove(system_config.SYS_CONFIG_PATH)
os.rename(
system_config.SYS_CONFIG_PATH + ".bak",
system_config.SYS_CONFIG_PATH)
def test_dbname(self):
"""test dbname"""
try:
_config_path = ReadConfig().get_system('init_conf_path')
_config_path = ReadConfig(system_config.SYS_CONFIG_PATH).get_system('init_conf_path')
shutil.copyfile(_config_path, _config_path + '.bak')
with open(_config_path, 'r', encoding='utf-8') as file:
origin_yaml = yaml.load(file.read(), Loader=yaml.FullLoader)
......@@ -185,7 +159,7 @@ class ImportData(unittest.TestCase):
def test_src_db_file(self):
"""test src db file"""
try:
_config_path = ReadConfig().get_system('init_conf_path')
_config_path = ReadConfig(system_config.SYS_CONFIG_PATH).get_system('init_conf_path')
shutil.copyfile(_config_path, _config_path + '.bak')
with open(_config_path, 'r', encoding='utf-8') as file:
origin_yaml = yaml.load(file.read(), Loader=yaml.FullLoader)
......@@ -209,7 +183,7 @@ class ImportData(unittest.TestCase):
def test_priority(self):
"""test priority"""
try:
_config_path = ReadConfig().get_system('init_conf_path')
_config_path = ReadConfig(system_config.SYS_CONFIG_PATH).get_system('init_conf_path')
shutil.copyfile(_config_path, _config_path + '.bak')
with open(_config_path, 'r', encoding='utf-8') as file:
origin_yaml = yaml.load(file.read(), Loader=yaml.FullLoader)
......@@ -237,7 +211,7 @@ class ImportData(unittest.TestCase):
Initialization of system data
"""
# Normal configuration
_config_path = ReadConfig().get_system('init_conf_path')
_config_path = ReadConfig(system_config.SYS_CONFIG_PATH).get_system('init_conf_path')
InitDataBase(config_file_path=_config_path).init_data()
# In the correct case, an import will be generated under the initsystem
......
......@@ -3,6 +3,7 @@
"""
test_get_single_packages
"""
from io import BytesIO
import os
import unittest
import pandas as pd
......@@ -44,7 +45,7 @@ class TestDownloadExcelFile(ReadTestBase):
"""
response = self.client.get("/lifeCycle/download/issues")
data_frame = pd.read_excel(
response.data, sheet_name='Summary')
BytesIO(response.data), sheet_name='Summary',engine='xlrd')
datas = data_frame.values.tolist()
self.assertEqual(
14, len(datas), msg="An error occurred in the downloaded data")
......@@ -55,7 +56,7 @@ class TestDownloadExcelFile(ReadTestBase):
'issue_content': 'def get_yaml(self, pkg):',
'issue_title': '【CI加固】对识别修改对周边组件和升级影响',
'issue_status': 'open',
'name': 'dnf',
'pkg_name': 'dnf',
'issue_type': 'defect',
'related_release': 'hahaxx'
}
......@@ -70,7 +71,7 @@ class TestDownloadExcelFile(ReadTestBase):
"/lifeCycle/download/packages?table_name=mainline")
data_frame = pd.read_excel(
response.data, sheet_name='Summary')
BytesIO(response.data), sheet_name='Summary',engine='xlrd')
datas = data_frame.values.tolist()
self.assertEqual(
5, len(datas), msg="An error occurred in the downloaded data")
......
......@@ -21,28 +21,7 @@ class TestGetIssue(ReadTestBase):
Less transmission is always parameter transmission
"""
# No arguments passed
resp = self.client.get("/lifeCycle/issuetrace?table_name=&page_num=&page_size=")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# Only the table_name
resp = self.client.get("/lifeCycle/issuetrace?table_name=mainline&page_num=&page_size=")
resp = self.client.get("/lifeCycle/issuetrace?page_num=&page_size=")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -63,7 +42,7 @@ class TestGetIssue(ReadTestBase):
msg="Error in data information return")
# Only the page_num
resp = self.client.get("/lifeCycle/issuetrace?table_name+&page_num=1&page_size=")
resp = self.client.get("/lifeCycle/issuetrace?page_num=1&page_size=")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -84,28 +63,7 @@ class TestGetIssue(ReadTestBase):
msg="Error in data information return")
# Only the page_size
resp = self.client.get("/lifeCycle/issuetrace?table_name=&page_num=&page_size=5")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# Without table_name
resp = self.client.get("/lifeCycle/issuetrace?table_name=&page_num=1&page_size=5")
resp = self.client.get("/lifeCycle/issuetrace?page_num=&page_size=5")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -126,7 +84,7 @@ class TestGetIssue(ReadTestBase):
msg="Error in data information return")
# Without page_num
resp = self.client.get("/lifeCycle/issuetrace?table_name=mainline&page_num=&page_size=5")
resp = self.client.get("/lifeCycle/issuetrace?page_num=&page_size=5")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -147,7 +105,7 @@ class TestGetIssue(ReadTestBase):
msg="Error in data information return")
# Without page_size
resp = self.client.get("/lifeCycle/issuetrace?table_name=mainline&page_num=1&page_size=")
resp = self.client.get("/lifeCycle/issuetrace?page_num=1&page_size=")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -172,7 +130,7 @@ class TestGetIssue(ReadTestBase):
Results contrast
"""
# All incoming
resp = self.client.get("/lifeCycle/issuetrace?table_name=mainline&page_num=1&page_size=5")
resp = self.client.get("/lifeCycle/issuetrace?page_num=1&page_size=5")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -195,7 +153,7 @@ class TestGetIssue(ReadTestBase):
"""
# pkg_name Parameter error
resp = self.client.get(
"/lifeCycle/issuetrace?table_name=mainline&pkg_name=hhh")
"/lifeCycle/issuetrace?pkg_name=hhh")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -214,7 +172,7 @@ class TestGetIssue(ReadTestBase):
# page_num Parameter error
resp = self.client.get(
"/lifeCycle/issuetrace?table_name=mainline&pkg_name=dnf&page_num=x")
"/lifeCycle/issuetrace?pkg_name=dnf&page_num=x")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -236,26 +194,7 @@ class TestGetIssue(ReadTestBase):
# page_size Parameter error
resp = self.client.get(
"/lifeCycle/issuetrace?table_name=mainline&pkg_name=dnf&page_num=1&page_size=x")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
# table_name Parameter error
resp = self.client.get(
"/lifeCycle/issuetrace?table_name=xer&pkg_name=dnf")
"/lifeCycle/issuetrace?pkg_name=dnf&page_num=1&page_size=x")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......
......@@ -26,7 +26,6 @@ class TestIssueCatch(OperateTestBase):
json='')
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Wrong return format!")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
......@@ -61,3 +60,7 @@ class TestIssueCatch(OperateTestBase):
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
if __name__ == '__main__':
unittest.main()
......@@ -3,6 +3,7 @@
"""
packges test
"""
from test.base_code.common_test_code import get_correct_json_by_filename, compare_two_values
from test.base_code.read_data_base import ReadTestBase
import unittest
import json
......@@ -15,29 +16,297 @@ class TestPackages(ReadTestBase):
All package test cases
"""
def test_empty_dbname(self):
"""dbName is none"""
def test_miss_required_parameter(self):
"""
Missing required parameters
"""
# test miss all table_name page_num page_size
resp = self.client.get("/packages?table_name=&page_num=&page_size=")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test miss table_name
resp = self.client.get("/packages?table_name=&page_num=1&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test miss page_num
resp = self.client.get(
"/packages?table_name=mainline&page_num=&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test miss page_size
resp = self.client.get(
"/packages?table_name=mainline&page_num=1&page_size=")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_wrong_required_parameter(self):
"""
wrong required parameters
"""
# test wrong page_num
resp = self.client.get(
"/packages?table_name=mainline&page_num=-1&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
# test wrong page_num
resp = self.client.get(
"/packages?table_name=mainline&page_num=a&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test wrong page_num
resp = self.client.get(
"/packages?table_name=mainline&page_num=1.1&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test wrong page_num
resp = self.client.get(
"/packages?table_name=mainline&page_num=65535&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
resp = self.client.get("/packages")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test wrong page_size
resp = self.client.get(
"/packages?table_name=mainline&page_num=1&page_size=-1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test wrong page_size
resp = self.client.get(
"/packages?table_name=mainline&page_num=1&page_size=65535")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test wrong page_size
resp = self.client.get(
"/packages?table_name=mainline&page_num=1&page_size=a")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# test wrong page_size
resp = self.client.get(
"/packages?table_name=mainline&page_num=1&page_size=1.1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_true_required_parameter(self):
"""
test_true_required_parameter
"""
resp = self.client.get(
"/packages?table_name=fedora30&page_num=1&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.CODE_MSG_MAP.get(ResponseCode.SUCCESS),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.SUCCESS),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNotNone(
resp_dict.get("data"),
msg="Error in data information return")
resp = self.client.get("/packages?dbName=")
resp_dict = json.loads(resp.data)
correct_list = get_correct_json_by_filename("packages")
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
......@@ -50,33 +319,85 @@ class TestPackages(ReadTestBase):
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNotNone(
self.assertTrue(
compare_two_values(
resp_dict.get("data"),
correct_list),
msg="Error in data information return")
def test_wrong_table_name(self):
"""
test_wrong_table_name
"""
# test wrong table name
resp = self.client.get(
"/packages?table_name=test&page_num=1&page_size=1")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.TABLE_NAME_NOT_EXIST,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.TABLE_NAME_NOT_EXIST),
resp_dict.get("msg"),
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_wrong_dbname(self):
"""dbName is err"""
def test_wrong_optional_paramters(self):
"""
test wrong Optional parameters
"""
resp = self.client.get("/packages?dbName=test")
# test wrong maintainlevel
resp = self.client.get(
"/packages?table_name=mainline&query_pkg_name=&maintainner=&maintainlevel=5&page_num=1&page_size=4")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.DB_NAME_ERROR,
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.DB_NAME_ERROR),
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in data format return")
msg="Error in status code return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_like_srcname_paramters(self):
resp = self.client.get(
"/packages?table_name=fedora30&page_num=1&page_size=4&query_pkg_name=A")
resp_dict = json.loads(resp.data)
correct_list = get_correct_json_by_filename(
"packages_like_src")
if __name__ == '__main__':
unittest.main()
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.CODE_MSG_MAP.get(ResponseCode.SUCCESS),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertTrue(
compare_two_values(
resp_dict.get("data"),
correct_list),
msg="Error in data information return")
......@@ -12,13 +12,14 @@ import json
from packageship import system_config
from packageship.libs.exception import Error
from packageship.application.apps.package.function.constants import ResponseCode
from packageship.application.apps.package.function.searchdb import db_priority
class TestDeleteRepodatas(OperateTestBase):
"""
test delete repodata
"""
def test_wrong_dbname(self):
"""Test simulation scenario, dbname is not transmitted"""
......@@ -73,7 +74,6 @@ class TestDeleteRepodatas(OperateTestBase):
shutil.copytree(system_config.DATABASE_FOLDER_PATH, system_config.DATABASE_FOLDER_PATH + '.bak')
resp = self.client.delete("/repodatas?dbName=fedora30")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
resp_dict.get("code"),
......
......@@ -11,17 +11,22 @@ import json
from packageship.application.apps.package.function.constants import ResponseCode
from packageship.application.apps.package.function.searchdb import db_priority
class TestGetSinglePack(ReadTestBase):
"""
Single package test case
"""
db_name = db_priority()[-1]
def test_error_sourcename(self):
"""sourceName is none or err"""
resp = self.client.get(f"packages/packageInfo?dbName={self.db_name}")
def test_missing_required_parameters(self):
"""
Missing required parameters
"""
# Missing required parameters pkg_name
resp = self.client.get(
f"packages/packageInfo?pkg_name=&table_name=mainline")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
......@@ -39,8 +44,8 @@ class TestGetSinglePack(ReadTestBase):
resp_dict.get("data"),
msg="Error in data information return")
resp = self.client.get(
f"packages/packageInfo?sourceName=&dbName={self.db_name}")
# Missing required parameters table_name
resp = self.client.get(f"packages/packageInfo?pkg_name=A&table_name=")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
......@@ -60,19 +65,25 @@ class TestGetSinglePack(ReadTestBase):
resp_dict.get("data"),
msg="Error in data information return")
def test_wrong_parameters(self):
"""
test wrong parramters
"""
# Missing required parameters table_name
resp = self.client.get(
"packages/packageInfo?sourceName=test&dbName=for")
f"packages/packageInfo?pkg_name=A&table_name=test")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.DB_NAME_ERROR,
self.assertEqual(ResponseCode.TABLE_NAME_NOT_EXIST,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.DB_NAME_ERROR),
ResponseCode.TABLE_NAME_NOT_EXIST),
resp_dict.get("msg"),
msg="Error in status prompt return")
......@@ -81,33 +92,39 @@ class TestGetSinglePack(ReadTestBase):
resp_dict.get("data"),
msg="Error in data information return")
def test_true_dbname(self):
"""dbName is null or err"""
resp = self.client.get("packages/packageInfo?sourceName=A")
# Missing required parameters pkg_name
resp = self.client.get(
f"packages/packageInfo?pkg_name=test&table_name=fedora30")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
self.assertEqual(ResponseCode.PACK_NAME_NOT_FOUND,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.CODE_MSG_MAP.get(ResponseCode.SUCCESS),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PACK_NAME_NOT_FOUND),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNotNone(
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
correct_list = get_correct_json_by_filename("get_single_package")
self.assertNotEqual([], correct_list, msg="Error reading JSON file")
input_value = correct_list[0]["url"]
def test_true_parameters(self):
"""
test true parameters
"""
resp = self.client.get(
f"{input_value}")
"/packages/packageInfo?pkg_name=A&table_name=fedora30")
resp_dict = json.loads(resp.data)
correct_list = get_correct_json_by_filename(
"get_single_package")
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
resp_dict.get("code"),
......@@ -122,32 +139,5 @@ class TestGetSinglePack(ReadTestBase):
self.assertTrue(
compare_two_values(
resp_dict.get("data"),
correct_list[0]['data']),
correct_list),
msg="Error in data information return")
def test_wrong_dbname(self):
"""test_wrong_dbname"""
resp = self.client.get(
"/packages/packageInfo?sourceName=A&dbName=open")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.DB_NAME_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.DB_NAME_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
if __name__ == '__main__':
unittest.main()
#!/usr/bin/python3
"""TestUpdatePackage"""
# -*- coding:utf-8 -*-
import os
from test.base_code.operate_data_base import OperateTestBase
import unittest
from packageship import system_config
import json
from packageship.application.apps.package.function.constants import ResponseCode
from packageship.application.apps.package.function.searchdb import db_priority
class TestUpdatePackage(OperateTestBase):
class TestBatchUpdatePackage(OperateTestBase):
"""TestUpdatePackage"""
db_name = db_priority()[0]
def test_empty_dbname(self):
"""Parameter error"""
resp = self.client.put("/packages/packageInfo",
data=json.dumps({"dbName": "",
"sourceName": "xx",
"maintainer": "",
"maintainlevel": "1"}),
def test_missing_required_parameters(self):
"""
Parameter error
"""
# all miss required parameters
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"batch": ""}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
......@@ -40,25 +41,168 @@ class TestUpdatePackage(OperateTestBase):
resp_dict.get("data"),
msg="Error in data information return")
# wrong dbname
resp = self.client.put("/packages/packageInfo",
data=json.dumps({"dbName": "xhhz",
"sourceName": "xx",
"maintainer": "",
"maintainlevel": "1"}),
# all miss wrong parameters
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"batch": "1"}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.DB_NAME_ERROR,
self.assertEqual(ResponseCode.SPECIFIED_FILE_NOT_EXIST,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.SPECIFIED_FILE_NOT_EXIST),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_read_yaml_update(self):
"""
Returns:
"""
# Missing file path
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"batch": 1}),
content_type="application/json")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SPECIFIED_FILE_NOT_EXIST,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.SPECIFIED_FILE_NOT_EXIST),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# File path error
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"batch": 1,
"filepath": "D\\"}),
content_type="application/json")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SPECIFIED_FILE_NOT_EXIST,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.SPECIFIED_FILE_NOT_EXIST),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# Data error in yaml file
yaml_path = os.path.join(
os.path.dirname(system_config.BASE_PATH),
"test",
"common_files",
"test_wrong_format_yaml")
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"filepath": yaml_path,
"batch": 1
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.YAML_FILE_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.YAML_FILE_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# Data error in yaml file
yaml_path = os.path.join(
os.path.dirname(system_config.BASE_PATH),
"test",
"common_files",
"test_wrong_main_yaml")
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"filepath": yaml_path,
"batch": 1
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.YAML_FILE_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.YAML_FILE_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_batch_error(self):
"""
test_batch_error
Returns:
"""
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"filepath": "C:\\",
"batch": 2
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.DB_NAME_ERROR),
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
......@@ -67,13 +211,54 @@ class TestUpdatePackage(OperateTestBase):
resp_dict.get("data"),
msg="Error in data information return")
def test_empty_sourcename(self):
"""Parameter error"""
def test_true_yaml(self):
"""
Returns:
resp = self.client.put("/packages/packageInfo",
data=json.dumps({"dbName": f"{self.db_name}",
"sourceName": "xx",
"maintainer": "1"}),
"""
yaml_path = os.path.join(
os.path.dirname(system_config.BASE_PATH),
"test",
"common_files",
"test_true_yaml")
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({"filepath": yaml_path,
"batch": 1
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.SUCCESS),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_single_update(self):
"""
Returns:
"""
# Various parameters are missing
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({
"pkg_name": "",
"batch": 0
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
......@@ -94,10 +279,13 @@ class TestUpdatePackage(OperateTestBase):
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
# miss maintainer maintainlevel
resp = self.client.put("/packages/packageInfo",
data=json.dumps({"dbName": f"{self.db_name}",
"sourceName": "xx"}),
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({
"pkg_name": "CUnit",
"batch": 0,
"maintainlevel": "a"
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
......@@ -119,15 +307,45 @@ class TestUpdatePackage(OperateTestBase):
resp_dict.get("data"),
msg="Error in data information return")
def test_true_parram(self):
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({
"pkg_name": "CUnit",
"batch": 0,
"maintainlevel": "6"
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PARAM_ERROR,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PARAM_ERROR),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_ture_name(self):
"""
test table name
Returns:
"""
resp = self.client.put("/packages/packageInfo",
data=json.dumps({"dbName": f"{self.db_name}",
"sourceName": "A",
"maintainer": "x",
"maintainlevel": "1"}),
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({
"pkg_name": "CUnit",
"batch": 0,
"maintainlevel": "4"
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
......@@ -149,6 +367,68 @@ class TestUpdatePackage(OperateTestBase):
resp_dict.get("data"),
msg="Error in data information return")
def test_pkg_name(self):
"""
test_pkg_name
Returns:
"""
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({
"pkg_name": "",
"batch": 0,
"maintainlevel": "4"
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.PACK_NAME_NOT_FOUND,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.PACK_NAME_NOT_FOUND),
resp_dict.get("msg"),
msg="Error in status prompt return")
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
def test_true_updata_single(self):
"""
test_true_single
Returns:
"""
resp = self.client.put("/lifeCycle/updatePkgInfo",
data=json.dumps({
"pkg_name": "CUnit",
"batch": 0,
"maintainlevel": "4"
}),
content_type="application/json")
resp_dict = json.loads(resp.data)
resp_dict.get("data")
self.assertIn("code", resp_dict, msg="Error in data format return")
self.assertEqual(ResponseCode.SUCCESS,
resp_dict.get("code"),
msg="Error in status code return")
self.assertIn("msg", resp_dict, msg="Error in data format return")
self.assertEqual(
ResponseCode.CODE_MSG_MAP.get(
ResponseCode.SUCCESS),
resp_dict.get("msg"),
msg="Error in status prompt return")
if __name__ == '__main__':
unittest.main()
self.assertIn("data", resp_dict, msg="Error in data format return")
self.assertIsNone(
resp_dict.get("data"),
msg="Error in data information return")
#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
Execute all test cases
"""
import unittest
import datetime
from test.base_code.my_test_runner import MyTestRunner
RUNNER = MyTestRunner()
def write_data_tests():
"""Test cases with write operations on data"""
from test.test_module.repodatas_test.test_delete_repodatas import TestDeleteRepodatas
from test.test_module.single_package_tests.test_update_singlepack import TestBatchUpdatePackage
from test.test_module.lifecycle.test_issue_catch import TestIssueCatch
suite = unittest.TestSuite()
classes = [
# TestDeleteRepodatas,
# TestBatchUpdatePackage,
TestIssueCatch
]
for cls in classes:
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(cls))
return RUNNER.run(suite)
start_time = datetime.datetime.now()
result_4_write = write_data_tests()
stop_time = datetime.datetime.now()
print('\nA Write Test total of %s test cases were run: \nsuccessful:%s\tfailed:%s\terror:%s\n' % (
int(result_4_write.testsRun),
int(result_4_write.success_case_count),
int(result_4_write.failure_case_count),
int(result_4_write.err_case_count)
))
print('Write Test Total Time: %s' % (stop_time - start_time))
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册