From c06c5047116d1e27f1509b0d62da20c35bbbc232 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 20 Oct 2021 11:55:35 +0200 Subject: [PATCH 001/108] add: Add `--no-logging` parameter to `qa-docs` tool. #1864 --- .../wazuh_testing/scripts/qa_docs.py | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 47a84fe41e..a79a2cad2f 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -37,6 +37,14 @@ def set_qadocs_logger_level(logging_level): else: qadocs_logger.set_level(logging_level) +def set_parameters(args): + # Set the qa-docs logger level + if args.debug_level: + set_qadocs_logger_level('DEBUG') + + # Deactivate the qa-docs logger if necessary. + if args.no_logging: + set_qadocs_logger_level(None) def get_parameters(): """Capture the script parameters @@ -53,6 +61,9 @@ def get_parameters(): parser.add_argument('-s', '--sanity-check', action='store_true', dest='sanity', help="Run a sanity check.") + parser.add_argument('--no-logging', action='store_true', dest='no_logging', + help="Do not perform logging when running the tool.") + parser.add_argument('-v', '--version', action='store_true', dest="version", help="Print qa-docs version.") @@ -127,6 +138,10 @@ def check_incompatible_parameters(parameters): '-t, --tests get specific tests information.', qadocs_logger.error) + if parameters.no_logging and parameters.debug_level: + raise QAValueError('You cannot specify debug level and no-logging at the same time.', + qadocs_logger.error) + def validate_parameters(parameters, parser): """Validate the parameters that qa-docs receives. @@ -254,12 +269,9 @@ def index_and_visualize_data(args): def main(): args, parser = get_parameters() + set_parameters(args) validate_parameters(args, parser) - # Set the qa-docs logger level - if args.debug_level: - set_qadocs_logger_level('DEBUG') - if args.version: with open(VERSION_PATH, 'r') as version_file: version_data = version_file.read() From cb7638829458e921d0dc9686ef75e760715f7299 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 20 Oct 2021 12:16:20 +0200 Subject: [PATCH 002/108] refac: Change the `path` field within `qa-docs` schema. #2075 Now `qa-docs` allows the autogenerated fields. When the autogenerated path is specified in the module documentation, it will raise an error. --- .../wazuh_testing/qa_docs/lib/code_parser.py | 18 +++++++++-- .../wazuh_testing/qa_docs/lib/config.py | 30 +++++++++++-------- .../wazuh_testing/qa_docs/schema.yaml | 5 ++-- 3 files changed, 36 insertions(+), 17 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 647466a54d..f251ae243e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -58,10 +58,13 @@ def is_documentable_function(self, function): def remove_ignored_fields(self, doc): """Remove the fields from a parsed test file to delete the fields that are not mandatory or optional. + It may disappear because the fields that are parsed and not specified in the `qa-docs` schema raise an error. + Args: doc (dict): A dict that contains the parsed documentation block" """ - allowed_fields = self.conf.module_fields.mandatory + self.conf.module_fields.optional + INTERNAL_FIELDS + allowed_fields = self.conf.module_fields.mandatory + self.conf.module_fields.optional \ + + self.conf.module_fields.auto + INTERNAL_FIELDS remove_inexistent(doc, allowed_fields, STOP_FIELDS) if 'tests' in doc: @@ -93,7 +96,8 @@ def check_fields(self, doc, doc_type, path): # check that only schema fields are documented for field in doc.keys(): - if field not in expected_fields.mandatory and field not in expected_fields.optional and field != 'name': + if field not in expected_fields.mandatory and field not in expected_fields.optional \ + and field not in expected_fields.auto and field != 'name': CodeParser.LOGGER.error(f"{field} is not specified in qa-docs schema.") raise QAValueError(f"{field} is not specified in qa-docs schema.", CodeParser.LOGGER.error) @@ -200,7 +204,15 @@ def parse_test(self, path, id, group_id): module_doc['name'] = os.path.basename(path) module_doc['id'] = id module_doc['group_id'] = group_id - module_doc['path'] = re.sub(r'.*wazuh-qa\/', '', path) + # If the path is specified within the documentation block, it raises an error + try: + if module_doc['path']: + CodeParser.LOGGER.error('Path field is an autogenerated field, you must not specify it.') + raise QAValueError('Path field is an autogenerated field, you must not specify it.', + CodeParser.LOGGER.error) + # If not, it is autogenerated + except: + module_doc['path'] = re.sub(r'.*wazuh-qa\/', '', path) test_cases = None if self.conf.test_cases_field: diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py index 8136e07142..c70abc5130 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py @@ -171,14 +171,18 @@ def __read_module_fields(self): module_fields = self._schema_data['output_fields']['module'] - if 'mandatory' not in module_fields and 'optional' not in module_fields: + if 'mandatory' not in module_fields and 'optional' not in module_fields and 'auto' not in module_fields: raise QAValueError('mandatory module fields are missing in the schema file', Config.LOGGER.error) - if 'mandatory' in module_fields: - self.module_fields.mandatory = module_fields['mandatory'] + if 'optional' not in module_fields: + raise QAValueError('optional module fields are missing in the schema file', Config.LOGGER.error) - if 'optional' in module_fields: - self.module_fields.optional = module_fields['optional'] + if 'auto' not in module_fields: + raise QAValueError('mandatory module fields are missing in the schema file', Config.LOGGER.error) + + self.module_fields.mandatory = module_fields['mandatory'] + self.module_fields.optional = module_fields['optional'] + self.module_fields.auto = module_fields['auto'] def __read_test_fields(self): """Read from the schema file the optional and mandatory fields for the test functions. @@ -196,14 +200,14 @@ def __read_test_fields(self): test_fields = self._schema_data['output_fields']['test'] - if 'mandatory' not in test_fields and 'optional' not in test_fields: + if 'mandatory' not in test_fields: raise QAValueError('mandatory module fields are missing in the schema file', Config.LOGGER.error) - if 'mandatory' in test_fields: - self.test_fields.mandatory = test_fields['mandatory'] + if 'optional' not in test_fields: + raise QAValueError('optional module fields are missing in the schema file', Config.LOGGER.error) - if 'optional' in test_fields: - self.test_fields.optional = test_fields['optional'] + self.test_fields.mandatory = test_fields['mandatory'] + self.test_fields.optional = test_fields['optional'] def __read_output_fields(self): """Read all the mandatory and optional fields from schema file. @@ -229,12 +233,14 @@ class _fields: """Struct for the documentation fields. Attributes: - mandatory: A list of strings that contains the mandatory block fields - optional: A list of strings that contains the optional block fields + mandatory (list): A list of strings that contains the mandatory block fields + optional (list): A list of strings that contains the optional block fields + auto (list): A lis tof strings that contains the fields autogeneratod """ def __init__(self): self.mandatory = [] self.optional = [] + self.auto = [] class Mode(Enum): diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index 95a441be9b..31720ea2ab 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -11,10 +11,11 @@ output_fields: - os_platform - os_version optional: - - path - references - pytest_args - tags + auto: + - path test: mandatory: - description @@ -25,7 +26,7 @@ output_fields: - expected_output optional: - inputs - - tags + - tags test_cases_field: test_cases From ac230dd1e2a2b5784134044fda476fbeff400097 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 20 Oct 2021 12:26:39 +0200 Subject: [PATCH 003/108] add: Add new tags to `schema.yaml`. #2075 New FIM tags added to `schema.yaml` file. --- .../wazuh_testing/qa_docs/schema.yaml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index 31720ea2ab..c783144fcd 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -205,6 +205,34 @@ predefined_values: - fim_env_variables - fim_file_limit - fim_follow_symbolic_link + - fim_ignore + - fim_inotify + - fim_invalid + - fim_max_eps + - fim_max_files_per_second + - fim_moving_files + - fim_multiple_dirs + - fim_nodiff + - fim_prefilter_cmd + - fim_report_changes + - fim_process_priority + - fim_recursion_level + - fim_restrict + - fim_scan + - fim_skip + - fim_stats_integrity_sync + - fim_tags + - fim_timezone_changes + - fim_wildcards_complex + - fim_windows_audit_interval + - fim_registry_ambiguous_confs + - fim_registry_basic_usage + - fim_registry_checks + - fim_registry_ignore + - fim_registry_nodiff + - fim_registry_file_limit + - fim_registry_multiple_registries + - fim_registry_recursion_level - gcloud - github - integrity From df873bb736745bcb8d978e46a0fb1b670401de07 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 20 Oct 2021 14:16:05 +0200 Subject: [PATCH 004/108] refac: Change how `qa-docs` manage the `inputs` field. #2075 - Useless `schema.yaml` field removed. - Refac how test_cases are stored. --- .../wazuh_testing/qa_docs/lib/code_parser.py | 17 +++++++---------- .../wazuh_testing/qa_docs/lib/config.py | 12 +----------- .../wazuh_testing/qa_docs/schema.yaml | 2 -- 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index f251ae243e..15fe4a1d6e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -64,7 +64,7 @@ def remove_ignored_fields(self, doc): doc (dict): A dict that contains the parsed documentation block" """ allowed_fields = self.conf.module_fields.mandatory + self.conf.module_fields.optional \ - + self.conf.module_fields.auto + INTERNAL_FIELDS + + self.conf.module_fields.auto + INTERNAL_FIELDS remove_inexistent(doc, allowed_fields, STOP_FIELDS) if 'tests' in doc: @@ -75,7 +75,7 @@ def remove_ignored_fields(self, doc): def check_fields(self, doc, doc_type, path): """Check if the fields that a documentation block has, are valids. - + You can check them in the `schema.yaml` file. Args: @@ -209,24 +209,21 @@ def parse_test(self, path, id, group_id): if module_doc['path']: CodeParser.LOGGER.error('Path field is an autogenerated field, you must not specify it.') raise QAValueError('Path field is an autogenerated field, you must not specify it.', - CodeParser.LOGGER.error) + CodeParser.LOGGER.error) # If not, it is autogenerated except: module_doc['path'] = re.sub(r'.*wazuh-qa\/', '', path) - test_cases = None - if self.conf.test_cases_field: - test_cases = self.pytest.collect_test_cases(path) - functions_doc = [] for function in functions: if self.is_documentable_function(function): function_doc = self.parse_comment(function, 'test', path) if function_doc: - if test_cases and not (self.conf.test_cases_field in function_doc) \ - and test_cases[function.name]: - function_doc[self.conf.test_cases_field] = test_cases[function.name] + if 'inputs' not in function_doc: + test_cases = self.pytest.collect_test_cases(path) + if test_cases and test_cases[function.name]: + function_doc['inputs'] = test_cases[function.name] functions_doc.append(function_doc) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py index c70abc5130..f423d44558 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py @@ -31,7 +31,6 @@ class Config(): ignore_paths (str): A string that specifies which paths will be ignored. module_fields (_fields): A struct that contains the module documentation data. test_fields (_fields): A struct that contains the test documentation data. - test_cases_field (_fields): A string that contains the test_cases key. test_types (list): A list with the types to be parsed. test_modules (list): A list with the modules to be parsed. test_names (list): A list with the tests to be parsed. @@ -67,14 +66,12 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ self.ignore_paths = [] self.module_fields = _fields() self.test_fields = _fields() - self.test_cases_field = None self.test_types = [] self.test_modules = [] self.predefined_values = {} self.__read_schema_file(schema_path) self.__read_output_fields() - self.__read_test_cases_field() self.__set_documentation_path(output_path.replace('\\', '/')) self.__read_predefined_values() @@ -182,7 +179,7 @@ def __read_module_fields(self): self.module_fields.mandatory = module_fields['mandatory'] self.module_fields.optional = module_fields['optional'] - self.module_fields.auto = module_fields['auto'] + self.module_fields.auto = module_fields['auto'] def __read_test_fields(self): """Read from the schema file the optional and mandatory fields for the test functions. @@ -221,13 +218,6 @@ def __read_output_fields(self): self.__read_module_fields() self.__read_test_fields() - def __read_test_cases_field(self): - """Read from the schema file the key to identify a Test Case list.""" - Config.LOGGER.debug('Reading Test Case key from the schema file') - - if 'test_cases_field' in self._schema_data: - self.test_cases_field = self._schema_data['test_cases_field'] - class _fields: """Struct for the documentation fields. diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index c783144fcd..f68739d368 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -28,8 +28,6 @@ output_fields: - inputs - tags -test_cases_field: test_cases - predefined_values: module_fields: - type From 75fdcc3959dd0783940763f60375d2f6d662bb85 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 20 Oct 2021 14:18:04 +0200 Subject: [PATCH 005/108] refac: Refac `path` error raise. #2075 Now `if-in` with `dict.keys()` is used instead of `try-except`. --- .../wazuh_testing/qa_docs/lib/code_parser.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 15fe4a1d6e..77b9865f3e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -204,15 +204,14 @@ def parse_test(self, path, id, group_id): module_doc['name'] = os.path.basename(path) module_doc['id'] = id module_doc['group_id'] = group_id - # If the path is specified within the documentation block, it raises an error - try: - if module_doc['path']: - CodeParser.LOGGER.error('Path field is an autogenerated field, you must not specify it.') - raise QAValueError('Path field is an autogenerated field, you must not specify it.', - CodeParser.LOGGER.error) - # If not, it is autogenerated - except: - module_doc['path'] = re.sub(r'.*wazuh-qa\/', '', path) + + # If the path is specified within the documentation block, it logs an error + if 'path' in module_doc.keys(): + CodeParser.LOGGER.error('Path field is an autogenerated field, you must not specify it.') + raise QAValueError('Path field is an autogenerated field, you must not specify it.', + CodeParser.LOGGER.error) + + module_doc['path'] = re.sub(r'.*wazuh-qa\/', '', path) functions_doc = [] for function in functions: From 82551fb5c45796afc0ba048c9040f2b0b61e152e Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 21 Oct 2021 09:52:30 +0200 Subject: [PATCH 006/108] doc: Update README and delete diagram from repo. #2075 --- .../wazuh_testing/qa_docs/README.md | 2 +- .../wazuh_testing/qa_docs/qa_docs_diagram.png | Bin 195003 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 deps/wazuh_testing/wazuh_testing/qa_docs/qa_docs_diagram.png diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md index 1e7a980af4..1f7cf22cc4 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md @@ -67,7 +67,7 @@ Together with the Indexing functionality, the tool can locally launch SearchUI t documentation content into the App UI. ### Diagram -![DocGenerator](qa_docs_diagram.png) +
## Content ├── wazuh-testing diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/qa_docs_diagram.png b/deps/wazuh_testing/wazuh_testing/qa_docs/qa_docs_diagram.png deleted file mode 100644 index faf02f465baf13f236c62dc30e0f7607101e0299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195003 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 Q>ZVlp07W1pZ2*`A35o(BS9b#;1xG7XJKqdrRq zy?*_=`xoXG{Ed60y-b=rKh=J|!x#MjtpFJr*>!{7k{1W@gMcOtNW{oZS|u+?@gfj5 zp;tjqVcGm3OSn_~whd_CyB~WW)2aD}ux02)z$eB0L;7a@5${qeQ8>9TCZ`4RSIXa3 zK1&?7A@fGq-(vr;xcVCUq&d!?#k00?FfX_0a=V7D%Y{t@w@u=LcPaMA#>U`Z#4&*n zfYmRa1qUs$>)5+m82XHG`aaOaY&O2EBy@N!w(!cg1C?*j6KiUqZI9PwYVGXWXN_9_ z#%hS>ekIcsdvsDCKK>#KA;@KAHQXPP%NJ2I``NdNNri-wEJ*$4zOWj3KrFl zNE(3*7c+;>&t2vIN{pq{u5`kf0qg0;A7?`f3;F4shvZgKR4VRs1g3R(9k?uW!30Z* zJhvGdhzRg%@FZYJcXVJv-j5t>z`_}veS(5yasmfXdn_1L6};v)6(4)+ZnMyUu#P`> z4)e;ufPo>?^!1wpffFY##8Rxh)I=f?t^-6iM=xMKM7hsz7aSFVkRozrDUTYJAMM>h z%;08uiIRkTu}FtAXHB_&24NKk193sHCknK$budwc&9z}rE^;MG``vG@xqEu{BXtr< z4Bi@jJ^<8tg<7 z%!3xo?bb;BCR#4$%vkdM(@T(<2N%~Z-j#NTsxE?C7tTV!w6)iIGg1dFi0b?7Hl zwXHaj6;G+!UeYd4CM!nRUpUz-vJK=JO)dsbf@z9GZM2~R^xl21sBdXM^Vi!;;H z8(6Udp+Lp*Jy^PQed9k`fHT3BPFQlGo8}k04%>9){{hj+XJqA!lZf8+fTCgR#)A#6 zZTrb4Iot4b#%-!bdMylKM}-WetPK55RNm(K7Lu%c_e6j)!lf~_-xtSi#Sg)LYz5^m zIIqMtg;U9+j(>Vm=Q!UY_EC(ves)ze{+>Wd$qsp!+JoM6n+>lNKHfa##o zldgr&`&}=Zn8Ydy{jgt!<%+^iCEJ`&+r0h(T-c&jtA6Z1z*RAA0$$6w=L`!;yOu2# z2tX#4Uj&m=JiB{&4Rx!^rKY8kT>Q2B$nqLumxQxtQ3WY~|0xL6J@9&l>j1fYy4A^? z9Q0AQ_;O%0{)WOjBb40$F;9+XA$QbT>I0T7tl)7mXg-h^GxiTL)Opo#bWBwGU>yhj z{KO~)QHcY{E#2xw@-%%@5;17bbw7uLl3_Jpy>cbLuVy^jQITNA#vW^G_7s*PG<&(Y z)@Vrja#v8sQk9QjI3NO9+(-3s#VvyI3cP}F5LO11g1#5Gl?O^6)_E^s_E#FmRyrtq zi|c|nVXgC!mRMV7lY9WOvan)|uUygvdt;O&LIa473?21dFd$Uxipt8Mk-{0wBT|5m zB*@$C(g)O16ov$gF2k_4DAo-@ho~2Ga%N6$h~!KS_9JoZsS@{u$20UK7uwsM(;F9h zN#WZ@#ZA?+(anr=fK2np(8c4zG~%EMM2W$Qrb%nswx=7)VH*Emjf}`#S!E^>LyCX- zaN8iK5G$&$qOy`wHo++<1I2g|<|yqm-6Aaf6tPg zD;GT@aWlx=d$P`CR}la_!WEve9Z z$hAdJ3Uk6m&3Jo)R?W}w6E(yvwlW2>#xf;n^QjcEBnuy z87^vvjBrMw&b?|#;n1?B-^5?#tNQybMd4qa9vN6ZEqih{*e#`rUjGSOKEE+73MeW{ zy81xECl}&Jf>qk5i5h=yjDC1_z!iPIGee(3xzbRXwNb4)L29a8d~5?C+Ubi1ZuzZD zduvGdk_Gu-fuj~ND#v?oVs_#O2Qlm6CS0|=jM%8W($qxI8(Ujjw*8%gf*_7y!KP?W zc;YKY8z^19=i}p3AH>5Uaj(h&Fr{f>Pw3K!j`d@d60eZ)L$`W}wF*hlrlx1NZieV6 zi0Kf)WlgUpvXs$;Zbwu20Mt|n;=*gym@yGOXU20;F1f2-=5%5{fl|>$z^k&*>Wsai zHS)s|bczUz_EY-ekAPh5*rm&|ffFSC`c3#8NULLFZaxW~m?JYaKflMoUWr%Wo5ege z8Nq46@FXzkV@mA*<50ddYkq1a@bS#23F?PM)nVvEqnB)cvXhW6EgN@NZI&c>@Unf) zLq9?!0X>Nx9z8nImk+LP-Ev@n5*vhlGo7qNY~CQQ3WSoV8a1iJ;P)4W6qtH9eqj47 zuOIjF^5z^@gF}K^6Ko4^=Y+ZUsFEh0Wa33b+MAT@><*mo2;%35_I>J6N$GlDMIh7= zv$ft`3^*TUHFhO@zGgNgcY506kWYl{8UmqLT?P^ZeH=w-#T?}t-M)NPWV46vmB8H ziF)uHYWWW1LPrQ81Oh>3F72hx8*L)7BzBl%vlzvU#^Vs`(enVFV+%K&&2d_k^f6JECaF zvvftV?y>)ywOp3J#vFw+r!F^xiEid`^E1^;IrqG_&12OLrPt0uIYhyEd5J@#rQZ#K z<#k`#-*x9sB~$tgldAZ;1~czVp48ok2|jsa@8Vvmsg?9ho~zKIqp@HbXj4%54)K%k z&F@FQ48T-Qb4O-YCItn6zDP-K`b2kY)%k!g(G!MOibu9+KH4Ion;}I4aMbe)O1432 zVo=6Ge}5G_U*Knd)oNT`p3T0wslO(tJ{DVkPi-T@x=8TVMEXZm4h zAF{&d>4{E)I9NBUoqbxZVYuY9dLaXRnML&W#x<% zY=(N{{;_^YMF@>8$ACTCu-oZYxzne~l|LWorYt%^6?CdC1_(?9f67!&jpi*|HpK5KOA!cY4}PK|ZhO>baz)J+ z`{ra(i(2!Mnl3Dr?Y&nasE0TTqUC;m>!P#hzYP{wbgNCbTz$(R1+Att@gp7(%6(2{ zfQ1zVpn-gjb6+ z<98M552D_fr&dA=9W^o1su9k$667AJHW?B<0SIHtYsmOCTWTIAKPFDhL$`7lr`*!m z)f|K4`#71GJE0E}3HCC=M??!t&4?Bi+J`>l6Bqvheh{^%QRY?Ghwf67&uwBVEg6=9 z9D~+?G~&Iq1^gn05)6c4I?z!l2|~GFs3VY>X*4x_6K;8jtVvu(A}W{_?L&)4jbnas zZK$E8pIk}Z#TB1ZMWCAY#xip#1%a<2=n&!wu1dO`TM%6aSO*{`L!9es`9J=TY%2iH zU)AC=!5qYQ8|QQ}zfFriGsV7DUzK^$Vqp4OCeg{zpQZ8uF@#}(j`$_LfJjlO$W=9O zn{=UHJ=ZUK-WMtME)}NTihi&^w}-WNAnij&Oapb3ay+9|-F4tE5vSs#$j&sNx2Epv zlut)mWm1$xaIBAFH(ax26IJdk_8zUAi!<15-+_#fk;Q%&n#z_xAA!QfDkd%N%G<^N zy;NRazO3*yUiQ!mODa`J40>fZ7$DKqvegYJzZ|ei?!A9?Knx0(M$sFJG_1aM$9%;f z2dLq?UW>L~0830!03XI?<{R6e!MgbAKatojIA}i8ZEDc%3feWKvfcP)dL_x>9$5n5 zn%qOXxOa`CDK@)>Nc{0UFXP? zKGzVk7<1a33#;e5KX_-dS&WQvXRBcjo(d!Y^-TTTS@m#EZ!F2UW+3py2v*>0zMPo2 zBvZKcTQAaCSU|hpy?dffPykFV#jKdUB3Sy3WluXwY1-?XL`ha!ny}M~IgRu^yWDm_ z#i}SMG(^iIUaj&(rj@l}U1Lh)Bx}S@V1VDCJjj(^+ z8gM#d%&accZ_DBvw_;=Pk?5kA4k`8?pYwMits|K&S6-8SvtyBtAa4Vjv~_#%7CGE; zD3ZsNQoAp1`H&<9SnE^(72a?x31{M|ss#;4hRY4+v6B1{JHj-O+%b6;yaX-8bpmVm zC>o+%Iyb(?sx_Bg_y1oD2lwN+(2*hM`#B1}mpN7|Rt#R^`u8Q8I#=|%e~XW&v9VJ! zEC0i?hxt=Rubws4yLrZziA;bnmmO};RQBtbb+SHbQ7}YQ2(6KN zQ0gk_*S@oh(84N(@S#WXUKo)PIy%~ny@TZ2t7xd7T1newlN+5b(rUQ8(ABkO<}?aS zA{H=_6>$qKrDy?Vhb&S{X?I)IJD9vOk%>apsDA-sa2L1cp<9;}I9<8vG&ZSTdiZQG zB9IOX&W4$!*uSdh@WSe96%78i(yE&KWY`!8Ck%@E<3}Fi53(9`FPjU~ICI;f!FC_B zwmlA7)3T+vg3&0SX7p1$&%fx@_yd}&_Lcop^_q988l1JE$dT+dFfqXS#so1D@q=ij znMaB}{tHf7{=N_k@`4WB(!V2c<%)_y=1*X<{y)y%Jg(;a?c+c8v=Eh&Fj-Ty*q1{o zdzK_3Q6x+DB~Db9R@o^rOp8QCijgcSTFG*(F}9RRkyH{9`aR!a#?1KMkKgb2$NjkP z8&l_emg{|8uk8}_bgu>zjQ_F%{%J+uE@f+A%HXIa%U`iQ5J|-3_?ScV(!2t(x8j_- zlz(Cd7uOj98J0LU0Od1dUp0N6jC{cV>DM3b}%_A%g;Bi~hwhfVquyPKdzm)qdp8oBms=3^Pd$8Mf{B#6-=~ zmv`$#nx1q23!D3MFyY>yn+;#oQ~z?&?qzhlkf{p&{+KyNOHIx@=BPSzAQJ$xXK1s@ z=U4ZlCb~a$8@Ipj4Ao98o{9_~n&;^Ib@c)p|8)k0ADePS7J^P365>7~1@+#KVPWy5 zUFYdtc>qWA$7pLCJoRciNOc2Yr+xW@nN$cSQgVQ=(JiEZ=)L&KXfEiIl`9WHUE|2D zH?+q9G8fm6iZmy80R8ihL$i1kVVpS7%|;&ER9Z^ASN`r@@2`)jPCx4|1y*{kzq_*IZKh3)cU)if&@Q8b66iQ* z&Tvo9FZJGc13~5E@uni{5o%}TGaBaoFCa={geF&*wEnFfMuM^Lz@JKH^JWw`7&{?f zL@0BkCbRCwOk`;A6K=+ut9MutsY@u1n8XDiAyT%P0q99$joWI$0Uh!6tE^yuD#%)r znnvgL?Y*e#ybnm#x&&_#Dfc@&2vmdIKd}kr>#7OT27m_ne)Wd#X!ebf9g_SJDZ=jf zLNFfz53)N@0BNz*n5lH5n@Hv$b7_!DNGvrAEurzmE~U92a#u zz9C7B65H3TeaDTPU?o!@|6qr?>xF+l&4ig{F-m3(!XMvGGlPy`FGqbn`5H1vz4p4( z2r~r-o=ck&?tbZf>&stN#PW&rHRPQ~?=j<1vpm1HJibJXlTqWnc<0yipb)?yGQsO` zLhU=#gVkGbaQy$H_xEiEdX7bae@<|d&d8lypBbPGd>`83ezLM(gjp=r5(|IEdL~`k7_FpYH~z))|8M7@&&zdxpMJjzaqNekEArh4$HKL%Ghn4M z_Hryf_{Ws2tfeVDd>|+tmxa_*Zq~j-B_&7~o z*HlY1N9WQ{9N%9^sm(wN2y{XMIcH=)s}3O?bDKV|_YMZCMHm6=gy5D;Z@JVj6WF7y;0F)SanJ zT_l%aFo+$z=RHs`mdg2eLWnoqgtj68M7zYGp$Q1)gsXOO3jZ%JTU@)-2(^8bt&X{f z9SdGPrySbTV@?wk_l*J$Y*Bb`_a+Pc8w2MC`kO+I~mzaJKpoz z%y00_XVXuNm9j%Nw(oP6ebaxlgL53scSet4eJZ3PrIbirRuol{MlZ|r(G+{JwXV9N zxWb|-RxmM*3t5y{f&iGyzLRK&l;qPP_@|+FkN!{|z_j_a;Mo#Lk&Z84Ff=t(-+1?< zSD(@4Vg2LOfZITH>n#$*^> z6ARm&9Z3GWfI639_yEO~0CquMi4Kt1st;&VK&MmRBa|co4op;>VZ){jeas`Nf-6mA zbhr&0xDK*dm1e|SdpW6uP1mfc_DjwIiV_l*_U)gA%LQl=Ds_9ae#W&ml`nlLojkhr z0uFRV@^kF!J$c%p(1tneKgU(( z{|M!j7WO0FO<%j%L%g1!*y^S+{xx%>{?>mGXq}QrIypJ*C9nz)uGkk2BeeuEjM)0b zMm0JxapHldh%C#0uz35#0f}0TnUp%#a97TM(?r&Z&*A=Nq}X@B4-;l0p5>k|vk+G` z1&J0|KH0tSxphSd9sD6$H;XJLG6lI&rd_nu6M+*VoOk`_um#Tol}FPdJ(em8j1U|zlG-LpCzo{wdx+u|vnF2}c$@%w$79N|MfQPt9k68WsQvz#aA+Qb!twuar zH)wz;f{nDU*Zx{)752F80J=d4Ibz^p(+c~}!h?-ZAe|Y4^a!Hme7MSZr#invztD@> zMKIrdkH9h~jQk8}0@7hX1B(zH#QJvS(r-HL9%rQ_M2KPzaUi^I42^gwNV*$}LMWpb z-Xux+zHt^t5vm4i4Po8+5658ASC|6- z!7((SHxc`eNcbjO{vf`cPp0o)OOI}xU(>c~{P;f_>pGfkANuHw;l!hQ_cR&=1x$RD zkRM>D`6%Y3=hVuWgxJ`-x9m#ttxp<0U3T|K&e=P$hI6MaDZU#Jpr|?IV3e8plN8e` zljb9S*?wWaa_GH^D(TMAokEw-9^0v3>D5`#$>t(nyK&~8oV_{RLV;a|wGJsPD44<6 zL?n%mz2R^ho4_Rbo*t0;GkDBC|`qU*V%-L}OUY3K&6RBhKudw6D^$Dn=h zpY0>fqs(VX^q&5%F*(%*AhV70+{kS6{P?1C9ueE8!YPToc37NyhnTK4e3Xa@FiBQ^ z;7*x+w2fkD31g;M0z0E0ep=8WM0cJy6xrFkYy9uC$H1EEcIwoS$8MY3$yt-*drzt0NB74PU5*UrbEK8@xKtu3_e@QE#096=@9W zsP7LlW$!Kcfx6k?$UEY|FUNO-?aeQ zc^`O+92YL!5*Qe$IM9=v9fV_p0pU(A>f0e*#m zf#$V5Q{Fp{c1QTg)LhizxRp~G7}<35w6O4SWhvfZ2IFSepEp!IcJ+{fbljLRLkXmP z^!Typ)v;v-X@`_POl%6*ecNR?VJp1cVsRrENg(=rXx7CNwyjWZ1zj=6(7rFoB?V`P%mO3H3m=o&12D6HqF%qZoIsueY<%9rBHf5mRMKEh^3*9)@&M9$pDxL0sTNZ20s+FxUv3S@&tLwU|GZOmY=yac zNb#_|emnHrWKA7!y?3oiujrFrswOx4c5l)&^xT-^`vr&XePyj>28Zs+>s44x;&S#D z(!8a5Krh`D3&s}%aNE*t3fL+m_Omc}>vvoyUkyJIZ4v2kUs{Y2al|F^MCKp>RPSSP1{_y0y zU6W*OG&MVmJBoV3iKwa6DIf4un#+>0RAO0ZXKbvBtJbhQ>3JuRY7zYXsBgPlET&Qd zLppxNxUr&qXzGM+-g^w5WHl?TZ1y7T%Bhq|Q}X)VoD^b}$U!YumzO2d#%eh^ZWb9B z9lsbV%S#`fsTcONRW;OxWF0uFu9QmKPs_o4Qdu2V1GqW{9Ol4&fbZ5d5 zL+LPx`(dp;4%?8Un%bpIFJVhryum!XZ|D5A^XpIve-&y*gV7~+8=#7(IJ6nuX3UxODoooiOPq}7Q2@k zubpaVhrniPdVqhptnKimd&3WU`FU(ft#}zJ4PQj(Gs(Yo%a$9#dGLcgWti;vrFTzh zBSp_XaYc!bl#G63NOG;Ju8yE{Nj33c4WGGex>k~(pI<$_s%eQFp2f=YfddC7q}DJj z(8smw(?^qj2V`Y1?T6@mjWdm5oo7q|2B&?BviF#(?o&9?>+6jjqVvxe?An}GekQ)a z<$JGb#3@&j{gC$facgR$SOmskAd!F+$=GW%UZ^4B9NGd+Xw-d#@mf%u%g*Qs;wm*) zlr{oiw_hoki?b4q=lEk~I(mJp&%>v0zdVa~vH2pSZcfETP9oe?YQl zbC7|qJ*2tF$~jkstr2pbMXk+IBc^_40LTCmPqi#$*L$Y;Cj zTp95!t<|_zTMpaln~%!-fXYA!_VY?PTqeD&6IFJiPrB@{LpXU@o?E4Lh}C-#DlgJW zmb6Sb5!hL}7TM56tu(5X@V-s9vrEm*b=VW7_bK)*#zMu#PnA--lok~!Pz6|s+m;in zfz#+YvO#bXfPbwBQ8oj=@7k@K$UmZkzVP6Iw(!!uK35u#ke(aM(IRP(qLHO_`=g`7 zboCHhm9LGI>e3PaI4OIEF4W1?g1y-YaJXrjV)QVc{NtE_sXlf%0EApu(sQdqqT>4r zU0Nq9PadY-_KEDl+=){xd5Xk4%yeXC7#xAppbDb{Kx!lS@)?A^rk;R^6;L3@rr04s zQ(s5IY-1!%rn$gK9isf19IL~ut32#=q2P-3iWYYMW4DXaI?!bzLWSEz`&TTalDmj1OZXZ(l}l%JwgIb zj_WGjGH;qJZrg}P(@uTvr6@l#%+35U$qckfyb`TWy1S)Ta40!)MR~ft81m5h8R--< zN*Ob+Tq;;5Hkx7hxk;O_=&>SjSKk2xoM=$uj~~C;G9*P-UYC#Qi^w0buo%|!R^1Un zra&reUDoCWwD46H)_`>zEHkG}p8OP=sA0lXO+HFPpTe`_Wn&L!>ln_zQt>gp-48AH zL!GT+iyXv?-~Gt#E@qL|dDJ4_RH}K<{Q|9PckgOo@op&59_~HWr#jlEw)*XiX(Dgw zbf54)lIl02NM?|I##t)j-;Tz{a`-C=F9rjmm=igZO}K2jRt^r)PcD;IOFj<@iT4GGQfwYkw4P&FuEy;gmMQ0v=@}zLQ zP};rF{pj*;n_VoJ%cIR$xskzy76ea1c=}#3hF-dUT`1~=?^x0xczMF{7+CJ#W>EcZK(c;;VrsK_(By8MzA zBgDa&wB?c3UH1RMgt3JT6ovO|WHNB{##EdO_-?%)B5ofK-_E;y@z$;8Mh?m9uR&Jy zZDp_X^462npmar``F!zVjMwB~iA5Z{+?Bd=_+UPftb@^?$ullu6xMBMT(lN^I`st2 z>qW{>rEejcjbXf&5<$|4^`OxUyIkY&WSNma$>ov@bei!iURdXSL42(cK7paa81r7< zt8#Nu{@7R3{?liUCMPi5)rtFtMGU4)BKY>M78|+q-Y;{_|OZ3w>H8@b!+ue>LNa@1|(~-9ANaGus+f_u&_z8 zV>jnoF`V{X{6vS|Gc_f(M;Ou-8s(;zmXG&vNvAaY^qAv~N7yAc!Z<30 z7nrOUB?AKk;V(o0q4|;#v0^v<2ZN56 z^*rR7cYaX2)+_#acTW$IfktD%^7ETm8=T$6zX!Bsw~Ei3b;aL&@A8+QKH5!QthUMK z!C?PAb9Gw!z5lRadH-adl(=;J9=ZoRa4_T@ei0C{bck%cyJ=8%HHX~LR3}+7ZG%Yk zI!*u6n&jNUEREs!oJ_ua2TfjVnbgRLac5I+r=t`AybiZNUXv3&k=+Z z9`?<6xRiJ%b}vmm=%SG4z$7Y=@|WFvZuP&vqU5mkz(p^nd^^#lzJ+VQeCSO3B=SU< z`>8xFF>ExnVy_e(D^aS?U<3ssrW$gkfaIp*^(10F!3$+MUEXHSlV`lD0<92ce)@i) zp5kmgjhLJ8Bx4rP(#lFC&~)oLfRETO6ni;uU|OTg*X_|m4IER;*ij;Rip|oDS*D!x z^%-9LB`a2_dsZZ2@JQ_+;9HpMUZH~CYcsgM;``$Hmh+g~dD|>VktwSxcM<~y{e@7U zFf!mv*~VN23yv0OQdPsfybeOv0fqxM*_LuHHjucUd!Zz^T=UO^x@omGwL!_}>_o4R zXI#F54c`71`V~fpI(zvh_w<7okSwgB-XETc8d!_4H&KxxRt`4%*f+is2AJqqk2<0a+cj)r_==`W33-# zNfUIdl6BNIys)jnpyr}3gjf|PUrkC)wJBJbDt%mAkGDI@1~mV8YF~0$(#e0Gb2pqH zIz*HuxmZO_?G+XJcNemsF67z2x)A$qi+Lb$@SEPN*ye2$gg%9qIpvY<`pBh2Vyvfp zZ#)>gbf1%vqREWb?40tkvO!yGo35r=6KQlb6{0mVwgQ_G7;egfN3IGMJPjs6M%B2AGLFPc2H1|kJv7a&J;)dP+o9I z_Dv#39gM1zTNCZ!>60^G|M&s-_%Uwh0ra={;re`QN*n&;VILB6werNNq@&}y{y5u5 zu5^dxFokN^h87`$_6nO%J*Uxyru5keOoR_JK0bck;lqcYIKOE7Ib!YGxc*-%-oE8z zYQTq6!qI_)wrCpEM-wDcgSoNIXg3g7*t{$r7^gh1Q4d$AjF-}o-rD05RA(Oh=XC62 z{y1jvXZvplvU$30&11g45C2zrnkkTUM95x!5F zAsgyJK-F2WwJ*%hTwzBD@CZhNr{EJ5f-F)3HqdOs^*J$7PbR=FWRQo;+X|b*&sz8t z2Ce%i#G2g6r%cLvo6RP;ZWMAe-2vqZZyUMmuI*m26qu9B_VV(UYA>x#TWzI=eBAp# zXX~szD}|Ke%C2GZA?xx!PO{i%KBGHXFocTfotuWZt|65bCAk@3>+~d99f?>x&PD_#%o{9A zB>r#u93h4gdSu;Qm&*W^@)=jmx8MUxgKYy&LOQ|5cgbU#q)MMEY}-V=XJprB+q zL|KIvIb~aEhI!`r{cyXiGoHx|M*XAifA6o|il<_#7kw_y+)*+9s^%l+;Ww*?UP4%d z3RdfsX0^8%UyBEI*(RD_qBI5gaW^JN^~UU3vm9|nu#IFcCTY?LN(V`)BTDgr>i=JS_*s;T4n}wx`kvNQ(FLhr8oiSsC1je8nd>Y$Ffz|<;&FVhojNBLY zQv;rU9se7oybiByI^bX(LGEV&d#>ltXQ19hht}eO=m3OgkyC&!qJ`%wbBBivKFU-H zphvMZx8O0Qr==Axn$WfL?l*Td(H+C#Pn_Ay zTh&}Sfx+c%$-{e33*1cGv(oHZy%pODFhXiLu0TsOp*g9XIK>v$k!_gW0 ztqewW^%O*i8A}0-8H@pO$p%0VB3670RXjQ)EvG%~Awab!@Le(DG9=@{GNUuvPBt}F z5rTH?o|7s~oBGiQq2k~E>#qUav^>%X8icJi?*rK-QkQUCmjlL#ot=blOTs*!e?a@X z3BfX8lh_xEphELw9`{hl8fAcB%5jZaMh~s9u z$o4elFhBH+-gdE>FhWAj74*l-{uTS1)(&Nc55N4{#k1lO1Lp4CyE#kDc;uIm6k6Mq z(_=RP=>bH%_~c0&u#mb|s=dEp*QkZMc`F<-WC(O3{tG>Q>XRqatMb()0zCoUy&KbB zSGNw!g6^D+1#uM8YXI5ttYZEImMjtaJ+Yc;-8<)F_3GALQdKrX0`$>{mUVpipqp9h zDH&rv+xLE181rJzH)2ww)K+`f4QtexUWz7$ z#h&JqUn8kdPp!bbRR@Aj{k0`k35a$_P*7xIiNvQc>8Tj>q_5^%H(mA5-VFCtShF<=f7{6 zFlhiVW_=7eQ8w7PMHzP!u67;km_$+S z2ot$jOy^VW+oW{>RoJ?-DAKAeTXvB?M|N_zWr(TAM|C#atg|=tLynrvHihohQ4|)& zdkw>Wb~cETxq8?hwj%OR<@ps!z${$u=H5~w;hfatf@Nmpu%IAWjq7`>?04o-mTm6zkZj!o1H16Rz{{;^(w1 zJ_X9o)Zp^?Inkc9%k2f}Exn`Jd-|DW4e0FSj2COl*M;CvpgG08$f_uzrEt4gQ4tef6?>(rsUf4BqSN$|>Sd-7TG5K5Gt@eOHk zpc<7D#}S*v2W;RdlTByq7p5j zi1gmTm?0AD#Q`9fYbN)NoODF&M7cDpd+d>8k_K^=y!GiKCx?I08{_PI_OF*J#mdl^61#S#9bJs2OE3nIa)nyyZ6Lwr}XhJH5A76$Or|kNGQb&MsPE@f&i5N3) zsQo&|Qt6z{LK%X%q4q+)dbJ%R7l&FiV$XqD`-@0y%(Qu3mw41!Hc#!WvrnNMqRx+GCDuI-dPOHfW!yVl$ zwF0r3XlYVvz6=0kKF%tRyjzF)1^jteTaV}dfA=1f{K`ZECPjGet%Hr9U;j;R5* zZZv6CM~E1BuQ{`5dSq{lnyuS#uLhryup$7!naid;VjfjhRh4j1Ge~g6434^aBYr6l z6B?bPRt|xY-7TiQEWF2#V#zuh#Uz~CQ4T4C z1b6`JrMNg|l+yOfF-5yugtSGX3|uoAMHywp7hX{aQ1G>1K+@u!B_6-V(=7fs9VddQ zI3DVX{{ju86)0AKm77HZC4O;^U)6@dKd3PYq9;1a{jw@ z&ce}A2E8a35#6i5%}xKi5#My|Ba*izw6V=%bU9*=BDlhob~3%>JJ`x--iUEpG%n|q z$5Y&YVdZ1rG=o8drWY$U9Af$d!H&d$Cadi2iwR`KH#V)D;iAq2XB!k#^!?BeIx{_I zcW~v#p?~#!)$XUxw9bW2+C*L6Xrsc1m{4^u<%qbs4E%FLe+%2pt>z z0b4w@g{yY5fzc7XpFosxxG5D#kD0!ek$S8Nnx{m0i#Z}eGVNL1n+uu}R^_ zU|(}O?!PK1Fm=VDd#_xc)t&Bn(kPW6jS$<6cYDaBAWp(AFYEn_+gaXs1Gjz`IQ%gD zjTnry4B3#u_uj!z{`k=3v0Z&cNmi!WQaht#VT8EP!GNfY{i?>o0W zi`DyflXM#_K3~}auAt+;KG$Xwh?v z=!Q6fKypMFvKVe81kki&@Zcm7iGbc&tf6qipCm*nsIuxuT5kktcH#_3?M|&{VMha@ z=0Yrjf}`l@$p3pRmna&lAqW~yjZC6Dqb1!Lzg1wA-y{;r?q`gTPdM4l?4m|v#TrBH z5F(g#5L|Dtj!wr>T~4WyT;O_?Z(IAR9v@M(h+^i*^XzRiR%M<1a9Hw@1@In8n29fvU^LU7g>U-VDz`> zv}@zE7F`;BtDaA1IP@s2JxPT$5|VTY+h7<(gB0WfcR-kvXTrX_3xoxW5mhkka4w{e znd9v#rwOjdj0-8XWA|=ff?El?8fUPso6Xy+70i%tU;Q!RG!J1@;!n-7VWK|Vw8;V} z8;rce+r(sT^p!IZI5H}W1#}`(gRvp|Zl8}uimuG8n`qORtqB)ZaoilFFrOVq<%oXj zNcfyAy%b_3wpWO3DQL}fm`Mk46UE?q6ZO;;7?`2Yh`(*fTgc%N7{wETW?d1OnB%Rk zlQLgG=!S^i5|b*xnmBb4kI?wsKfSa)@^^OS_@R;*jADiIUqvj#O_4n5Q%J-CgnD0g zdmwxg;4tOQH}&<^~U%926-M{?ipv)0(mO6k2~jrza}``mYr*~=hA7@+rX zl}!;oi?w-@k{)t{2Wx!~)Z*NYoB4giC$?|kW#>)fk!v(F*gX3?OSIW!vzAF+^fS%Q zsn4v-AmzAuV$qP3eBBnCO?0HP_~!cc7)}&3_gt4p4~=z5X~SqkLpD9~&iLK8UY<-y z0C@ISn5c2pYYGrR(kJ@&avH*-q`0{Q0*<{8t@+fMn>5S)xVM4ez9APnxIXIc_?;86 zv2?x53r;x}#>OhV3R`di+4il{&42p$skpp}9ByqB_f=snQ*qJ|S;+qV!ov$nlh4Zo ztOf<2@tq<*4rkZwqpnn{Lv(bi2l63v{018fjkH7N{6t&JSg?sYrnHS*QwXPY8i=O zXr-FdrvHi&r{%O}+~h^VdN0vqTk8Q0 zX@!Nr^K^H!@B?{nL#yS``$9YU_snH2*2xJbht$Vc)+71}6=ki+t0CVQ1f$a%$TWm) z@#dz_E?U+uvNO&^V=%dkYv54DJU2KmJkc8&l!}wqBKM(EcRT(BNbo{-wj!Ym-N)SY zZpA*0o&6WJjNjaIP*VBHo3fb5v-&Vxq=+qNk8%-$iTV(QA=y`agIi64cs z5;IB#7Qlm*r;!c|$SN|2Wmv*~g6^ta*REG*%~8;3>e{164`RU<#yXQIVCkKJkt($Y zZRS?mjlmH&!_YkorTU~+iizt1=#koZS90Ob=ecocN}h7W47IY_zQlnwTp~(dAUu2z zyKPF18xMvcCh0)OZq8;>`uogJ1eUAi8$i_X7+1bt)` zX-@(%XApA&ytB*ufayZy<8hWAU@8Rr6K!YUsK_$6HNYS!P zKxbjDM{uH0YA}sVo-!pIUB1w6ihyC`Oz*Yy<)kW_fowTCJByuUMAn^84^C2gcx-XM zOf3Rgy;$o4l-Gu#@gfs@_R-%@AILkCTzKW`)%s4#;MMn5+vnMjnD?;0)d!w~!hR7Hrpfzv?`8umoNG zDkJz&cKbB%w9EB8H)_C1^AbVOE6ansP4z|JDR%KxJryg`M7EJ^0m7lO*aD0n^i&g1 z%WssqW1qqcI)vX=CPj%X!|3DVOrcj-Yyeaqk?70yX`Hetgd^`8&QkEQl}CWzSw0r< zr=4yL+N8*Z#Cb^^!l+?t; z=xnt0#V|mjPmUw z6DjueZIt+Dpxf9*^tGHs_C0q3S5+P8Cb2qAgtsHitli@!w|%h8M?P?7x`I#-ZZ-j_ zKY6wPCIjvM#cKvxq%QY(_$T~~h_$3-h&(_7b%ZJz)V^7&NSSwna}mB16s8B3n{qta zRp><~L{zmbf&Py;BC)&yHzly=pDDe+K5}ARmlzartkgvgux@mx+bu(K(H}Boi|-Ci zfA6qqzBsl(;l$Qq9N>A&d1mi z4ql zexIh4_7mtvk;xkw#VNl3JzV*5n}Wx2SJXl@Lq>)zuJ$CUOo;uN zNxbQd1nJSYI;AY}&XyOZka7QYjdUq`e69~7o?reoKk>jp8Xp#=@}@?}z32&zfJN(B zEjh~5$5SK}8#q+A05G+ZcuT72t9aEZNVHHeb(w4+@a}PO{f5x87~~Y_?`_{19JG$M z;+8{FN%X4P0R`?-9YvN`BQU9S-X|fwg#!|UgW2UPr!Zuwiq4Y5mi6*VnOgWVtDDQG zJXp5bM8H%0h||CQ)*8XH!|dNOG*o`892lxgVO)5El4qP5k6<22b>cX2UDc@wWl ztzff$!-g-FEf_?U@p5UFTFxI{Ugi#O#_@B@ZKbJ+g8=vbho$8ByMzO|hP?{Q>|-Z6 z(V}p03`S)Qap?svsl{>BL?Yl{PFtT8C8Gf)h|YY>*AwK?IQTbY>_5o6^G+eB5}8@4 zxl~7mCQXJhVk3hAPW$Ck@~U~g=*cY@a60W`|M~q{DV-w??hueM6qO+DTp5aIVc8U? zNu9ZV3G^N2& z6|bSuq4MXSs}9-dFD1!GG-?M7q(({0T3Ia_YMQCVIzcqgTWGfx z-UAMgR*);zdz@b*2nWdp_|S`5UiepgYLD62A6a12Of8WfoOcRVt#SAYI7ANHdYM|< zJ?C1v$dXr<*zs}kbT#L0-fR^Td`ibjnJGT?1Ux)L>a@MCEo^(P$a(MX>s|Qq)JWv7 zT25lVX2o&&_5nS6+7!>ZtN0uCq0J_F6>c+rk!xAN(ORC2s9K%4;E%eQdzRcC+)f3^ z$M49IBln&6)c+5n6CbyCxeOy;?>sMz7^2iJeR-$LuDdqPkc$Z{t85hw9!k9~GlxD{ z;d2(EBVD+5B#a2&BqCh5jA@pJq3HHIW1X+Os0?sq!VD7wbbgfy1VC#ew9$jOs zQC{ggJDF0@;CYcFn{y+zw8!F5~D_Jr|f!H2$zSU--?&0S(^eaR)M$^S?D^a{Yon_T# zw4Z}Mm085DR6lmOXtgO1w(tv(*3mI%%+-5X6mS4`!-S_6S9Qa%{B(&f1hBUZhld_Qe>kM3Nvp>H>`ku1= zr~LB10uDdZOBcuT%4`E4pBYgwK?>NZ1fpxc{S_#F^E2w6TWx8C(GPl@_XceK`_c-* zD;gEyGTjv$7X#>|1k5hH8YdUA6Rx@8nQLC0Xt)|iz3Sd!8^RNo4Af&rYM#)rO>Pe> zl=%VguRIv_58npVa)qb6!Kaa3+o=>Z76FU@vyOm`E*SXxd_ zi*X^+i|m0AofQ*O+Nm$`Gx>~i093}Wq%0%{@0LEFnr7!Kft!%RL$QoWTX!Y(R;uW1p8sX&5cg<#nI)BcV!n3{C80l z%E_rD4`DQ~L&*LK*X9d(#YL-GxxAzJwfujgeID51dHKM4wHDcwqp<=6iY;3ut<~gd z)Z7!PGJYqfIBhQd@apAC_x9dpc^sOedS_Se;T;fa-XNQ1&Gy+$FIA}(<+-i>eZ0m$ zo^3dOsZSy2j0jC0eQNB1g}k4jWy5Q}e2xw^XogZotPZ7^v|l~qYFe>u>34DgMEZ_U z>j{0Cf^Ou`zGhi`T)BEk)0W-64Qp&RisC@k5hlkw@*sa+6T!oZYt7fpb4}{2DF2Fd zDd-My5!z=VTJ+w2Yh*!XNUhdJN%wicH^wjh!9Cge1=YjbdUyk*3Q(ZaRHH6Jp0?t} zt)W%>KAu@-Woo-6)$_S-?Impb*?fd^)S}>og7QiqRr9OO7^Cl&RH4rE9%t=#{_syM zw@E%?ckFPCe3x@96$KeUp;!NM$n%(v;I!gH-4r&uxyvtDq^MfA{N`ZhM<4Y4;c?JS z?|Jae>T$IKksk_*RL9m$NnXd1N+R-#FXv2qj9H^0Ad$t!htZ*9HgRp#OXjpOpGo;B zyJ6&Q)9{;N7N#cpn{-VHLfTxxL?t@u$%I;Y+7AQ;Oie=mjBzOMhHY!J@I+AVQ}OsNY>hDtN11TF}f(}dXG>6q#6$I z=B;Yo|9|`fIlti5lk=^FlnM3Zn0NNpbQ|5pQ3xN|tIFh#ykIyQ(ow~=7ioIdrf1;} z3ej8X3-}7w78QSF?m$th>m4}uuQxvC9I|}^0yYZF{0Fjd(xm%6ID7!h8`2noNT=c8 zD=WI$e%HX1Gx!^uF;=Vt?+`ZDxdfn)H(-!7=;fTpaKXdes`vVB-;?!TS^8ERAKiO*Vb!v_8J09(2WK^gC8EpGoEatE3)XZ;OXHJ8e$+_F2~p*;{n+v-9VD^UKd`qw)>PJMzl)Lvoq4Pu;CD~u`>W;q za^;k%Z5$l*&3PvIo$uE?sQGXK;_`l0AAnR~jhCO5hgO^DdfPPp*{^LQ=w5?G%-~wR z7wn-0?ue=bE?U`ps6nTzwGIQ@4 zI_)e19_4j8R9K3Mt zwf(6f0%L$<=UHlv?qoA3G8mg4?fbxw8kZ zO$;#MkG4gW=pGAL)MrB8&z{sRek*(8w^HyTk*29c5CK?Ql#w!l-Zg?SkgP-6Dm0?# z&7dWQAnJuQ76}kDS|jyv9(4FvCC)9NGjk?nOf)pPb)1ypq|9N)gnJi6hF2TaH!!wD zf`Mc!AbKiv1W=WDz0t)=p5p8m3#D~hw>BZ21ZOGo?H-weuoKJbIb{1x2_=O20IfH9 zOonuoV8f;o$=0@}O)|BJl?osc7pJ{l;mR&CMSBZBx=7Z6Xow7DKD9TXvUtNqa6*Hu zA(>i(KK!Xhm(NF@fke#t-L~UzOWsR2`@Qt%^z${;R8#Y!pO{I>oJ{Nx@}b(K0QQnk z+ABFJmnOo2q8JpZaUv(o(^5hAt~Xr@+V#f&vN*Go|7pH|GNsq8`BZ3n z<#S&irI@0XJv7=(?<4!yIh=7vHa82FlSheub_bTNpTdyBn!VWs>%0PB!BA!lW3rm0 zX!SUlg@YHm#?mACR!+^=MjLan1lVpJ<2TcSurV5EvJz_xwEU$!17ON`lnLy)hU zh{gYk_dtd>M(qmhCe*GXAe97B(swTAojHGgASAE&IlJCo<`ogS7SvD?SVKcLga@|_ zxs+1vKV((PMx>g7_YDDw2ASS1pgxO z^(%~wZL3#R_ZKH+;(=3J9zuTGad%>T`~{wR9t+}mCgi(;ZYX4G5r|z!!XbcQH}YcM z2gHvHt*-gL8wsM!BHYasX>-G1r8#bzDstOcyU11N)NP?8ZPVa^NYB8h-(I?ix0>{r zK7APb)zsALNQ5p^%ZW9Y4tqUjDc9?~&>*4V8*S=x=dt^R;aC5R_Ge5RHZMP)jB9Q_ zqVkuZdu#rki-PbVqU_NU=>nrJ$S#?EjAd>Q+PLeLuI$lKyx@J=_$`sN_o|b z5>4yh2=+q)(<^*I@F5~pi7S=?#aD(#LP^)yN>zP8zkWd<+#_QhpaS9WF+sNABg5-U zF5JGY1_`5?!&$W+%>vnIFkJI~a}&OGF!Gs9LZHRqlZ_-Ig|FMay}U2;C%nB(axd3} zO`t;2j~%aho*TZ|CneVQH_PlDR0JX8^dM#L6UJT&ay`ktJU6%9?M3d@8pd$~PTK09 z`86QobD*kuOr!tx;yplwQTN0eODv`E|+U0!zf;;JQWGF zJc2^WHCMNSh1@S{0qN1W!H=ZCue2C6vvaVb-VZnl<()Wk^bv@H2 zCsq5N#>>|aCY_XDzAV-q9tnxq|8jbt`4QeLEjE@ak1E?_W~HfjJh|n8-Cs24M+7bt zQyBdLXS2!$-sLf51dzNolU6`vAWE<(@8HLPp^Gg@oL^zY){?Kst%=P!w|wFUa==M(N92g?E_x z+Lee9cE6oWXt}{I?Ct7doY{>hdFN9v|J({DDfxrIE2goTWIZbf+M0$8Z{sFx7bK^MY!C?}XHcB!1;kF6 zO3xi>Te^EO<^~39K**;oltAgRZS3JAZ;}bqoGBiT@^m#uRk1zih==#wBOj0a_^A8G zm#C;E1g5Eych4a{#*mtNGGQY?@#TXaXwZ+xUOQ(%rllE6nVD$jPjDH!uyjqY9LH(ljvU!o=om6GeC|zOqr%^U@;d6AI^U`H z6t9mh|7$v4PLK5ECcguAXSA{9!S&D+X!b z!ZpCKHk_Q1U?T^yd*Fos8bpO1Mv5r~v+;O4J4LNcg}shn*1nS{EI6Z=EQwDVgn@(F ziOXBfftbV!9RlkKPQ z7KKvz6^?q@Jy@d~@=&4UAMI3o+5}GD7RX-=7#)&WXNHS1ef)wSw#ck<)F}DSgz=^fjgDJGXVx z3%QrxX}(ox{s-v$f*tn@k_hMH5)%?Izhg-7HibrFFDMbDG=)>ThV09JPv()JLV0wc zmDk#qKU#8qIXP-f`!1zs^~i4T8u(OmeVC!@jEAi{xpeU}vr;>{Gyv7Ey}!Vp5$a)%N!`(yu~*jTtReh5o< zg@lY9Jh%=?T?aXF`Ml8W&g)${MkTm>L+H#AYiHA%3N{m_Cg^%=Rn-d?O$T;}BPw=z z$%9^!ejV1({0o*BC5>?l`TUu?dPSA)5NLJJ<_V$XBl8^Kv}TJztJ-|#Mk355D81rM zv7O+s>*G?yQF6LH2Jt=1L_D%j|soc)B-M(&hN zU({BiJn5KK{s6D$pW3P3X)x;OV&AC9nv4fgkveq;kBQImFnYPo)he}S(fotIYm7=9 zXSJ8+cxPasO=mZR9ce}F7j_(PW0Q^`LWrU1eYpGewzH=N`?E`+?T59me=WPze%qy# zfl?`Y$Jm?YIgSj``}@0QACM|vnb8H*;Of3Ut!?3J^_EXc^ta)X^43^4kJMT$SKOl%a@euLhvWvCawjGBgX9`t{^f|tZ z2s91|2!QF&r0NJOFEtF$iDTEVPiiiYzfL~$`Yfg~{{3wPEi3xB77BOPBY;SN|5?&8 zY))UER_xNZ&xgP+6GQ;}=I7x?q1!$I@jMqruDwJu`}17GTrdYJ0zI%0W%p@G zooDbzBiby3z^dzE^-~n;yRL6uyieEV#oFV&d7`z278mwwcdm1NSHE7o!hT(cH?BDs zyW{#Ky~l$FJKyOL!l7k5poEDg4S9N<8!uLfbf~D`WS*3uels0hyVPuJdP+?gc2R5-+e!rrJ|S#oK4$O?!*EBq`=T}*|rWI4b0e3#AuTF z@Zmlh;@ccAq@gzs{9N8@kb7T1B6qYe|LNNtgO-ONGVy~LXFaM9ONoiYWYF0pgic%# z&Xui`j&vlb56BV`k-pEuxMO2-!jdy8cmstz3+prsGCFqZB+?-3Sy@?`(U0)!g#N9? zgDV5}tHd3dA**CYzY#OhfO$BJa#Kg_bZ9Cqlkm`VV3jGd<11@NT>DVI=z}5acM$%F zt=M0C3UYT(@AUX3z2dC-U#;r5^V>oN7O=+n*O=i}t0;T%x9*JG-4*u#l%cg(=A;tZ z0I!%JLp{Byt=*0*-`v_qI(lPa|KGM!F?jG=aS{q-!+CubeVahi=yOnGZ+UX=iF?Hu z!g&>xmBpjhDWd|AfJIIl@K^$;bY{afz?azK*Kf<$1w`mVCh%&4^^=_&PQk2=nZ#lt z9!oliA;?ces3a%U?h27;DdIViZ!KGDKWezWuIW< zkdSlGjuQFkNav6Bs9BpfhMV5_vYDy*$eoaqEIxahmv@n(Cq#3+K)nNc+6INj%!H=& z_Vvx@@7R%jn#f_RPTSk|U1By?vvuohbgq+=-TQH`@IqiKGKXPhNndl;*kC`hYhzqT zYfNDy=k_HDb_*kyY0WfD0cYn@X(Gbmcd*8MBYA8hy@7t555{(x+YDz4T5cRCb@ud}*PIvS5bY=@NZ!+@7ij3k;&)o9Jj%X!{85!o>Jn0jemp-v6=f*d z;sm_(VA&rP=gE^NLK~^KZ_qI&8wpbA?buSqCUW4SVQ||02&p7L7P;05@?3eli4`?P zY_~h(5msNV#)$>59wv_a;`k`Ab^|<6-o~+q+moh-nMt@ix)@oM+wbfkl;6dbT^*A5 zL&fWVp1$wYV@I*NvWdmj0!=NgOT3g_x^;8rgNx{{DCwId_w4@k^dJyy zua0_SU-#kv+2_)v*s12beg1R)!tYJM)9FK4E0;5@TY*(Q`M~!&Os$DxK>6k64(I!+ zYsqNn)Zo;EgTHso|1zN=C1+XB08Yw%W9E;Nwk4Z|%Nlgg6f9Vn3ogK4bkWymchj=` z^u}&0s+f8=f0;@HXwxNR@%{Mq)Rs%dEG1ODKna>c7Nn4gi+;a9RrwG9oGcaZW=8w zDfAG=dpUSiYA{yv5h$mZ2%U<%cN>{Fi=yTRdg584LW=9yib@oHhXzlbZo_MohDw1BzN^*7hpM$bPH)UOhGTS-sAnD%4G7-LDDnqAy(|m zG!`8~nzrhF^`Oj?`J>-sw%Y2Bdpv2pbTK<<64IAX_^^=Om#7`tS(Hvq934>TdvD^^ z^~aBlC=FpT68V{6BrcaEm#JL7?)p=c<$Zg|frXs-GH+J1?w(<%Q@3uhJEK;UG(?9k zM_@MPi3O`jB*J3)=Uj<+uQQfg z~{3bbBN?JjdJxGoZ&+sKzZ zKUdn)Z;C7^0H&Zf*R!)zuUy$A!Yja;xOiKJe8FI;rmdaLZ7Em?a#hHtwu77-&@H$4 z3Gg^a*yYjH{v4fwz^rO7^|9M8IFp~DQX6{Y?i(UxI78a`HS2TmRK6RNp`)ENWnXCa z88(bEpovWvfxCBiCl5dneHVBpWn_m^oW$z15j$sfsLhMlQ#;2V(s2wvA{9=!07E_A zwUqD!SUan>jx{h7o5Qlt@Q?lkSjy^VC4>`m6YQol^mBvPbuTB+T8AQSVfNFee}QWp zq37mbx}{gV{C^mG??A5iKJH(8uhY`hKq5->sBct?kjzwMq)l2HR9dHnrce=)NF-$y zp(#bBq@+TLgcg!S`90pMb2`^`{qFld|6N_h_xt(0$LsZ6uet4Nnaz^WYWtaAS^ym} zGp0=1R9i%5GmvZT+ao!v0panvg{5f}dIyXyufyn)!nkNU|ExC`DHIBrwMhtcpVCR*lV%`Lx#WR#!i*)HkfguX9L9fR`^H zI@Dl%RTnC^!&d8EX$vCowmzH@C&bn?^StZujw#d3`oe}Z zXxOlGX_fDDqVbW8eZe#h)Tr2aDw1)G-6!xqXumE|LAMFEFR!Q&qT$4<#}-nQeVogk zI(D>)dd|HNIIXTP8H5P*KoD-rv^70Bx&Tjo}v4qN5~THZ|zV}10hfpdEH(YQkg`TL@(vAUcX-A z?>9TB`|#G;N{jy#mr7O1Wuj$72@@V{(zxJzXN4UUCL_q3w(xym)3Q~omuxAwy9NRO z9JSsX{62kJeaL!YE6=@|Wd}3gbq;MI_uO8<+}=;S_v)oLfBwna-^9g(sfcPSlLSPF zWvenrFXZvp^S^%{L+&_!oqkw5n+uyTEeq%f>RVw%2Ae?5sI*sN9k*1(AMg|Y=+x<| zfyTGV)2Hu~Wc$eKn7!LRv5ws4cq(zex8(CStP7JU1uRsG2>b`@}9b7Q#k}U(O88d zvWh-w0v(}p`<(GujVNn$rcSl_^6@3!+Le5EYR|%sb0d>J_hjA|R0uC$cL*GJt#K+kC`*5qE34CT;9x&>()u?YSQnD;N$Bvd*S{4N)lHub&hRn(*Fx z-qlxRs3EtMLA3pjUsZcnvk?Cv-HCtKf5JUXmci-r)x#S<8%P0|wWFQ@&f95ewn+BG zxYgy$KPYO(&K#7R^m$|FmUg3|A9GB-PRElsl#?b&&|c$DK4p};GSyVU&<)_4vfe@=CYGoO1>2+1vj+e=QT-; zU4|#JOL}78>K80(*nO69K6jP~!^a~d!sKZ)u^rCuqLb3oeUy=Ht#Pj`MC^Yh>y{}=H2?}tI(0wzz+MBguZ z0p7B%yt1^Q%StK~CL@k6va<^_dP-v(RK<(+d3$B>Df(9Sk3a{PkLZ$t*7Yca7&zBd zkI9rLN5`#G>GxU^*@PN~oDbJGdM70sQf&2yNtaqyy*vGF7p6R%SBXfcOfp+wAm;+{~9 z(DS%KjZrj@ck_jVwNc@Lx2O*S5t4G8UzsJjO!7N`S(h$d&hg_#GOVl)@QG2k3~Fu* zrQ=5?=@-=S3-PlbN>u0CsribAWE+eV^FS%`C*<@l_K+<{J#{M;me%*%?n#4xog5P_ z4SmnWadU{6@HIC23$ilnZ5>zzTd#PFqg1#0c*|!hf?$yQKQ>-N&KpE#zv3MZulr07 zyK>d40@4u*X*T6arUCM0ipp)EogRO#u-U8aR93Z~yHVsmQzI>)p^h46VQM;=%ZCd~ zj349eBX5(MS6+w4tUI6@%JjIUIg{v|8HCt_R%ey;m(;!+_K*dbl{R!npnQ29On52+ zlq4(bqVFJMe0eOC3-GsNBPu8?yutEoe?=s&%eunhJUW#VJ85@u+N4&SI<@rN0x`$@ zPLm`*194h}oJ~8ApW{0MkeNyjz({lj!8s$j_aTF}b4B^+bMWl)^XtQ#V(_AK5^oFC zp>wxxX77g264O3bV8k$&sRss~^}uI1EkQi=BdxfQJc^-nXwhf9laTCo6xLwITOD29 z0rK)U6`gY$$HugXoAf1P`1X1h-iy5d+eNy1bxh8_+k90q*#@8BL{>!&rT{51M#JM| z&ov{x4;?*v8!gl{w%ZaIF_6i|FOFk)XH~$V20gNC)vlc=nfC12qdWJRNJ_>u1UPnz zpIY(8*>8F(!IW^Fg^Y*@-=Q6*rB6%WqB+;$n4@C!WPeaOB2#e?!<`+h1_5uwE1x}W z=I~z|&c+^|uFTB_oH%`xqT^ zYR?qid$i^DYu@r??$m$Fub-WBB4OgM6;ZmabZ6{c!VRB2yRi8b9V??08ky6%v6>)XBb$S z@xANE?gKEuEDeM(?bom07VNml`V~HGMghaT?h~v~fspT;9=++CXjw_)>?$z3Q}0iw zJ$3_$>CFQN@!};1hK350^~+bUG{vh&_15UVU93n| zqkI@?|9B63uhFoLUsgbyNGT{Po*->dv~b{jGd2{)n}si+3ZUxygQ0dX@9jKYi#rdR zj!L09{$1QmI%Z~%EnTALrM9PdBnosPE51wDu032uS_A;(PHwiNiOIT}%I~(q7uWMj zE-^fjvUG9qI|{VHoR@^qM5ku>jBw@{Wo<7%Li8Dv}v3bbsW^ysrk0%Jy)k9W{t?YJwcgnUYI%^UX z8^|(+m+^`}nixFkH_0=xUwtR?@^@YI_A@ktl#Z5uon2C`r-t1=7?%kvopuF4h%J1T z3!?PqFr|6nWr5pkC;SaIn_fsJ5>oh$9-SZMWu#Z{9(!6(;B!J|NP#tr>JqASQe-x& zB~412nh%@n+t|qZ<6SyTL2}|@i5L^cpjn}pl(n=z!t*R#Qa#_*w_I(2WFrgyM;7j z@Q@*eWQPYqFf&+q4+nB4=M&XdJU%U~QbN6P#d=`I-5lGgVA2i4l>}XnbqnX1lk?Ph@+P}n|~1fWZUIZV!f43gl!UM>JUYI|yFSe>z^7sZI3 ziAhUjRTCZJM)?aHA^Ty>BKs+AQydAjAXIR`2jAffTJvpRa;nG?BPZ%Yzv+usZ**3h zmScPn2;uzv+kXfIjY zS1|=h_Rd!!oJ#ys;9l_=l5R!etxg^u9wN7&&0$O8oqT$TX;x<6C#{2P4W6u9$MGdh zD!oTFNjqUF4!k~nl--Nb2A>4<;WX^TtZpPlHbb5|4m?=X$*9FGYJ80!jufcK?)tj7XdJbdeT$6heAlbgQz|tyr*xEXJ6nIUW$TE56q` zOR?JTH0dDOLQbK8IyovtMj-hpsFp++1I%Qsq=JzU2Kzn>+M_1EGt}Oa)nDoI#SF@# zviWJLAxjzUCFo(I0FD*=Z#Zk#Nw=-)n#7lmw?ArL`WJ6>Si@%Ov}yAJp+A*A!k|7B zmOce5l~T>!18$wHrdfV)^VHDhT=*B!a}O#)gq$E_@Op^LkaeN9`FrAR$0P37Y!%1u z>rW4J$8X$WVdMj4K*uJ^*{xCQT3!FH#GGT@hZl~7?V3?u;65~p1U>RiGYW4X+WWbO zTX7LsF7nm((FO6RKVQvS)9g!r{r6Nbij|Iz^N@O>>xKmBm8ZdlDk8RN?XfEseVQ_5 ziWmXGJ=fRiMI*?@LGHyNrMEj9NcwN~T*<&lA|NbJnbZyrOuB$RqrQ%O!*a3zL1y!~uXKV|~={-CaCOu?u zG}3Plx3`~?mg1OXWq`S%T9Mh&nBsY(c#V}NoJbqw;e1S8_3x(U6nDMHr2N_=Zc(DsA|Aj6rlvK9GjKPtF{vx_T zs7?0`B2=lqsIXAzwCTjPb#z>FVqj~8vt-rkHd{C@Mxgpe z05!i{!hQv}F*Y|>ba(uCc(Djh+C|5n)+u?~l(Nv>gUg?1zUhzjmJ9u(7%KkA4otia zcJ?TZv}c)arZXE7wDa=(0WnSH%(+9MAcS=dTa)^fmWQi0g~p-1^!|X+T{6VzXXXp^ z+`ALnqoA}@mvaijR}4Mo*2HLiTK7cwU>V%`pC)@JgKPt0E3ijA_f#?(eb-ZD+~!a@yb+IMWsF42f`?oPv=y4P`j{rHAuEw)wuyEF<7SDNP6T= z0h4H{5ATwp2Lp$)Z3#U-)vx<(c$iw7_X+K#hiw5tLuE@4%21x~S#KxxwQpzX>gm;h zl_N9@x_I#j3E%gb6Ch^4hzRS-%0nrRCRK$j7g$msPHHZZL7P2|XDWPio({IOdF)ZR*D1~ai@qpZTx3m#Tv(C=!H&j--j=p3JHm#P3FKa+~3uI zed%Cls~0=BnLlk}(Z6m{k2Nnf{HANu5*(CmrQ;#+?YkizTD3Y@t3qwDHLBB5!0e+3 zo&1qnTScA%Ul)t+)vG3+u4@e>3K+k)RtFt@eK|587F$rPi11h& zD@ml?y~ZlVC)omSaL?C*+m)3VPWKG`QnK4UDfO`j@dY0^R zNs^{6C%2=%_Hw-#SHhyQT3;fk*4q8&(%uSdmY$k5a+1!JX??7{oRW!Z+S#_pfKzwx z-3uYK0(5}jtEq_eid;S-KD&p(r(32KZm|KQ(e^Lij4iluchHqcxL=a zWck-p-p9>*yNtItf()aB>9hKjCx)$`br2iHJ%xn(0yPF&SB_-f)_r&xT3R|aKCHz) zd7J5yF^|-bB%Gx&M-S8M(JNHIFftrkhee)`hp(?5Qw)qo=5*KfVR7gRMK*t%( zCC2{H3!%91q^1^Tb4Fm=16An2j&NoVL7XK{Y8oW8|1yS;oxc|zGBAc-2TvBNQ&OQ4 zzke-ji~kpkfFFG2`p<6%ubXpt|L)-n^k%eWTZ6?y&RnO)QQ7re`ILM?4Z0+!H-Wo^ z;u!mF>Z3<9`Wnsha$0t8jCk~*!$KQ_o`IuBjL_aQ>5=y{U&5oWfanySi>A4v6m2Z@ zEtLFTf%av+es#p9*EWOqM6F=jIra8v-{d(GYvzM+Zv~$`xgEMRXp@B*a}`^=$G`b==Z%z<27IebjE90Y@k)pKAong&w>;5y{24cp zr+N7QNvRs*37LPW;(OS&xWn^)ty&(bsL6{|ohu4iwM8;R8gt$p@by*NTsZq41z!)Y zb<1Zgg8|2m9Rp)^@hXavw{x~?T|Nh~WNFI>uUnS3=@j>EsHe(j)K{@+gm$|AgF-)Q zXCLmpsf}FR(AYpuSf12F&T+y!dr*^7z@l^Qoi^65MO$f+uMPMsNWuUQr@oy#n*`st zn695vS#hp}zL=-<@y>{hTXP=@e-4&4x+Q{4r}b4^1}Z>;Ol!i?MKuX{BOp^~FYZ^Z z_H(Ta4TVny<;P8kMIMI<7x>{vBvoS0&-506!t+qgcsjkrPnmiZ>v{HQs|9B#LbM_y zBPG^n1|!Bz&cXgivZDAPStbTZtkJkB*c$~7Irk1T1r6ivf*OF=J0U~6XON3J6|oRI?6}01bMrF062H;0@f*4+_&Po} zlx&871pEeNGW9ojVj8p04Xa@J@%lP#s}3z&VsL2EO}pVF7ODXY&KXJLN5b6PNB7iwYP-Sle9%bWb*M06|T(Istx4{sFW zvNUb9!UikpxcX6h4UIdQq|TJ{kF>s=w|L(>W{B6Ur|}q$7tz_87xZ(f5}9e8w@g83 z?_MF;A$^M)`eK>dv?+5{yY@LXfYV6pfhGRP!gY#p=!F;+G0ObJ0rPOBEV)~w& zz%xvsMB6(w@uMJ=uUI=OH>s$5wPVK)`JgqX^O0ss>gy_Dc*HJ-0QvFa5d3h39--(t zkzH29d zkySp!wHO8fMO!%~A$8cSM5pr-kJ@Dg&hhz*#(iHFEz5p(fGbr>$nL~KZ1e2-?=O`K zv66O{IF3Fd=;v_G-Mf1^gBuH*;-LcP8CCZWfJ8F&!o1`;#V{`YMzNhU?#6a_eYT9} zaCFS_zW8(K(y$8|+n0+Yv2D+hyI~X4D(@X`=xT&%zq)#mhQ@KOuc)+J(vK&XWCZ=c zzFATB8R@AtZEP_B;!7cS^R?tlD6gqP)0vAjr*Ddbbexz=nVOsHhhq@&UvuUf&@MRc znLJLR^9{2zv*r$`?t%5ZhwzuMlvkAZq9s}NWUXG%u458s5BR)-*RQp>0`^Xx=vd&) zJ#!v7#ystMK3{=wI1xvSa)O&Jhnzr&WzL5k|8!xgX&Jyc+#@jd9Y z3BHVxrCX6vAI}du@k zy+UqA2iuv9qY7KviQ$O;%5U7%JsqeHu+Fh11C5v$*0+Dtpx%C1*jZbNy$aN)w? zOhM+rcjn^Xy?;OEEi0-B3XZ+}R8WZm=uB@>&C3FMbAdHlu;%{t>ze!48g*CrKlQHv zp_1*|we6F&?E8)i9U8=3zcs+Es(pSbxT=)>nS|CEGa#HkhdbSNn&a7{1Lftl z+V?Q))z`W3pt+1i_nP2Sr$%t6n#*8K`k_6FL)_I(cd51AU;msI|HWKPCbEkXq^tX^ z_osuyYBpu<@p#&MYl6`~72YIVIeW_jQLAvAGvultYaB%(OKu|Q55nbz`(sTd7owxX ztIn@EXic0c8Lnrl%HzUhbVCp8E>2ZCA(T-6PoD-U{|`tl{*-q`?RTq*Iu83LaQM=Hh9hA)M>)EOl7`q5L_JkbmLkJ$Orl#&fi*xAk;T8y&I5R|$IK2`F z?j8QTs1EZPEC8 zb$7?m;QUFh@AMoD_0&9XGT%gKoTbRCtfu(3{k{SqU8cU|58&!$I|Y9g0)vZO)aN*c?ik{A1Z{x0uiJ4IJ}?hdd!`n`2KY~ z#Kb{>`M3F(k5gZ-!b)+dKyCNIV()+(>zeYGr#{K=rOoO`)#rH^lZhyWaG6MY!IN5D-qA(6|Id3u zeWGT6x_Z$ZUcP?q+8LjEAUN>D7(4%}s{{8-R%MUenM{E!&6_%7AKi3Y&!FG55mh^0 zx@;c0`j*>zmC&Jrm2)ccnu%R3@KHtd=;}$&PBksHkc=q=x)72sN+K?w8-Sd@i8tMb z_#>d9xiB1j7qzIXyZbAqNQG6*3As^;F{Of5@^%>-i$mjN73p?;$3z-Ssy}@inO3=@ zyOm9fTUUBNO2ELY?qbGJA@AvQb!E>JER_dVt+L#H9-5vzU*4)*RsMWV)-mW=p5f%jBWCS)00Z93!UZ8~7-rGP-2FPDvW7jK?hTA$Q^ zXEMONyatm7EPWSDP6-{c&VACri(`!bHg-1M_Vq-8OXTP2vyC#EH6S#>yNg8_7sX19 z`KHHO@80kF_hgVE9uf5^O}zs$w^t+)s$fWcy^k zD`RE)Ydxbu69MTCxs6-eZAT$5fR}5V8!Pxe9zygOye0GbCP1B1JI;q=|@0YAh9URSIXgYNzf1*g@2Kw79zIv-bXAc8F94wKZEu>t@cUm)o~S&2-0 zc&{Z6xX=;r?4|X^mN1czin3l532abA=qqPl!l5JtF@lw8(IR~<^u*srh7})QOcY)V zPA)Z{Pv6 zGbi5T%NHl9?+7?EN$$lKV*1Wey03M9)~SYKi^VVGsx;6iY4#BkwdR6j!AvIVk(QFz z(gB>7$&GjLwQRY3!x2o4)CYhf6^d9$xj$%s07_F(p6x;8fu~h=%$UPmU|5mc1x$N; zwp8x}CB0w-nR;|PBSYx9&sbb&FNIZm_QvC5mRre{Ctkcb%fC`Ws#1hmI+fdEs6XHh zTx6|Vv}gf*C^+lQ_20D$oM}fRT$Y5d+cwDGX&WG2R;_b8qeby zQ#Nb|eGC{f>B)cbn`ewSHEG_~hH{w)13sz8d9MS1&Eq?8pkv#PtE1)NF?84KM|5rf$j7K^P#nZ8i{G3IC)Qu zzOW}?>+ia_svW0mts?xQ?M@drYu4KAhwr<_zH#>A#P#MyKSuA*z zObo`$)z|D{x_L&1fz?p$QxD5C^@iTI_9O5AFs;9o&?5b-1(;0?ITz=*p)@tZtqBez zB(-o|Qjo;ZV%;GF*ygu68H(<0=i3O@am2!D5p|2htG6CGA|1amPT0!qTr@hjP6*YlFIC?L^JM6Ha*oRL)IkCT6u1C5ssX zH8oAdU~|aRd7d+=&(NTB>DDbxz**el!a9s{BIpzClo&cY#4^DXuYysYuq|*Lu9{iC zk)b(KtZN}m)hMQ>>DQrf*rE%-Pru>2ZK#IXok$0MI7-6nCi-A}BC1uy%&ULLcrq6z zFDiHE!(RJ(joAm(WONWoG%U<^d_*wF@KTPjp{u#u_xPY8VrxB^pObV$*a zqKo#b)goiJsL=pu@PAbr@wHZa`^2!?et16JU!VV}W$l(Ds5gqxA!(Wslx|^N$|Z7g z!RCRo4m(cAEyKJhI0mn{{gC7I;L(A10*1_SAw>)^#60{O6{#wy0)7gA9#EUcJ7yV5 zj!T?}v(FFJfAJJL19$>K*5JFlN)HX4Iy0)An+SDuA9`L?;_mc%<`HJ<-%(Sc3O1V_ z`CxIO#@zqvA+|CG^Gm7rCmb zri-X#j5M0s1t(PLxB4(s_fCcxPF`J+*7|+_3>AN0cOMftPV{G>Xft+h?gQC9N%5b3vaFU3|G@M zTiXG`C=pp9nB5JLxQzi9S&4dt1%eI=5nBF+k@*T5BUI6%4 ztYnwWa1$m8S=5>2TdEQ+!}<5i=(Aq~VSinxYs81-oS(NVap>sLak}Mo_{x~~>dPGq zVZFoG*LR42FRLK8GLApoR4rKRs0vfKljfJ#;dWTam}5LitFYS59D8bl-|rGmmz5W4 ztsMMfPWZPeZ6ha{={3OL8nTAx9bUA^VOp#sFF=43^7}`0Pg`35{Tm7G`|y>T0K4BnOzQ6s-aE2>q0%%5q8;08g`E$k?hW{*M#mk=}fV@~w%_aY!z(d@NZN}P7pHeR2JlFAnkk<-MbaZs2pVx*x zoCk7hn-$;qNB^fW_jo{{p^;?Fo~T6^-*Y_(#^OWzty?b;r)oJD6&2x6oM2>hFfjtf zQpK%G?zNy#0;^VAwH+o_b@TU)&KnT4K+aMt?GPC6Ga(Wg2yDC-&WPOpfgi$kf5E#I z3hx+~Y`0gEPrAgh4=94AhtHoXcj;=3Q(t^8v^RxUrP+RPoY(D5SAP46=B`o`;nA}t z8rYvvmn_1%HOi;C;r(;}F098^C;5!En=-z8R(C3MRf5LCqM8`AI%4+>r5{1 zr=;W#Y=PFxdS3bSW4TyP+}+*9?N4WqrYP`{oik>35Ww)laheTml0buDtWbBA z=@~wM%#m&xxw*MTEq8G|Adq8|ui+};jY>Y<*CgS31rPv0;NFl`mDSZ0V7nOQ8lS1w ztQ4}~?=XN;_tLy-yOJ|Mdu}Te52w6K>y~e-E7uNxy+nCh>~gN_8T%v#)2F}Y@{-p) zIx$BkMF=kr*x*bN^HFEc%vOB&hT504Dxq}Ms@&MaxKFuc@L(N(?KWwzFPzbp)bsMF z72y0|;ni8VP#$8BI2Y+00t#;OmUIjZPI2+95{c*C3u?x1Q9hdr8@ETR+mqIEF|WFI zs?uB$8T6ClnW$XUvE@?NzZ;)zt9UMqTbK)ay)dN`NOw2^A4q%1FxU5*`?wJ_dykQe zJE9Q~j|M^Gp(96HdbX3iVZtal`lt8b>d&uxJ$J^8GMW5VKC&Zr9qrh$|Mtc$raiQ_ zYwzi}O>@bDoeB$s)r`G0U&o%zJn?Dmh~9=Kfx}9@$C&6P9945aA+O^$K-H~v?>|4* ze7kx*x%Z3S6L&_doz1BHC^Eh`uEOwm`7`jgI2XA(?L8m$XmGupIn4X@Zyc=r)5Qa1xj z$Y!k6hqH!OdYrSi@v9rNZjw*Zi+mE}Ll{UPg-<%lnY#!M9$Vu8Rn_w)ZS8H@6}x10 zl)GuhpI?*N<(=)~o~v?uUEdzzQ5%2dqT#jJ5ZUrN=BvqZz34n#s&SlQW{%a57|@VcCM0#Om$EL(ODoZha; zQl`9)axl`{lKvvpL|A06K7Hy#i!^=hnBzz<={90B$MJF5z*NSIQ?CDkux@Mrr>_uM z&jYDZ_E}`9Ft>N4>l>MEm-@^*dcm;Z%c?=r0>alE@YU#5$ExfsEt|M6_y1x9F1g` z7IKwy9;jmX0mEv21)A5Dgi`G9NV%9fp`fhnHP62ZxlHc&@835c{YYCfGyD;~8cvPv z$Tlfy*SNu`+}wMe?Jo|e(7NGc>5vdM!7Pd%nC$h}bh8oW5^EBM5I8key!`QOnfv>3 z6N8O!Tc2cjt$Dc?gVENjjlu_P&eh;SSF&%ZIg2#%-!9&{&LyM4O zFRaTS3|~M|O$I9IBk3!6+BMpBRi0P z)iGlR4IKCva6mcjvk1iydxW;O@Kf@)&lY{xzv(X=RA|J-)bXupjcRd&-#}bO-#u(i zY1VqzVmpg!>zSDz{O}6clqOy( zPBRp{_8PtPN_O^zduvbM1HZ!rA#zPbGFnoSVAJA}BUI5IxK zesiiLoD0lOf16{oQQ>8B7#oJd;AUQ4ve+=6_AX(0i+K#B5-xRca4v8iB+@PeG}_Oa zGNl>yQZXcvcCc~zwKhY=ARwIA^Mxnu>C*y+qoqcMsrVNc70tD`Pp2D=d3$=lQ~Qt5 zXfH|Tf{PF-EoA9MR31ZfIM>$pMA3=2fEj2BI*@QF0c1ow5%z#gu( zcJ1dr$Mbs%tT`P z_O_!@8>pbR9N2_@7#whm zmseLLFBOV!A$&rn`?--;M7SsN6l3IhNCZUYFO)co8vnvgfZ>uy;oZ4M5HMNp8)r6! zPNaiI-7v%Wp7~r&6v|D6A)WN!Ei?>#(3|=B$EiJTD}8Ci*fj$jn#2b&Q*a;kN`P^q zFl6%M={-C5=rOyjM`Ix;5a~ike0?9Hhp7qLi(Dgpf!S$OfuZ30cz|q1*p{Rs5~V`J*Z(tr&VL>+8q!>hB)(7UFl**xk|%WOO$!92Qru+b@G!NxUg<3&Oe7zunenlmOiVn6 z?^#Xus$YzSNjV?scK`Nm_x^Fb$DWmmf3%!%(P4Q6*MC^c)~yp9rpE1DzhcSsuwB7R zmd@(F_2sa*O<9@ZBzyLQ?`<@%hsb5@=Q&?bKg>M_53R5FrH^5kv4Bf`6eE1ePIIn> zKy-<2&BOuHRKu#sWzjD)Y?!-t{uR_AS}{B@&} z75V(}YkCBK=hr>Rci1nh1D@dxL)0jCp1=4foB}qswuF^WP%eM|^r`uxOIatwp3ev$ zGSoU5`=ao3AP?oxNreNyD|n6Z)z7bEQTgN@AHVqRn*68oE4`j)G`qRukF%qKU5lxf z4$XY4==yl{zF0FKh(Kh#D@^Pr{L%twBs3A}39K*yZCzUqRsohe7xUi)hw?g*)I%AY ziApV7{VI=SFv^$I%ipVpiokC?d{hA+V!YhlNmVNg)>Jpqh zKN+A#n#kZ%Ab~-QL#ko6Z}o-8DjA z68U}O!zbrdE(D!9vxn_7<-`{{ zDJj&)@oV4pWG{KVIyo~!QcvH^L{}BSTgVcTI+e4xjuyI?tpCiUC#BI$W=p4(HKem; zeG91rRfdRR2s;Fb-IiK|PN#-S8I2u-NyVDbm2fGJkOH+GMWq$4!pY)BXgL04F_UwB z`m(HMtuDh^nxm0KQX`v(PL2-sJeKPFMojY%GqE9W|tY0n}F~US$IQ8if(60xB zmQcp<>KPX(Gh#%v`Doae@Vs{qvP9$uYN>9w!_^zAd+Erg>&D$2zC7?odC~M?^VRr8 zBJ!Raj*`kO(&{d0gYn!vHJ9saHEJ}^@G^<#*smLW0;vgsep9B;LvI781wVR)mn$Sf zz%QVfHOZ}@u&y@Wp&>%^SjIOQk_L%T6EsfB-o9*XN;Q^);bJW4(xr?n%r=im!1GEu zC{k@<;n417x7IVM+9)#ikuMiH)-(KD$o?87Xr{fnPCElp3f0Ua@wqp0wU-*~H$`y| zUNp5J`oj}-olc&OW4Q~GPV(*3Lwag4{1Jj=!?T2M)WPMSKHWf&NYD%|=E`RkgE_Z4 zwA~SU`DXu8!N9+7zh^-r5yV@GARcx4j{w|Q6OD{I(I$%I8EB5#C%=I+s;zh-MY+Rw zp*p?=dXHoQ5bE~XJCw;87?Rh#o?&DZIN}>chDfwvi4o1EiUEOqsD9T^ztfyY9ER19&N*X^3g@fw@%i-EV_ne1=0ah zeVdD*gke;obQ?72l$jrr2NAO>-Y4}%k&EF4C#xh&fEWOw_9W~UbB;u{qf-{>9hK2E zef^@tUueU*tEn!VubKDUl)LiioxktOT#=%O>n(J4X0nNS`jI0`C+GIhBpek<_{qm8DPWg9}i&$On(^@Iq&ScBnk?uFw8AV zO0RgA2P}4>{ouhtek8}m8>&haGFv`Z z>OZQSNSaDuVBo3*CY;%Fh_3&+-1&0e6zWM!-Y7bP!a<~faqI-e9)`OMekJIF17`_` z9xF~jCX}y*U$eb3K#<6DDd2eI4yj-%RnXPs#%KqB1gYDMjd4CbHy(+tM5`ynKc$euQzTao$+_a??I;l zY4Q5?YZT%h{{HtcLT%l#qZ!CjA`*d$^CD7&MFy7L9)?ytJgKzwbkV}V{@njM_JYdl z;Ck9_3QbJnbn;>@!O^2Vpp9{)9j3uuMbX%)OBdP5kuAjJIo45ea_##d;UL_;f{I2& zti{E}!Qg+S49Gv|bT&g23O_6R>bwm@fwoBsioQ1%%loyIlx7&|flPNWEQ7DSc%;wR zluDm>LM}%pW zvsrMugYNs{#;+!|s-7VSyny)5{OpN#`Yty@OI77QY!7qFS*J_a035hi_to00V!0^Q zs{5X*8Ppg`sXZ7f(2r`HU@lRNN(rWx58IY?h`0<#DY(W4d=LW;RusM@;;qu^@ zHM*`PJz8tJ7sKf`n-F2<$n!sdG|hBVs5+ZRYRHfwm|vqdTFsv?t7LYjpSpU3`1%<> zBpNHtq!dS&mj=)~(@?DO{lnKegY)2F)e3sBf~`A5Sy_#FG2DeOfyun~k8}ANQ#aAd zvcQ>sg2~T78=Ri!V`Ha8n3c5~93*;L?pgWl@UuVf15Wnz%lmt)O=1H#%5^vdeogUT zxX6P`kfA410V9qR&ao4{r^WXqaG!CTI@m4Qvp_PeOG8)mV%fF3clFaB+OV|5X5`Xt z9;53^R?ofT8u_SnG7$^YQNz{(@s>s)0P_rsnFf(5_En4II8wIbO^ znpEsa#TgP|wU4!(-pl9fZlgzo27PF1V)AgDdUtazNo0oJ{CTB;r*DW*VNoO^0YT3v za8g)QNH2GAihp@>e5q{tn_>$wx#+MT~mpJ2GWytm@@cvJmk8bVw~F}BCb{>W&A zBMH()+?tF|Vql9(@w##4y={0dOakELGM)B7@1CdB3)D=fuegLrm9SuP4~Z*k6l49E z7DErg3llkogg^v?d-qY6d(2Zf4vupwr*cV4+DlxFS7wpERCeQjf%Btpra=!DkGFRq zm=H495mJL&J*X&o1Gah43{Yn2n!eUkc<*IhGBy)nMyWt>-2&Qo0nm_T4&=4!Sp~T? zyU|${l$6{C;^S=>u~vn-nlor@#%VodfbHAArigz*x$D)ejZ6OppXM^eb64nt!#mFo z$8}Lj)=hc|F`4OswX0+G5pas0|1*XhBBjo5glaJ0ImEsVTmRW;?9JhQrCSGQA3tZX zVvG?Q!`i70 zo5EX2R~OH?aLVq%1QaU3xJ(%9%poFteTzp*ZTxt(1wFms{ON*YiFUoVUC@4%jWVHi z(#drB6)y2(ALXZ#+(N)#2SqP8vPc-k(avwIlk(SUAmYSTWeY#9@&BdHfxFXqrFp0-gM5WtgNK)PRYvh1U>F~ zCE+y#8N{%KJuP0wS!ys|V83la$Gqu#!g`oQ;RM9MLDPjfB@EDddg;&HvY?8EAh~)OPz$GVI{m}hqN>+$=uv~lgGGZ< ziR^xW)gqRl)csz@S~3h6tJvlIHS_+A*92=Q*D_67MI*h$&KG@~a0)wbSW`Y{raHZT z_Imkyw{JhFFb$pm>(t?i-+!ux(V5smBq?QasgJv4(9{}y{roPxsMGYrPG^}UnN53Cm@weXOz;Qc|wd_oCb4ye-l)c~g zqwr}mD|@3tlFVR2KFb5P+w0@d!QgR)q4YkZ_VXycig_L+OS*BLBbMmE)uo32Uc{es z`M?8+u9FL6!C{X_gI0h0_DztEcCkLBil{Qv#k@w@D)9*N9#7u9(0DjHLhV|X_qRWh zevbiSIlgD#gMw zL!E{$im&-k7qz%uK@B8IdYhq%6HrU>hOQxcq%SryG!ze#3+Mz`3k$vBy7ch4#_^~+ zV#F)ZMe*AB3}P_?j?6k|(+CwDKv!3Ib1?zd^sH?L*`71{QUK&MnTEpILv|%02qV7b4G;qSpMw9N5q(KJ&C&f*@YE?i8w!vEv_@jn~HPRSB|x z>lt}B7x{H!{bHIWDI}ocudO(V&k+mOo{Ihe+272S)*vZ8LZ>9Me6C;r3#RyJMa8O!%5Z}>pIP!knyeCEI)IxI zmiG2#@<&zNixUboA5T8)Cj}jS9S|6iQ_kbkp$8L|j*M}#GBq`g9GcfmU)#|=mg*Mc z&nSzpdndMfZ3q^tp+7n@C@sExBxY5WwQ!|S~Xn#mpH1p0N2IV(r#V&a$uUx*7mt1kas%u8L`i;NpU5nYd9%lJeP#%=- zb0=;3S~95b#*Y(G?5ZIu;DNgop@zL^HWuh1h(nH2h`j@j-N=U88HugnJpis^64TZY zX1u$2+xodfUZJ;W*D!p+TuJwX7`|X5;XpwgVo?{lFnPwZ>mP1>_kJM^4uc1uo>GxH zMRTVAxUpkb@xq<0i8o-wz2YP?yE1$P$-y4I~skas3rEru3dcZvuH6v`qxIE z%=yNzc2g;Bu&k|!wm&uw%%{^qojVhgZY=^PsogF-%vo_e|r1YEgM*| zu_-S~v*i3Qb4H07>|3beKH?2GL7G5G;x4Px?vD(OuWts5F%iI?ST)2wEU?nW=H(lK zO@%m-Y)%lH9_kxK=Pxz(`gRUf5d_3)$E*`EV&S+t1BnJ2ZW>@g`>=U<%RR;{>n#PE zAci}vvJ`I9m9NlEW)S#K1&W15hOnl8AB#oH7Eq!K&KXE!8_1n-xRA}hWN~!Ub`yS9 zhPxhbvUbp^jfjXqKfU~Xot-hAsba`{Iz7>Z19dRlvk|2(v{wetNLu1FO!%vb{=`0d z>ufR@6MDeF|Ljh~i`Isxg}@W60HId_t{1Lp|1!4@vpZX^Wj3cj7FPi&`{NC89<~0F z-bwXd;n|vwS&o|f#Kdn%`ow`2QskwtPc81*3r?mYyJFN5mGh%vQpSzD1T#3;2>gdD z`=(pRj0R$UV&zI^QcxANb=Z00Z%%gGCD()-l|*Lsq_F};LI&B9cPVh77JZ$z@YqLB zl?(;eraPdn%49qrx?G{x7uv)_ZpDU!zh3%L+;b%ssdciPJ1K8{nX>rgHAm=ZqF}ns zYi4$+k8-J93uOojDsq(zVYr(MEi9%?7{7iboZD*-XC@o>dOBoc6T|fyV!qI;tA^R;ChJx6n|TZQ|V%5!wtg0-dY~gj-NP$NKHP(l=3#JSwW`#s`ib73v<=AVq${(lb^a z+6A9Zsl0h+TMLJoU-hR@sYWeuGJvpU+Err-B$Foyrb`Z@xt09YEHHWlN9sPY?mEvxvu-6_A>Yq``g+Z!!m z(Mf}iHNVT7CN$_eZ5e{SmE8U2&Q|E-NanYhH}9{cq@>4Hb`B1Va%zmcNNh3C*Ur+? zyID1G>I27&xnQ=Q+fn2rknu}BTY?G;*;fn2+#&-q_25s@Ew*ge&MUW!jpRdyZx;Xo z@=xxuAf4zZ0h3Q5kpvplnm&)?TO>$Py9z~PBH!Pgae>&|5rZ|^yt%$x*Nl8{CUwAZ zdHrZL!-79mZYo{P-FN@tyyXDeV4g-}}UO5efMo*zl+LY1IYe*llk?H!CJP z&NK6BW#0GKjcHyRyRc=g*a*&RR_hJ85$YYNHq)Qq?+eRjY-Kea2#iwYXR0X1TV47H zj2br(j=(H5s<&tu0)lo`8&M}qP^cN!w7w*ASpWzK`a9_3;|3Mf`&Ay8#!qOJT2DxJ zz_`(iBY93|OqyLVSR*nlgl(h_h|zRK9h#3>`eXv_E9xma2a#L}``p~rt(cYY3fD-} zD^zU45^ffLl;#e?u_@kR@k+(uA>fa#ghbLo%W7!IK-G~b0ccEEM&1OElifOJ~EgH{pKqk&TGyu{Y#=|Mli=#Fg>0IAZW&pMPXjO}9OE`-K}_bEx%G zWh_Rw<8R#oC2)Hv`xNKiV#Gt5-~gVzDt*>>Mu9UIBG_0(+EOW80Kh&XJA~k>I%>Mu z=ci}77SmGPV1dGl8_tO%n~DIp-& zLcOf!%;`-9>bd!_m)BfmD4<&;w4DqHklF$=#*({E2_f_kT($=?5ZTM12}KKOq4Z50 z-YkkK-}}%pCYiV;xn!k^hW_ElE~$k9_`}MSCCUQM#o%vD+IKF+03>-`~2AT zyyx{NvywN)7g$co-gR^5n^@#mA4}gBcge{Nr0h|#W*Z?w6 zpo?!xha{WYDza~-1pJ?hUJMr?*Wx0{RS|WlpeBP5Q9;iK_W{C!XQX`?W2iPU#Q3yb zj;O^VK9PYhJ#Oup$8jKp82d!{b5^L45OyGgK~ofSqY`7xASW*q9+ai@3f992Ye^9!X9-F(TB{Q%v_HxMLxLaL>bs z4>7|P`4`=rn2e11Jh|p|FM;BV1SIGw>?|T(ZDh}OQq;2|(;Dj;y}Ik3J)YGit@TAR zB-9WL8f4rs#>jBR-vPW7)*p@~0f>pFQwW@vEOEu-fpT@#(K8Vd*qN3Z=9aWkcBI{9 zeeFc4!?L=bmuIE2>+FHi329a%Chu2$XkL5J*l_(f3?1fi?5!R< zii!Br(6HV&%D;nlQ{P`&06)LGB7RwQo>oL1m%8v#pE%K23iwF5TtW@91=32S^VcL& zpha|jF+-%sa7m_LCX*I?k0!ojr%n@jNNAU&xJakyN%rsGe>g*JRbfj*wWHwBqU>wD zg$F=Eb?~792tM2n`T-Ho<-9>m8kU!b$M_oOt1bi;!&epF(h8p2vhDcxj|nILS@%T5 z_U0|xpxmU69KAem575Md1q*~53p~Pv)C(f<&c(*cfj)$G$zZSt_j)ri{*~Nb*kyrc z(A>}y4@6G&|09VJ7y_3ZCyXHZcDc4{(}u{Ve`{B^yuUw^6kE6_QLS?l2^rrkmQz4d zMICZ6K?cJkiuCE{OtoFlv@q}E)}`)e?+*v5TmAm|Q6N34X2Gy|$fDf*v@_!@>THC;P}z_v-E2J1B94 zV6H)IT8%=v4!&55yJ(<}NAF$H3IEO7?56h3(v4JnUBmICFm&i59K=GH4P?*}XMz}R zeg#oK;a9IP0XK~yoTp+Hg@Op18my!=kW4r_S}96@=lAi&m=p_$B%yzZ-dw+l)HERc zgO!%a8`VH{4WMN;pGBy^3+qpwJUJ*6+C#d9y$Eahfu5SrQ-d=Sxu_WV4qtG{iP`}q z&Bne;gJ1NHfzD!tCaWWS`zKmq3K<2NY7&A(d=*d}Wqg!5mMTVcqm?%levqo(r6f%y9kAMU|E zR_g%pg$x~x65RyH701>C^YfM|lwHgVzJ@{kb7G|K4LwWChKZacKH-+{dWm#+{ zE{B0YIq3bEDX1-itaNIyHltMC1t=w2IH3T%c=01KXiHp+rSQCq(c0+GXnDV&ly4;R z3Nj>>Z8=EAIm{^N8bMY33o1G}y*x4So!KFN4MFE0o|o6`)EfNCX3c-VPD8Yz*Z?kK z<50*P;^trMl6V14@$3Ug5!ur1LKF9s;xJWx8If*LPRo`rkMw%46q$I9lSoJp$eKNr z_>BlnhyY|w&Q%=;bJ{=v{(Q?k7y0AS7>_uofCL0V8xf%lIV?s>Ux*0W)pvbMY-?cN z7WT*4=>!2*q)JH%F%ZZ@e}~mxefY$oGAF+G+!ZSB{fp!Nsr`S4ZYV@UWNW#0&PPRw znKyTRwCPc!gEwCQ%I=?9cc#NS%?%vEs!K9uHGKmQ?~JqPO67C?`SW9li58vBUd zbCx(Ze?xfp7X2o}xA-B$hh^Y$?7tkqRbKe$4L6rVxoj5^I<;bzQKH^t15oxIx`5v# zJ^Vao2BG*UbeYjOD!Jhd6spp^vw9K@+%CfY41$uhq1txIlG{-FAI^Qg-^2X%Wn}$z zs!~^AYUa~dP3>j5poQq)cQvS1BG()|emn!{c?%UPQd2DHE9h;V>p27#d|2FWu4qZB z6*N(^hE!es;&+aBN}>F0a<`I&3;`EIjJLpW)$PkW-Uu;)hzK#P*=i|TjXPS)`OzylGJ7uh&lu3uRjeaCU- z8?jMI5u~z51n0w38k?91Ne%#%l*oxjqdz+I{puaw(CYuP4+vEH9b?Qq^Tcf2D^82w zRnG|i>_vA41*k{Mdgzo3ZS2^2mTh{bj>wQ)$1v1$qyPB}!v73e7#?`{zK-TI2iE$m z*|X2vJqlYG6SjbEMM0eY|4}p&;Lp;9dPO*H(7u{H#dI(>!j)3VUsTd^=9&MCs$M1S z!=+@k;oT@e1k8yGFtM&u=;6{h>g@fIUvE@$0lZ||FdIkkS6rMx)-T?_zb9}K$KQ)R z5o+~sHNIEI!>*ZH);Zz3-l#78^}I0;4kkeTY;05wO_&Xt5<>PXh8&fY=%7xfu>_^< z|K!ON8xAVDeHIoLhYlPN6_n6XU%lE0xI-P)wYf8QZa0o{dTbPYo^Rue=oi^T0mi4L z|6CD}*f<&b6B?r6&70jw$2pYgL>qb8mJ!M8MqSK!zd=L|K*@r-;!*M3QI7@}dx|b$ zh4_j^_*cdF=&?{5=KZxq3AzCd#G8*gxMu^A4M#)V7^X${h?ZQ8Cr{bLw&MT+n7I1z z;UT#0b5`$Wn~0Q?Le{~mJjAXq1u^ zdg@aKZRVX^l6P0cvz@WN{C!_W_jhxpduA>ZWf!%<0_3iDD@I-F|7&#)xKSxu!JyMv z!LHoBd-wiA>FqR-LaW7hmg4R;myvF{dLTBXAFaRzkg7_u*Um4^87?H2NvX-4ydrLm zhX%wGY+f54*)`P5CbA?(}YZOf=OQn65as%fFP{c7tdwBxA97I_Y zF&LHMm(%$*+(|dHvuCR4JxZ%&K`|eI39ll^7x}ty9mKce#q(K&))2CHE(px78N!x< z-?SNW%|Agx`P_i}{+qro38)yD2;*qnkO&tnb6yiaK|}w+et=w( zbwV(oJWhr+^K&RqA9|VDVfksQob$H* zKik;%eJ6W%GQ^ckcE%Ewt;JR$LZL!sC}EJT?1hA+q7+GG3L#v!gdzzSMWs|zss8V? zn8kRW-}Ap;uls(@Ju~XMzTeO1T#oZNjuV2Uv?YB84ivQ&x`43EX-&nb>pyIz$=yyE znzlYOUJ(VA04<4-WXG#b7(X6O)D)B7YQbq6j>H;BD|>W2g&%q!SC~fx5zF|rJZi~j zp-bYRUcS+!9goHUSWK>jLViK4Lswo}9`)@we8E7)!_5I!ogI}v%r0*jDB1EOct;oU z`GR%~g~txw(3?~;Z_lXy7W3y%*3%OXtDJ$GH^=rG4~Kz>5~4_vJpka8Wz||(AJE%^ z4xwrKn^o`o)M96!l3b8a#Ymg8lR{WcAh_fJ~7myoPf?(saj?>4zL{` zGc$m#y3w-0~Bm4^C7PgtZl9RQ?*S8z(>X=;}OY?GbX?b1Nty{Nx z?@?b&n##cZ)Et-x&zv9Y%Q}1fihT#%n-=vc-j!D2>ByP$xN!5~mQ2{?(SGt2uYj6m z^E!&Y#|J)?k}~HHoB~Q<`N-kK7Fw46Y}S6-+T%zG_eH9h5*WprGY%ZnKHyb&K9N>U zro8+|tkVcS5mkCFwl6j<*9Q4(bn_FJg;?j2~Na_71NoFj~qhLI*m)>!|G;}p-JGtfGr>3@-?1{6-Q zw{LHSR_-4~Nwbq($pX>X*mygYmQZdl*z8Yhpr$c$e#@2z2j|qPS#!6WUt#OEZIuMF zjTj;lNr=%ZL1Pd?zE@Ti7H<6J`!%L)R%ZOojEJ+2Wf}q9Vn`yv=!)8U` zh(w$}Ku8&5B^fF*zn1%JOQ`eACV(Z~d{J2qr`pe3R6x0AW#JX143Tslel>1M$9~B* z*lWj5s`cbh)G@3KFzT-P`<1g_anCsmJ{dtKqzck{?A(ib?>b20^h{Y50yR4RnR(Yw zmkTF+nRsf(_7k&dlmL6NAFDqu?cqus(aNyC$1}Z)q0Y+k$v3hJ3JHw(F$gQWZ&(W< zU~=eSwgzqPIlx4m{@|~`2wjwYe&ia>wwIoL`t3(0-Ytq7mPr^LBqfvn?J^W`?Zi8O_5H zYJe%;iST5xzIXTT;V@eOEI3F*XPN<7sZf7LEm;G7>F9&0SE5k7P*%OZr&cj$UU`i$ z!e)z#4wv=9ji|^l&lm|cZ?e`6vE*dtIV(qlCZri)!@xiidyENaE zvcrg~_6-9>$mU`*mgrhQVk}X|b&gkH9Ng#Xbc5;*MwF z0=MgW!OwXD47LYj2`Eit4`7(;4LkQi(+N;7Pl0;5?rV#L@amnmZ}^|ba*te{*wh+g zr!MAZ%h{ySuBw@T?p1@MEO@%)Qd1^=O2{S^Zdfr}ts=ByNlJ9q48 z7puUxt|=KyjG!b4uqYSEf}hO(R7&EexcVMtR)3k%zNiankr|9KOA$wSW&jnzKKR~h z$iUe7Ae#k|0t#3Ns82edv~J_?DjL67hRRgBdWMFhSoQhAuo%jV>RfCaW`Zq&aGEe= zLTI@*F^{@}rdgZLK4?{^$v=G^b!eWn!*rd3>1!Rx+!Zd=Z1SRrfkpH;Z2WgRKcG}3 zS@&8DJ36J^#bqh$?|vZ$f$UNxa|r&R_kCm6DBLzv47>|023--^UL3k^lN6qY*>sWSo7q2_AAvJqaIP!$C-aP7 zDK@`!6l%h}f;dSm7qKI~)G(xe6h`-%tAkszY3vUawsbLIIU6V%Xk4l4``cyBHi6F) zu~POIL5Px-2sntq_^4mDM+a`m^_ZB{P^&NhxIXuuW%^xzJdI${x#k90smp}#H5=fr zV3h}+M#~-eMq@&P7mySmNjfP0)yL_r=6y-0@J6g~<=L|qyps)2F-*9d_)-4o?c23r zI|#kA^Tb14on{B2X2Px5>YbJ4vd{is`ZOxLBfIpYRND*NBs|hw8M#qo^wfE+Xr{T70BAF`%OWp4p+VzP783JVn{fX_WB5t!BCfV|-5e-qrh9rO<;^ zNFxDE8J71iW|^~J7HB$$QwjH+Re58~^y@{1 zdxrP(*gLS(fSEQ=aR`(f_$HZ&2Wc{kv)YGx(7w<5(%L}~^5|C(fOpKy`SeLRM;>;L zLso27$?BnLW?tAmu1YNd=FVbURa`6}raKZFA-IdBkVEy8%Et$w%>fEIIu^WXYH!Lc zhtoL+SOWN{Z1;cpF(MaWjU^g&geG~f&!@{yr6p2| zWM`Jw+nNmi&L>^PMPVcItu+6GEN01~Zo8F8;=KcWQgu3(|2dC)$qcV0d z_}uunVao=hQ$E@MC$IJ_WBE$j{}-d;Ntb%(+W<+V8y%URyyNnE*$lloEX@9}Zse6^ zU+c8{hh7!X|A&ND`ROMNe{Pd<%KWk-&{Z<9MEWA-Xfa$cznfQcWN=v=&_GH3T1L0e zu8p>!-S>mkT_&?Er%)5=>&tR$23^Ni-o>!;zjIip!v+zpR`LLagNH6PyVE1Ep1X#LNFWkQgHxIDWYXtiwZ zJ%7)mlj*u;4EW*3mSuJw^)x+Y{O8wXk8{}!txP-SVO_2A#u1;ruYXlht$z%$sO2PR zznDktObx2JXT#Ty_f9uY9oqTqrQ1er!0A9+JHjJ;7X!qvQZ*l&a;e(EUloB3;w($r z=s1cO=gxc(Z2SaHs0-6QunjYcHfsM3JP&q~b`0;naFg8&tUC}<4JoiSI1{gN?(&w? z$%SceNr7eMU>*@Sn9&;#=?xogoJ#CZ{JMWiT%Atd$A=m>E#vB)&$ILoN$ibb@itl3 z16k<7J@ZGn43rnheLPe>{&pMq3fRANTFYj!puI2BAT;F=d0JdK_Ba+s0G1DLkOpo1 zdF148%Hji46?;2wX09!uBDH$^-`_*b%FZse$h@0+`gC5YTV~~kX7%drk8XZaeSqtO ze%G!ZU3TfNeQ?*nV1P3Zht?1J*$lhZKJL(f2@_&wJ?`m!-ulXjYman0jeJyj#0WFT z;*zY`iE}4cPO@A&R2iG9Xk(qHRkZf;t1~ON7u_)#QWJuWEF?sL=k^AkpStf3%uLLb2S5oG!$B9ALviKy$BR1U? zuF!Xjm6eQbh}u*fEcLt#>wOrJe-MmVeiY{Thfp`F4UEZo^ypDV%bSyER8YviruGnh zC>sQgoNiCvleLyYU6K1}s!Y$B=(GLdm}!n8D(mvuNKs)BRsn&)^d?cuvC%5j@s7=~ zz=5hu-m(>tB>C9Mf+6gcJC-j*mJGeDVsh2|E#u}5);XQflx;5CZ)rGUS@_YE5A6~7)%|RM%-bcOKS<+B~#PfeTWA}@$FCR7Zsl*0*Ww*%3ikVV0>|voCZB_m}#^^OKU$TKjrmn zXG#l>ahDDqhA;I)MZ;~W@;G~vV0~za3YARc-y(Q>Bo)AR0=D+Q6=z_I%?4&~a`! zv5+$SZDQ5@UEdz&aE~QTb*trM<3`9^9JP0+tFtQl^!%r*Y=XuOaqhEgtM@Cth*JK4 zd*^x@XK$_Tof7to{^^m`f~PpN@-^`~TPN5l;MVl|x_b*xt{K+E9LJ)&$mhY+v9SVA7AYdJ@|G>n8v)3)%2Qt zga^uhyyLp=kk8UlF|f;DZ#2GWQd&dZYDX*j-Og{|*>Z%>Oy@q`<70QGez~9bsBiqOy6aec;}|Z$Fu8cfJszadks&j(tPwa@71L@gFfn3Yp*}sy}%^e zX2U7{-|LzC6b_maF?3FAbEm-l5svMhyNa_T(RmJsTpDEt*=BneMY%hxj-3g}i_^_f9Zkt4PeZt-&tSgR@BQJ)B=K!pF zFFcU++R)sJ^b~`N4ocS7G9-qweruZpwj-i#^d2ufFkt(vX7Ss1nY*v5Hm4(Br9<&F z#RDhZYI;9UH;atgy=sABf%4$EC{6c8^`p<|w;f$}Uryy8=#ki~Mi7}D?^=7NH#3;I zbIZjo54nr?_=dVk?d7HMSl-V6_OpNVnB4iQHu$2wd^=?>@u&AW2h6C%m+2+T(`dN| z;rh4vhyGKoa=~z3fiG~YZ z>y6sATwifI-|JBq&SMqB{h6H<12>HenSPD2EVHDO=x`22qu&q(psiE8T z11C*)M3DoHD-i9KXm3no%UNhrk=9X&(xU_YFw?obB#0o zlE>Rw)pK8TZr3cOLRnpznwrY!&Yawau(=-?B7DUfNwt*5Mn=-ml9Or0DJOD_b`Kal zxJBK%Zbtb77CqVo)9uX*&0k-S|LeM$^j}l_>IB8CurbP>P`&EPkuxmZQ=1qTc$$4X z2LC!@d$U+v5?A zob#*~>PL%K_Ep>c-;Vq1ro#Cclu)6Vor0n;c=s77 z;lqdLI#f&jcG${4Lo#sHjF3g{e}9JmM^rsCpS%j^F32*Wmv-513vaFx=?Eanu_^Z$?M{(UrFZWFRsHjBzN z=FR<|4yn5HjK5w)vZZ;TDJ6n)sSiQvRa`Q_oR^joPcH&N(3LC2gaM2e+E}ZXR5%g%6J3)IR+#18`GFhLrVq@IPpbGY1``TI2Z?;rag zyl=LrT6JaZV^ezC#*9lTkT%uWbq)`ZK<4o*-RHy!k7to_E&j?JYwmo=ttn4Q{eODn z@QLO#Q5m(D;^bH(5qC5DYhgTU^A5sPevk)gpN&2BMHYzTCNk1N5X@`CHNFb(52EKZ zrw@!FM!{l~i3I~ITy3kb1EQMhfvb=L zCIWnoy^(v#pOB6T%fpF-@4+nz&6SS8BLF%$apU7*bZ|(suOe?mGPRXLvl5Dfu>=L) z0A-vQzDOyIFE5%43tZUMV58P++t!WL!5I8Oej*hnNNtR6;*=fi4d8~^r~6-6@c2w~ zH3XBAsU8Iw9~}6?ZUcb58j+?J1&JV zAln-8Y=iDF5jNAHHF=AV2HFh#*#G-lTTa#%{>SXF!S-3x->mU4c-G!|ryTgtrk{jc zLh0MWcw;@?O;a?f0ANrpTG70dE~QmcdX~{c&7q}VY((>blLnsPVpu{6Jk@tfCu-$U zFfTx!#hQSf5Xd`^RlNncA%phgK0co?ThI$I3R8Dc!Pz>(5<9W&#|2;P<|t`}@a?Pb z+kn?4IY>rcg!#0UgyW{Z{&W$jjKo|Y>_;fJh$gDcMm{H7Vp%P~?Z>pNBjXI^eigGe zSXTD{ikkG8t~Ly+2HGarkxid?MB~ym7u$5gF#fkHTEr7PXTVTdQwAk81{Z(|vdL1` z=TOn}>Ng71eC1BoWne>Thj(|GG{t*VZ9I)?6i2Y`hGY?gO5)=3)SnpJYXbW9_`EXX zgu^Jkg}ci4*U}7`w37XHQ6NsL-w6pF?#DkIBxuwQotX;tEAyFo3PE~hZFZg z8+Gp2Pc~vOyHab0K{M7D2^RuqU6`oTA%d4K8$=7ArfP{ZH5AfZFYe?W2xOCAX7;4A z0Uw+hvdCwtXsbxV8s9yzeZ@8g*S8c9;+=B|_Gi*2M%nHwE;3m7QQ7sMHD6k;ahP=# z<|25!2xpE8DL?}jT*jAoEWSImc&w-b=Hs~M? zVJ)F#UlY5y;u3~(8K8|+&Lj9tHiw(P039?+5muS(gdg?ryu!j06Lj|fY84kCk&`9w zazhw$w_e9#{FG#)>^t}Brf{otxb+L3o$toySHlfzTwSG?-K*-dGO_p^ZVz)2BUag{ zQj_I53@1b)aOjZHf>|~2uf&eltHcJI5DXUmOKceBFi9ZMSOZ$Wd>axwTvzw=z2^xD z1E&=ej)dD$rQ`*t5;c<^P`_JvRmdU>zi#PSmu>b!F+?XI8|omuqqG&(B%x3Q zA0Ta%!f4;Bt-~m28<0X{U;mm-dc5>K=?Tbpn1IJZo(W*h6@*(Lvj+G$ZxH3dU z7bHZLTtj7CMaouD0*`ao5NrzH(}{JJ3`TDbudD6MtU`PB=PQYcLnhgYb{m(^O#n5r zOOXQOp{Y}}b9L!DAPSO`KL>k?o7d~8QNNBGCt^FW0ay)+SFAhDM;BQe&KW zoCFWGj^#8BWs>~T+^z(upO@R3ZiihGyBu2=kQ?cN zYjEr;<>S9VhW&G%u3E?FJ#FvyM!MDJ)Q0+-N{7SSJXT(vZh94mGKpJR<%Lzm#y_9$ z%2M?Ht4b7nA!j$=F<$@S5W^R83^u?=qZD^x$rm3-%K+Ku3M1ZxApSYA5(@F`~&?dM@!2pIFQuWXKeIN z%y@Ir#URq+uNGlUsrzM0c4qHg{=t2;B-_H0fA;I3g% zo-XRkEhSb1fEw6lhXu}fqq9`Q;ijIi$1&=yBZO=O6%W9pw2w?+uNH_CkxB1@mGR>M zV?Ui(7@r(zA<=SQ;p=%*GXv+#=$iZ{5-{2q@d71cPK|POaCqtonT|Q}jY@SDSLDAW zgqyHUkKkk{vl&?6GTNQX7hUaAg5!Ndb)*V%gmi4H48qL<@9HY8uRUr*2y8zg`V@+mm_*>3L@)aX zqK9q0^!A}rZH1R4D@@NJY2kCki6IC9ea5-DF8AL&|MWxDdul{vG@GnFVQ<}f*AK)o z={F&AL4A*tOH|g+dmMwws3V#-&WS95q)bM)1Wv4unjI1_#G6gDv2;3>tTw9nR_!S} z6HM0Bp78KVxNUDJxY7qQ>GgyXsyQK5wmFdX#Wa9!2*;iq_(Ls7y4V+Io|jO`Wt>B= zRB>RX`DiD(uvaPR*){nRo_m!e>{~^by@8_yjI~WN&|E{E@Fyf<^kpV%`WPnX{F!BcbUlLwG@QELjliNr&tm zS07}sX)KmTqj@v3P?|D2-T}Fk^?UA>ygsS zx!#s>IJQ#So2d_~N+9$GyU?K2A=cVZB@{<8t+B?CqE+kGT5SAuER`u5e3ah~rr1y1 zQNr9(aO2|T%!1}q3}ZLI^V^;N!GrG?1goBr@~-rkw;(+WiF#T8VV>xJBmJ2REPi%= zGc6;7(c@lEYfq*cqjRJB_5c3_BN~Euwe{- zmw!OGeZuU!uJ-30B^N2Ljq57+_MA0}iQeZWFp~FlpSB$aP{l-sC4RcnayH8~>7Nty zk-oC?ph16nMg`QnkOOfwn?1Y-flr>io8mk&qBt*+c+$Lu$(EpxxF$&LthwmX7}M4t zOuk}4eZuLP>eG}!1ibIFDZE`dq#fKV(b12>jWVah-jD{m)vn?0)!50&DXw?CWB0Gn zkjBqH^YZp8@=s!)Oyh48|u(6A^Fm=2MmdaXK zNZ$n4DdDS@0E?_h9J=VysrvX50T&EbhQb$;b{iorIW3mJ0oma!CN;%w71Vg4CtOv$ zvFms4^qe#V?n#ZsL&n$z)cA^dKZ`h1iWOQCsFP6AJtI!kvz>zeZVCGIeCRPhOc?)5&O1pYh!zU;4ByqNP!tP@_{GF6J~Okg}y7z)KR3%-=B z9R?}zPL9HSr+6{9c}Ec#%)vTdJoy9u78u09q zFp9rBk0K)|e>O-0b-@Tz$9Fz^O~k=SJOB#YR#IaWoSsqu79n!0Na=~a91DH#g>GN@`5PVqt;&$Jx{4^df&G0vi^N>||Fdet{8p)jDxHQbfDnx%?&5XCS zFE2hDjpUnRVOWviv^eSFP7Q<8I~dE-+bG$tHU>0^*Q)P3#RZawnr$0T%LCWJbR>8Y zdMNoCpf$xiGMeqcx^$t8(M1SQIOAoNDmQpYh5Mh&4^ED34PlFtV|8Md!lHRH)fm>+ zlX#GX`xsWA0F+e968L||j>*R(>1~>p<~x;Ey@I)l?-ZXJ0D)b4_T0u?QGD4U2ha%K zi^;*{P^3)4!=alXMjVIw<`UYP`~fYy>l6p`<6ozqL5qt%iVJl?Kn->0G~mYJ^xjm# z(N{?vW3ad6n-09xsC^AhkR5zL9h4^N6Q@fZSu%+s#`Ir6J)cIbx$x})Gr{WKBe7%> zM@qmj`kAx%DHEA>H}#uCTlUCrnj5*RXM)+zxUVJV$mOg&BqFXS$<=Q8^J|&HTlHEl zl#tVg{#ybAmj+mNeX-CkgW!$N#1<+yuBKR2s?9eu`-E3-Hswo}{Fh^i{;@)%HtpKt z@y8qH5U%I+m{`t9DS&nAM(@mbdc~_F3$`LXo}LzXmou2F61@|U9chciIS!L%Uz3Qz z;WGg{zM35yl@@H7qbZYX^^(B`XPqg@X@g^EcFf{BflR`i8^sgdO;*mG@ z9Tlwi_hiyzRk8TGd5+&uZBA#(p;YXo`f`|cIUNNitHxGqJOOGckH`O!sp{V#R%3zV zK=SD%%ID3wB@`F02C;Km2nX;%@V=X2IJE(D#U}V#2piwpdM>LxT*DGAzi|QJy+^;> zRjW(+Fuw}9fK1)Ycw>8DQrVWxqS$iYo-F`}AEumwLKmX`x`5Y^PHULekB@g!FUIdMU~8i!rd;@xpHHJ2c5{N2 z_3p&dr~*vuk@3N}rq}Qm4lfa1L@-3{=Gs2p$37$)IgblD^%8&N#fhPJs3LEE8?rr3 zw)8P5g||8kP|W(d?W?QRG4BA_J`P9?r~KFCJk}LVq1MMVX+iwy#!NVZBgyNI-o!vr zaf|;KCAPLAiaoNWg$YrojKca!txnN$!G8&b;DQ6!;Xgy9uPb+s5LuYVKc7t30f?}} z?=D0d3OHHaL3aUK&OWJ;e40~0^UOK6w$<^J;RFpsS<@8}p^Z148L(HCj4ra|@xTe` zPh^J%je%&kX(bc9E&w)1m}*YwFlf-lF;Oj-+ls*loy2V7Qe{c#bPE|z(;>?DB`OuS zxJZO!CJCyaF{5_$U<&3j%xJduis={I^LB}LUsrii+~rqPxU`YwBfHOD^^TpI|Ds;> zkp_Fb}{JTeWKl;i%*au@5#Ic2dEN+vkS?Cc{z|hLe@KtFRQwAQ3TEi?u?kM7eG8m zLw4EFYf$A%oeuKN%2{V}H0@t}j3wpmSNhUIRzb6xZ0(;Zu5yQXPZYMIDg);d-2&z; z@}U7$SbKlNR!7S^+GfH-JEro&T;RE*P!Pw?6AMKJSz$KvV}1tupK&PzyJpLBE_vvn zBU_jXG$Gq+EGxpTX2FxQ?E!cm1)6$s4%Bb~zQa^xJ29CG>o{CS>YCnHlATuMh@vw+ z{dWQ*Z%3Mi63U3Tg*Ee)LyKxnc*w32=aND^f$R-4pI{<>;6z`D6>S{Et!E9a1KQ-zy=MxJ>Gc=-T!l`-8%gz{wKfc#O=mQ^;8`=oUBPIg{85UE@_&AfQ z>FM`dT5XQW_k5u~X%Q!~gFXtx#?=hVh^uZZ>}|DU-rmjGm_fHG*LA|f&z1vw;T<#K z;q=RPec?@3;v=FwPy=#3?ka?N-c|{V${LdCd2ZG&aaC?s7i6*em)0#N&_J`v28!Ju zh@SuCVdS12I(YERx`BL=NK)k7c=&Lt&O_rpk+ih;nGEp0YRtm6gyBH%Wkm?F zNm3QLa&N$mUJoF?tc2q85{|_R-YZHCkZJ>sKRvC_ zqu-+!5YaJR3D?i-`7LlVXjZ_hhrUUZWdg-UlKLD&k>H5sFGkDsi#|X^onF}L z_T&OSD!p;0UIwOH-=z?R%O1Jz+=9zxeXLTO;)aP90)416>j81&9Y4b!Y?nrog)X(Vyg

65t8qqUCpw=bF4$`pubjPs_cJXSCK0tb80VHI57nITFy<_^arSnnfyd^r z#rT)G=nXRKdbm=16>&#Zs)+m--VEOg+s0RhR*sGxx|6t?0B4g&)(sE3+> zr;dqPYbn?H=%6d_p9Xi~%fwBcI?*l?eS2{v+g9$KoikjG)#sa8(Gyu1OD_LCVTP`~ zDE0gFIeRs~dpU8#JfB$Fpl#cw(&h<~^?!dG#IdxXk5Yh;sO>Yr#|YDd_5EjJK;PsZ zv{sQxul@6Er2cX~o|t11vaixq@JE&xWSc<>6q|GTu7rrycAhwCvq)1W7kq=&T_cyJ zMC)4Kwl^X&6fonI*iT*(S1{`IBMVz_pi>XqzF>ujp3e9juM`7tAPO^annA@hCV40n zJV909B*>m#`nzuUgk7g8EgN+z$yn4w7R*+|0_=yfx<))oIKz9ppYf;q=6BIZ?K*H^ z=K3h@$U=4gMRd`Q4L+IZr!XTE*T%|CS zN`4C14sSs6I1;DFWyVI#X!MxR2&6_B&J7;Iq7OTSh>)$1GnM1x<%AA+>#X7i3CzsN zk_A97-#&d!?;rc(g(rnyUobgPK;TJb{?<=moPx*Gy*krgp~!eR+=q7{imA!)Fb-%g zJl6Zd7iBS5P4GmZ*#NV|A#C9kQp>}WbxCLUP0tWo!*rH z_8!AaPtxYRcj|E->j6)Pycra2J$h`#*oUeR&Wi=pn*|3p;-NPAeAZg{nuUv6XpJvI zT~!Zp4ZjRcby7Vg^D$QyWyE}nCa&GvnMYHxb>xp@@Y?27&2;I0sV)1x4)Omx z>6eq8#*|iXzh&Ip+U;+T{{gQTAK?>M^Hws;nd+>em12Ll-zN=Hb!m=QX`?^)(f+q0 z$um^YKJ#nRA|MJeIg$uY4?mt{kooQ$2(mCglE?ta`A4T>TvQ zInp~`+j*tzyMe#aEc=;^=khW)YyD#)!W5)a&c=Fgp?iJD$?lyf>**LVnWz^H#tbq%gCjs5Myq4a$R`zqWvZ8}2C);}}-Q)t4fral(jb;0t=zA&b5^v4WWh7p+` z?=@CVB8oB1sF=Ugruk-`f`{RL-M&aWeV8tEx-{wg8I`bCb59LjTCIJJ&j0yzP5}T* zyXlb|JWY^hJSxg*^9MgoR)q)gf*KTg|F&xn5DP#tJcApyYiRT6A&||Mwwc!1Dg*%t zgI1x=%EShPYr4Mdm4%-d(lol3m4+RXW0QKxHuaWV`^UZax4*R!D@EqXISrnx4m&#a zEz0+M@XSjOD%E{W>A+_7wKD(HY1b{y2_Fme|IT~1{TxGfwRt^iLJN%vh8pqzWEAR5 zqi*~a_omGsEV;>wq7T8Hf_k^t$5U;28a{sV>13wFXr%9@t!o{4!ypT2gRU6GolQ=| zT}TjK8nOP#AE~{hjz&>+PIG+YEn4O5yiS*tLyAl0mJctXqxDz9f)ZKJ!m;LZ+IbVm+|KNGqW2CZ8=B*sDkKFN5lIV%qcjdp4EYHNv~hQ1IZH;&5jOUir5PvpLV-vY(3nkYtI7@a4OA zH!xZnP6sK5+X6cy0DgNZ;`4*?VR^yWHkMaqVHtHXhx1yB{;TC7Qwqd^K4I zYn1Qm>?|a~VihdJ4dP}*)0dWCP*?~<(5uVKOth_xB*UOtdAwFCXDyBJiK+`dG&lK| zu`Vj|=p0-kcry5>)|$~-PtK%pcFnE^eU#}cZ@5$8CEHsXv8K-Tq8D-L%@E%_@-Dng z4A}QQ^Y_dblksE5$Sy19Dp>#WTu~bC#xW}b3tYdE!juNeaZS5ddS~fdAho|q`ZAAB?aJj z@2uN7>kIo}CLu;!>;s}<#@^A!Gl3LxPpPO2t&0i7`33hYvVerga~&0O0YX*2T`Vds zG~iO*(+tZuL8%3(kQcfnY?fi0qGRvM-;dD+Xd?X4RZ7#Q{2kqD1~=DgICs_9KhU{P z@9zW0o{;=!v~*yv4~FL;1~IN1ocXh2%cf1UVG;r0`QM9;$bCFZl=)SxlvqbmD>IA* zF}g{Mn0r>6S`iGOdUYA{V)7-&k480%@hq=vb&>Fz)p)4aK-X`;j)9#aZcTgkjKK7s z<0lpD(lvT_6*?=^8Zplkj8&dD!yjn}uiRO-npamC`X$k-u&HS=ux$dx(Ae8e^g$%LDhlA5~PqO`P@atS>K+CIX^ zOYt}1zzxgjuiUVHy$rAsmco~Om6mo3zGKEI?U4qLuSa%0BwWL-`_d6{?n<}GFbTT# zscC!Xvn}>da`~Ss8^4~3jzgq-0l#3zxD#{flP8XC91SrZqVIc)AmOlGiLJv9XV@iy zS3c5Yqv+|9;2;wPip}}_Xa3AyZ$;SxFOQ6tBGq!*_0swluU}qdU6zrr zbPD|tQna(R%Xs&0U;3FZ67*r(HuNUpk25!O5j72BzF+j$~~-B;suUxD6XNP03>zK88irnl|fv11>|wJ-vOa7gcZE4b8Yql)e_{zA_gK^-UAd4j`-S--h) z_wM7i15qp&FYh$rTj*UG9+m-H+jMirQm`V3fdONRdW<#HDp7Z?XXstH_Vj88-901w z^>X>|HNT-sOU~%5z-C3f0VX``IxV0TYoK~$ouf1rimtMGrXW==O-qL(K{6uLkL8YE72Fm28yXkYRhmNN<%SWi2+?S@Y5dV8{3S@rrw2h8ea zUJ9#es!`P{SDHd+$_;*#Q&UOjM8LVV@=gwRXuz1VcUY2h$)N`|Ux!(aDO&4j(P@GUQ^^w7u+YlnuKK)c*68}qETicLzt}v70q+Zx zNXqRLq_d9SuUgaGZOzTUv(@({>fch)?Lnc7*UZTv3U1qGMt9CGy?3E*A0a-V<9N+2 z6?bNVqUcBIpJ=y#0<=llJ!z=KK=}s{r5RAwtgWmd1Rx3&SxTkG6jgxk`8ONT;XGwo z6o&`pambZ2G^XJ3AyYfRzQw{|mdC~`p2656pva@Q=|md0b(d4@p@wpEeYnGg4q7Q% zR~Xht^LuY{xPN<4b}4@}kX1c%(u>YPXNwy0GrC~m*b*H@TU@+4@9*=Ks|>S(08W5n z-Yg&pG6;w67!u2*GuImhzv^7e8<$*SJb z-bfBcZErP}dJWItBS7uUiHwsSsmI6%F4RL{E~nZwOYT+X&VtQGSirf}q-q8Rm{Qba z>F8Q0DryBAReujC-}q`pWqtX*cO)*pyZHsW!-sd{D1()SS#4`E;1x$W~Z9hWqCS{s^ zIS$k<9i7#g-XR*dNB*Tk%!?{(Yzhw5zp$%d(sYBn`&B%>pX%|zSg(v)($ydXHPrbU3p>SI~pF>TS`>2(1n4Sw6kH5$7I zaHq;FhGMm4Y8!?43d@~tcY-o*e0+OpX=K5PF-2296~*~~d-No@T;;&_x77dHv;IBE zYo8gyb2qt^G4jX&Vm~;6ZDOo%v#cb`etFmYGYsskEG+h>M}qOUu3FVqz4u|`X4RGB zP0-Ub1iIjG2;8Y8lLpx1UE7gK{y{${eCt{MmtK_1YUmN21HqrNE#tkV$EqXl2M&xQ z(m?+&TGG~U?iHKBn@^fv=%=Bm`tE^GO$bbtUJ_nmb5(}{F6$gnv#E(dh}sF?pbZp; z51G~h>(se|hwxY+Dg11G04$+%>LiDi?N4m^vurs4&)e1gtk?gfJzJ2t*XtV>;2%1) zN;o_GR;lU(Y&UURdH*b=I~~c*`~fm{ASugU(WRF^ZEWM&rE}*8fu=gR@Cb*G8FjqZ z1vq^oZpq4;O?3!yuhK;=+vkH#!LzUd8A~gL0rCkF9yh2SJ75SH3+^4Mz_8PT?@?&; zR_P@gxKreBe#cMzv9gYn5@3p-VNZC(GNXYiBbY9_NI>~(2y3)3rv}=T@{AvtW^sBY zTi_-<#KfUP&z`lx-HPk(9$NIFKM1oc-#`)#*t|=m`B)808^mls4iSI%|8Uivf-z#i z*AP}LUrypJQ=UB#?kb9-6p>6Qlh7Ml5!aBPwG!hcR%bav@KB>qKcQ3A%Jcr=oL~&b zIJupf62YE(e>6d-agzm&8|`3tE$h$^9XfQ1`7d z7*oY%tQevhTgaRQl}XhjK-WSzL6|418xG*!rFKIZeu_~RudaaEM^<+BTq+RYyxGhE z8FFG4C=wc;QloV+5tY9pPz%#@k^zjll*+F#3VT zJfBG_*qUP(NISOcGa8hm9 z`^B#u1^%JsRC3wGbo-$&QPl$>P?U~_Qw6>^hZ*z*hdaBbfGTZCHnsXE^5YZcOiS)0uM3T?y!h(=7J1{1)Gj-^1i*~ZtO(=L!MO-k)K zD67jGA-84XIViJ2K96`-e=Y)uI-OuV-R=b;s<;IC%qM!S^x~P|P-+N!ZcxnR#?ljS z2hgrCaKi@x_IHVtEHPZy&qME2SN4Vr&0~SY_nOxI8rHNrQ+1-kRsy8{OF4<2Lf16- z`1Ch+R}X7ger&8;EqJoSP=kn}WTNJKb@%Q49ti0Z3-f}_0Tnm4$mBS2gj7LN!hZro_L3vd*y z)Z!8vo^S7V4`2FyVv}A*cGD7u7;fG&Z*nu0)!Qg0vf6_ZG`CUQH!l41%Uwk&ydeDR zQ-N^5Yt=;FDPm@>AtRYol`0l8F?aaEhLl#Mqq_|~iE~o}jI>y}_=i!E=b+{4&6_uu zSV3gQTC^s2?WC)U%SD;rbBp3u$lTg8YhC?KIwVtgE+vw`~X22X?x#ElJ_z^xAsY&R<6ym_O0n#4Y_m`l7do zv{Vk}ckSD12Woi{wfk)R)ph;QAq=gVERW=AO@Fn#LRx{P&3A)*9QY_pT3UqB&z87C zi-8E~6A*mt;;r0GLDm;OHm>j6>-LLDcTBuC4SBG<+Z2ax3fl(#N4TL{HC6!k!za^HBX3g;R$&xvS!55q-NRXwD7DixCLE5 zFFXt%lJcs!Zawd5^lUetfDF@(Ch7k9g;Pti_eM2K@6qiFr2Y#v&sx=0wvM;IP+^j; z?)tu4`!`Ce9++ihG}gY*6q_$M?Yw>UJ(C^3B;CEg)N}O6k>@~;B_IM^d_2*5&@x%F zB~gdcAA9eLFX?kdUJW=T9O~48e^j9BnDy$gid2RG;>Dju^m&KSO%wI*BNN2lVBPxr zL#$k6qcY&^H9HZ}J%tN)?rf5tU5ROFuIZ?Ewfb<_Q}5cKb7V$f@hdoBD=88fe_F80 z^Lh?xZD3?Q11|VHyD$9RdFQ5QXeio(>pWlT2a$Ys@Y8kcv%Zk6emh}PViWW%q2!q|#&m(j&#f6Q6e7!p9! z>CfAE4mq7;Rmn4PLpK-It3|gGOHqbQ7sZrA-qY5qm5n^}aqec8Cfg`ew`a4(M7Aga z!jJ`pBlRVvu9MnJN*FG)lm}CTO-4l$pu6-44`WfqDgg#dBWoD)ljoNSPO%|V<4!5Dt)#LX@+jQwWwWoT#`%||L!3kXg zh8NA0yC+P@Y_|W{q+YKrEI63|<7z2wtgY=ppTu(ZhEi$4fFAk7CeT3{hGD&Mo5F}Z z7@eF<3+@D~L@Wb1Zbv9O5EKPWZ@sZwD_7`t6d+mGR>KqfW~Chm^Fx*VUvtS{M@|H>@qh93T%-; zNF9WtM;;R}{xA5NZB8lRoiryHgS=}lesZr_i(=|IH&UuaL_HpKQ-H=ul2vY>zL4{*6vvfR%M841+o@*hL7zSBkQf6xT@5^I|hgw zFULy3!xhDK*J>+K^59G*2^vV}Yu6Pq}5Bq)A*_pWT$ts(klSW)M-XGz0p!iGYSKDvD z7&zi;Ul-NHxhH0hINd$C?P&ABNk*=B{Uqqj#6erY0|CHLKE1eD>72Tz<>RefD8nb& z8sk^`KAdseuGW^Ei{nZgh8^}Za_idNHqoU1&a~(c#g9JZZocTv5g8O-xqi1U<-a27 zuw$TKVZWl~^YaR?u6%cS<_&{rZwljV{6(dVN8`NYORr@keR~~U@&Eqm2k9E<2oD=? z+_YzR`3=jM7?oh)@XrkAGTKbmh%+>O`=MXPsY{RE_ZX}kqnGCN>a^zK@Gy@q>aPMM zPdYj_Ts{zf50k(9ywEXP|H+r<0~=4V>zFYjHnNdVNtb|I&sX!6o$A+LJ|OL+y7j=H zt&$jyZ4HjAx6^uxT}DUq(<6^x`u0^9n07y&H705Ec86}`iUScim_Go4$9i`XSSc=i zvLvlPZBLhJs=_4ygs@w=P3za6=IyAVZaWWT4{Ad4k3W|^XLHJHI-9$_hL5;4HYIHLKHnxg z({6o;-T5@VVZzazMP)y+?9HAkHQ3Jk5pB41$b(m$iW#EBC|&mLqK^VL&gKef1ux$F zN+Y4ety|ASr;Rv%sSi1Aje~l|d@c>0vsQSm`UTA!c@EjUe^GtkfZL9(_D2j|-grmz^Acj+Z^)>(Nc;dd&VHsg_%nX`la^mde=Maa<+^~;1pH5GRJNxt78P!1@(pM z+Zu^6Ni%lgfba&>!rJH=W`stltH--ME%N0dEHB&i*RkVO9{LUC@vNk=xAlJ?v(hXt z^#;c}{odJ+E{E#3xpwucEP4Y$U^R;@5B;;S&>Df4hJUID(OOLwy~4}foP(i9a8g`y zn9a$)YnPk(rDc5qE|4*f?V-T)`Jo!`6&*%)Qv@nVZ!HHbl3fd16QnN(12A+r*K15n z=s`<+b@hx}a;;PY>)W0M3#p<~@1^^nm*?O=*}!!)Re;un1DYv-2dk8&?0tCcf8j;N zb_jUrIp>AUT=?R$7F7DmH8Ngq$HSUtiT;Vkt|~K>>y%%JIM1CsLst(n`@-Q2oR+R{aQ@-r>o!i3ko&{GY* z?>flJ6#CS>+v|IR2^?fz(=6xC{{FFlhA*)5WWb91Fz1pcN(8O0i8kR(5L()Lc42-4 zT}>7<0J;IrQX+;vSu^WdsQ%Bbi>B;}&beiCGK&S5ZJBO~^ag{wZKLmdc6y`wn$YUm!M9I2FrR-m87-Bwb@ zA@~Lz=PtM~hLWd`Cx~U`0<(ymr2GA-cH)rc$mEtu_4NxU$A{-Apuor$A7lpX>sfbg zZi>>Wq`#Jy7V_vPe=cqn(M5QoWJakKsk<2PWNL^5+#e)WvgHnnIj$=2w!*TD+9N3% zal+dmidTLjTgDci34FIEeZj2L>m|&k*uUu(_g7tRcZX{t{!j5u)7Sqi!kOFBr3*L* zaw$j~b8522>~qsUpL#i(zl6#t2qf@NAE%PFh{fK0FdjBSW5@R;Rm_Z{1I=As{5EC1 zqfy7JrA6t~^V}2HoI2PAz~K#k^d{baRzj~~9GY5Ag%7>XK3y!l6WJ0< z);HThj~Uoor#f8PArDUO7EvDz=0S;P4~^b3DWvuXcV{Rg@Ik9EHFXq#PZ1g6rnWN1GG;R5oyLQ?XXv%2`$VXRHqGySk2! z7nf968`S;$$3=O$1vpyg!pT#K zF*&fzn?J<9cuEgN?=5D_%Z{wnJKiT8E>U0NF;lchU(^CJFwx-wvj*csS5VdJj zlJ<`(BMo)MC0YiGwdp;Y@KETd4#wCIL@mUyk6JWzjpLU;KZ#aG4Ip+o?|0raUOhzM zft+C1X@{I7wF8tcJqw@i2F~d0>Q3j}-fbaSD`b z@CCZ`?(GI%N))}rr*~XsXYy=KHY%9J=Y7vHJf|~czB}NAHoy5=bPo86tPGjwNtZ&4 zSmouiHCrxem%$Ew{f~2WIacP1pRUAc zE5}baBDci)NjABNPwUk;9s?A%pFOd}K{;_7$aOr5RT&S^8mRS{d43b!(mwEK$k)!0 zL(gR?x^IF+cJ z#36z>a{k~+avxO%q3JH+zXHu6UvWH$wWwW7?I>IMVxZ!lyekcPcAO^ z{`Q$hj?mb=db@t(!_#VZQ#7!hdwt&IL!;#n{-<*pdo8Ve=bV(tSIxR9n%4L2n5H$w zV1-G~vO2yjuH@=0HwduSK6WN)$(oTPPS*_1pGt4vIF1ZPXJWCpz51&lF4rdg2Dz<# zHClv5?1=8LyvzU4eeB*658`IAx1IW{2e%$rH0ICk*&v@50H{%$%|q^=>pe1TZs`y( z4|KR42Mub5gomVilgw6W-5v7|3dQB<$BprfAw_8{wx6>6-&yupvEGQ|*$hNd($m+( z7RcxN>*t?dW48jgi8F?N!EqNYIdX5nYi$RZ3gHrto68v;rUO*xvb9|}VxK=(7Dgbj zw*HO5x5scG44xMye`Ij55IY0L9&hQ=`Bi-(B{3+}9W`p>EN2y6H2TrUf~bBU zh+@dylUYV1j<EIzyJS0H*zYinzlGo`5GPtwLqz&HnK zZWu_$-n18`Rs%7IMC7@Dt}^!O)gAlxZMtKg$_W&8Bs_U%xO?KKFfWpTQy(2WBhmc| z`+ihhY9NaJkmqs@AoTTFJ>`DZS|ClipCDf0D^+jb${uq#pTkhwLICP_!k?WKATqN< zX3A^<63rJWw8gdVEkgBywOeSmBVeP=17o6RpNn{xUsAD(gC&q6V9W1(W1-_waT+wo!aBh=J@-DC;QdX0KG4OW#M&}@y z-^Mj?w@b(;MTw&dh~*#V!Qzd?{8LFihWDZw^jrR9f3d8o)qMROb8oWFsA}*e^&N{6 zlffd_gPRh-DRacRh!(0+qt88Iq5y~91n`5pL}QKB;IGX8P?x7jN|4oCFrLLQh#77_ zGJB6EHCZR;(<^H553=|4!pnp^38g58OIoX@+L52?d<|jxt)sn<3D=H90*3VlL|o9% zlma|9nqgwfO_gydn;-;=Cn3^H&OwBL8lewLD@YWz_q6ex)uTxX77=?nv27ea>rpi^ zn3c#O;uZ40_oFMFFk)>H_HvH;H!i?{MOoA+GOwq5+mGmdw$tdc-`aO>Wnke}Lso6& z!{mUYH#wMTXqVA-#ifUXe=q#}aFS@Y*TrP5rJa(^p!`yq;fe88uti-I2*PV7!m%=^Dm<=cf0dVsk8rGxZp}l(ORqb`mk~e?GVktFFC_Gb&`^ zr_(a#BI3+FxZTF=vjuvU?v@Hlc0uBvvFO)X7_h=Yl~w56Uu&xTWxT)!2~2S;N)TkW zbXv-a9Aao+wg@pfv|=&ngHFt>Ml$Z;TJ;YVP5g)F;ljp!fSc945&{`$>o2QU55|X* zFPE^-19b}1ShYbmZ)-8P=rJS68S?Y}(+1t=MWV56CPiW3cB40|N6ZLI%-ga_zo~iV zN%E_P$IzwqcizIT^9JcXbC6fGP5qtLla)IK1gdG^nsw?FmHX59a3n4r6xgB$JU4!f z(NoGKr^1GKLjb>Aw;KxJ%EPSS{3Lf>*r)&KQ;yo< zXA6CT{n289Sq>c7ohxAS;!}RPgPc|TfVo8T>y|Ro!Gcf7bVMc*hIjk<|D){8<8ofx zwSQ-9B}0hJ+++w*Sf5G?03~ zXJrk~v-W=9cmJ_Jdq0orzJI^#I)~#p&f_#Z`$T{cQ@4^7%AwW<7pHXMh4%KnNTAVv z;XrqPy`hEUEcMj2qwb~+WNB|Vj%6zYgJ<^Af5}69|9*PLH%zvEsa^XRce?oF%4pju zr6P|0P{c)}37TKvTTYdUr!djT7Apf*-l^4hoHXgg!{8|B6tt}a>B1Sc+8*jl6)3&| zoNaO4<1NXnKjJT&m?uLDpkUPv?G>#);QG%4SN(~F%I;6&l}S}Zzw=xP_6U{6Tn0;SGZaD9TOy? z9XS40H#fKEaVOZ`(-l&Y?J!p-j_YTd@p(z@4tCweV+9d={e*qwS`Zp%SlnO|S#xL*~eG?hL8@WO0h< zzX?hJY~2?>txuFPUt44i(?815>DDkw{ms6mac(xhl&ypTxBJ4RS=IOOC+QXP7qVlP zpRS#ZzGqRv#D-9mj~D&Q&jzAI;SzN{3f8v`5g+eNQl{W?>@SotmB$f>{rw-GvG&X@ zDCg^1h>Z!8$mgc>ubvNQd6tD^ZdD9x#s7^rS@|@uH~r+Sn+JC6uyPD<*T4UZ;N&eN zBp9K_vDc#^7Ubo@#KkQ6KF-fz{>H3;&cx1(=2s^tq%SI8*GMEJJq| zp4ARm^9FcUU_@^-zYfO_cEEwmw-Si#KoQ&r={#(q8x!rFjVVeVg;I#62N4#clbw{B-26tU4owN|Y;Bb4$TFBmDkTkQj!=J4V6|}0 z@>{(Xd5kPJ6SoTfAh26Hm6ZK!yY?cjLEw<_?U-!asoUdMe8`wXC{Rx-*@vd&?R*ip(k7? zTSjEF=8D5AyZ7AgW^7{j-pShL^Xrl1mJJUVh>0LWK%d#$quANlFRk$ee~=Dhf+U#D z?Q_YO_m~*sQO{#M;ckeBYZi>Ah?ZIJaA}qBqENG7MMru5;HX!2Ux51*Pv{C-i)!hN z-eUCRE278Ms%o)o!JiG_L#W=h2NSS>QSnDCe?8AppdDEMMq3=P-qj zQR4fp|6`$g?IuTWgprXYgdzhZJFZ;0qF?)=`Od%6RNjI^@3fkW1snvNEV_iJ_@!pe zs%mSK9Pt>ET9}?Tl&b7i4;cdEmVpt7A4lu@MX6~e!;n7X0DlMukK*)YaE$G;reQl9 z%uXgs96Z=kY%+$oSRfJ|L$C^`dJf7Z3oCSC}O5w#KdBF<={sveSG3ggNN_*zO*>ReT3aC zp?|&|v3y?QkPsJ#d!8WJGLZwiFNrp=kA_CU!9N?YUJEU{y*j;2{)8YOfu);H1idw% z8}AfdKa+rIXgFib&pzAZ<2Jw|Tt!}NdI(qq*{4)y9+b}r&0WS$eHc~7xc#&DTfWdq zo&AZJ^o$K2W_YciwAp`#Qt8nB30}sf^(JTj^L_)9&zRx+u~$P48(jN;{;B^f8bG~_ zNTjTzKlRt2f`t+g;o9begT1zWI}oPxUu+OfR_K)7y={+{;Rp-Wl7|{54(c~N$OD#C zI`gtKaJXdhOH!`%i|88Q@!w+4z%qy}de0Y}r{p(o_1dRZ%=AQKRslS~`n|-(9fyR@5d;^&awT$ynJ9)iWh{O7RLnuC_ zI3vr?z$qR0f?GCJ@XYJi6~6WSsL0L^ev}pb-~DIk6z=o#6^)e2C1d{TJ)xynViAo5zi}oPS)c_`PvD?5KlMUq ziYH4_lL8oTL+Q7W(imJ3KvkbSANi@)KTowKPh`|6+y8zd$Ae-IgLyM|lLUbUh$6o9 z@#na<>qyph>9%B|hDu{gjw7Pdiui}nBC&p183EMEGV0AJQ^gr=MZs*WLZB^<;)g{h zz_enMr>DI3;&+pyGsx&7Z%z%%bIi?%<9CU}r?|-yr;XN>Oln5k!}byy)WJkF45Mc9 zZWP5dS~MUHot&J6DixgqXEk$KDl#f@`lb2BW3h_!KR}ImpQ=V`UQ9&GZ$kS)emVH~ zGfmVrrd-w|B@w&Gs6(IHUrPkkCEW69MY(~TVT<+iF=l0mB7<4N=8A~vlfBPMCMbYs zyVx~{azw{_gCFGc@w1YKMQ=^fo=E2>$`{;*vhW(KCS!qbE=K?8jIlzHf>Vh%f=VI0ny?q30J1oQe!jKAQnH%U_tZ2X z{W;83YOfu1#XEd@h^_bgE=pzaupcHj4Zk0DchCDPmH_dMAG&e4b2G(*K#MvtLS2 z1u>Sv)La&{0mHUsW3~Lr-i}dkBg&x;wj_K;{lXwDq*@ix&ApUoLm5U-q3#)HyuiLz z{z^ZzYcF5Dilxs7ao2_{>c8fjV(XAL!&i#_@;$PMgbmtnrUoD^*J6u}VdK&p|@MEAM+W4IgAyS_8#-pwh- z-{5stmXKh)LR3YS)Q0InLT}MagHPU^6Dd!7Z}-4wtzAu4HoowDMp8Wuo5|874~QNa zr~kdAy)vWLUl=He@Q-IXZi>*gCN`zcF*(JYWf3hCnt}M{cS^XMH#BAO*(YJd zEh&)|z%JUfuDg%TyMCV^L94_YH9~Z~c|Hh#EW;QGAKhAQKb&L0xHT28meaALN6%mr zYZb2TGDV15F#J+F=M_V``Wy>RoGoZ}f@y3XJ@VbRNew&$9`sGZUuAs87jA1*VMYzn zlS-MF{b=dImF#as=L&^XYVoo&|etScOD))rh!>wWUXJo^&v${pxW6j?)A zh_NM#?HBVOsCGq8-`ap#!LH27`4bC8x)gsp_hZbz)Es~0HPEo>|5vi6b{WvqAY$L| zZ{Y6eHD6|Bxl!gKC@24kWe0$E_wEmtln}9TB*ja%6JvGV{J^ptU0kzpvd|mf^^5)8 zE3&IHjuB%ixuVvrF5jRRqIV?xaF(ZQ*2Rwxs`Wy@K#&)n9GoX5I2eF3&D5SnFd--* zvIn0m@A+SLHC$d_j_!JX4L^F{^>8SIypKXtSAtgo~ zxcHx;>P~XaZ6Dhnksl;-URWIrbr)ImW?zN2_R^&bgj@j*aIiY_eDy^r#$zs7vO$%> zS_KW=9`V@sF<*5fz5H;4J*=J8sdSRP-+=?vBFCPuMjvpPqYagHQ;7BXM4u1rM}AP} z2GU!Q@;uyuIM_#yXL6-+>O#wVIiw!Y^u%wze(oTfAYmBlBY z$Fj4J1>h(m9+66bATSyrf}wIjMAcjz-HE@M52M4a8hVo zTvrD3k7WZkuaUJ1r}?B{6tTdH^2z|9MbktZwl;5HS`OyDm2$u?>VSBGWN)GtA5dB} zF5t4$oPR+N{?0>LbTlzdzYD??&cJ^WH|2vLVN@SONkOZjN2U3cooS#S?w+2lTeVVg zhDF#{E>&XuG*si*p*X^NJKzPcv$3DqYy|5 z9HszyijVNbUi&bqO;pkC!&*m!9!tl|7ei!GxmPVO0rGk6;A0&xd|&`gR*6dkaxcI$ zwA1iblPK-!GjWrGmbrq_?DZQrI!re69$CiYMy{IvPnD-1C!tTcj_tB?Tuj=$Z-Kiv z5Gy|nQ_Ho*B@s>Oj2jr}xR2Zu_U!eC?W2eMhrTUv%AB+oLk*v;`zI{Wy!jd=bHm=w*uMra zUkEhrHzVFx5Up*V4|Gn&-aE8U$}Gu*$07;_Xbk_C?pqLYjV#;1oEf;*-#M()LTP$c zltTqJ(x_I59?M(Z{1<=xLlIHNsrV-Qmpatb(9r8LcmL#Dy*l{{r~9qv`7%vtkpJra zjY@wQ??eXfzI(^d{`h9p01x-D%98$+ZI4#yD}Vc|C;sCbU!`|o1-MwAC;xx`A=rKg z1D(?>pCCJ|Oehj5DlDZ)a)J&94W`s5mQ=P5G4;3~9T?DFcu%+F{r@+>z@=Ot2e02!^JC+*4(RQtH1U(DY%rpBRP96a62cn%GXdK2x1#*+^CepDGs$}+c!TEde+>?T5%-mLgbT+CpcAHwSTlp*Mc8G9nZPBdl2p9d@K#| zXl_OKtDvXh;!{bc(`$AedhpevGM4J*ol*n~?pwBG(!4>niO3V`u{Yr9!JMWaq76(Y z(b-u0^~4l|RG<+4i$^r^U9np7tpuJ*P>X%HRwTSoW_Xkj{+M)H^FpaCi)Dt_uE~|{ zwsH8JWegxOAiD)rpLl&u8Q z-eX|_KM0x!o=XxiAa(4etuzD&3im1#K-*X~S z+WPie{b=`6O2pzn#yM3|i^=mpwB_M~9_zp2iM(0Rkf$I~Q!gxPq~Hd(MzaT>Ds~m% zqAz6%$3XQ&kH@T#?7;) z#~5b6mN8nCzS*vBUEXD_eUdQe?5xl!?&yN~tRzF!BEuE9QeKm6Pk&BxKo_Ak%XVs% z!EeCk+?yw?tl_>ONw}x_@cY;I!@0gQGL@f)PRKpLWDp={sS zukR`+I)|+nvdGE8WJ{K(7n70eSDs@`uOj;|kM93Si%Lt&G9=ObWqyt$I7R$9rc>+J zNM=0san=i<8)1qd)Ih18ToNu68fbN9N%-Lt^-Yh^XlpRLL` z_?*BbPa=v4154I2zk>T@XN2}K)T_L5t7)(*kI&7oN7BD=DRvcwhi@M{53a}^#uH=& zhp5&xIIsK-*ucEmpvF^xR~WJC1Ue6y?bCWsky#G@RfB}`WOq4-Mc!yoqh9|xpEquv^tiPJ)U0RPP|GM(MT?9Ha z%dzi{S+;#jWl*Maad+P|AB_;cGtZj)p;UUhdy=tzt(Q1_(9CWw0z{qrEc5NFS5^&8 ze6-7a=edZKfl(@IuIjodlRHj2*>%@>EPlublNRkK#u^RC=Q_x;t#A&$=A<^aO&a}J z%53(qWlKV*7+pT=h>l2m>;RjLjk$fZpl8LWKK|VF=yf7Jr{;xtzPK8-w->=Imzt>I z^pBkM(^EQu{Al3IFTP2ZW&;Y6`v1D`R@lO(GB8KGZFTkuX58ner%02O6WPh4IetGf z_pu@gm=J!kc_8lY zDA#@)Y?{%@`)(Wcq3_Q=n(KUd1V8b6WA6o{TTcWDhe`>cta1P?NEF#+ws$ z58q80)5h2{)NXx@?dbv4mb$#5+=8`UhU7N&hwJ6AsKj?p9A_&Q=4rq9vE~wfDMXZH zu3R!8F#V<`|K|XUwME*5{N$u06okG6EyNO^h4#=!M@)&XBBd%tz&1?FS z`bDPAP-bYJ_(P(@1p8WdP{6bu=Qo<>8rn**T3}~=Cx^GhXi}++I)KM&b(^zUuj%TM z=|#j>fIEL$!de41Z0F*?Nb`?&_&9I1I3N78j}55hZE^Qm_NtBlWU~H3m8h1>ir|JT zf!_<^0p~Q_i#|#03kXzLGenH)$Ncqm&?eT@Yl_Bt03%f`)&=f9R2sl8O=L}tdoJ0G zju;TKN7TW}TVrk8s|Nfv3@MwWoJD!Hw%8u}n6hGBZr_(f`B#ri{I3>vmP;Mrk|hp{ z=pdMamFZPk^`~xYzN<@Z6&9}TC9aQWjL~n^yAHY*QR+LJ`jryNQAYO@ivO>tz)?%> z#<&tFxu|ey3~?ard-9O~|Ar})XCVC{_HB$!0f^aKb*4sgKLZ22Cq+PO8`S^8jN?3)k9 zLB5xM^c^nb;mwi%z|S@G^lGM>k4X0l+p&G?kLj%Z9_d(y#P=~3ZpA778M`>7O_0almKO8fnG()fl^gw;+*m5 zB=1db^&a;uHIB|oUq}p7tXDGTo+_o#_-Ym%uR%xk>c{a;X-=j6qKh-T?CHN|)t&{t zndbs{(lk$??(7Yyt02AMQF$RIWkQ2K`JSs8)7JSg<>ZpGX@QI8$AkoVb7ZZ~91#{@ zE7KFxH$sW(bTnYhss*47oS`cx$`(nU9C@5ERC~2EIKbqU&B{RzDHa63OKZ2ZHr4R! z!e|%xYWU6bCX?)6P)?wPRB_3gW6NT7Hap3)v4n;f<$|1qTXSM9L&r0Wzu?iyk+6XC zFk2BpyiEz^C3kLRLgu8`4Y#b-?e@^v6pySAAL<6}jI+FphWyK&*dw(y=0d>LqNScn2G)P6op zlrw8aZV<5!FgrENa3m3Lu`;LTRZvvwBjH)Uem&-nuUU$rzspAEUvSkVhKlh8|7u0q z(rQt7LScqZF97XQRaI@-vZXV=`a2^^U^`?FGZY%wV$c2;;bxeN;zGCU+c$N}3T7Hm zOUblFyse-~%t@YzwH`EUCLquv`p#Jf0~i&1_37RVPb$rN0A?JQx0sy*;+;-?BP~jm zs#Vib^YEr*U=)Ir!R_BkF#0f`%WZA57j&Q?-Yd(ANAJWmo3P%aaA68#o%|Xe0Wn_zMeNU=1^UC`cBFXk4ZRl~=y{1T8X(-; zy0INfP%Jb^wRpaTcbk-yRM?lI2TZmO6XI*vMm>+D^pTNspyy{c;nqd|6DCc1^t_>C z!zEw;@F>1F(QX-&L1M^zD5?9aXyS|ETHXC=GY-UAUX6{dT)Xx*%hJwDrKzZ+sT+I0 zk6aL+SM+>i77c<7p2&Bg;pyw!rDI1=_TW&)yjdoWw;Zq=j7-vE97Wm_eE1_j&^|&hT3NrI2 z6)9z0m8Nc8xo*Q|9-y`%nu-^h-BhMQn_X`B??j*GiG?hHk2mwD@o9~3CBkXZ3p4+* zIb|nPD0`jwpoT+-s#G1a7Bj1Elwb;Z^myHwo!rVtSxOtr{0Su+)Jp^c`)!6q^ zcMXk;N6MS!`hE=~_T?0#9_(H+H_s=!I3TtN_tQay4kNQkFdSk-l3PG=uw~YRpA)$A zaax>>%WNC0$UszI6;XDBe8`kYrH_0ngVQk6Fc)y-g4A24I}oTxj2-)if~`um zYM*5syY%eJv{_^JJ2kno&DleBGzKN*wDS*}e$}PPvqwhfAGsVhy*kKq@%bgE z>Lr*i)QofSr{X+i`P|O`UWUKF^E_)+<(W?fwbPpZ^1G^ z+j&hDiQBwgQjUG7J=n&^rcM3bPmm_Ds8q}^)W5cmybN2+FJ=453k^F4vniEa!d#fmwU$5r)@*ixmd7PhO zRL?K<=~ErYbdyJC4O+LZJZ;*vxUq6>%h+G-*;HouB8a6U*$)pXINcd^unCv5>{YaXw|P@GpV3gj|-aSbEZu6LHHjZ-bK+8_pIRH;5!c=x=;x9`rtUI>V{yd z$CuzJ^^f7erb6YfcD}xPvgs|hQ8z(6+E`33=-p<`nd8b~)46QEDm}-bO&desw$atT zf&Zcmsp*pS?)B?0@i`&g?Z=u$CPrBBre%M0U{ZTqd7k`D`;#v&tqi&6keOnT!k-Tg z*8T0b-)3Sf3QejAiTSvG(4zF5$d@Bp(289n_9>3nO0E$+?n#S{fW8M$o!Y{_D$o1$ zr&~CEv*p2Xy#0PR>jD6rGty_nIE&?sN;#Jk*rMC9a$d5TB zXQorTx(uj%UGt+u^QKKZjZI|%s8&;*_YT2}N}zHiWm05UR&ZoQEShmatz%Qaq{la<{)h;9!AJIKLx@z_69g7DRGCQfW|6&-;%{2Bu z$AktfvyVd4Y4a4BgHe6Iq?BXt%C1OPJ-rE2^4VG$gEAr=HXU(H$IR2tCETIN1TU!{P^Sz7 zr;2-DP1oiWORkaa<>N^3bnezAP)uNw+Kz<98cMPDNsD9?(7J zbAqKIjESQLm^E+S@jH26%yQ3KL?%XB!1(DQM&Ra5B=xK(ecLZipgd{6|6-eThpSfB z={b)4x{Pz%aZM`=WS{-AC>JxjGXg5BX=Q8{hXd{YU`OuEhqUU_r8ZYXEuo?5`FYq3 zbcW6vS@E8JFX&&8lQR&hKCE~y0}VoDfU7j6joeIO!nd68&Ull1_r|fjP-Tz!S*aEs z7u%aR{_L0W?c2BG6OYxRwrgE0Ggv2b?3ghwXm&=A86%znWFTYTPh`GjHa6=H9csl+ zJeE5juH#oZWWCv*(XKmp)^}M2=m>)S+lbiUgbs>y?tLA!rly!Y{t=rDO?fTQf%yygcf& zda~#D!xPfKcKE*G_u{=-%s|MC#&Y9eNXRy(MYu=R(2LbW;{9I z*Zmev+`Nv{x;j1UJBZpEqDnNE*>vry?p%+IIBHru|+MUA{@(mVo3VRvuCpA@$to_2g06VE^-Ik z@ZGz2AEb^g#NX#yc7s~Ura%4|dEYVbR!`Zmu_xr>nHG{TyM?Z~---GDVYpCG&R1*J zteNb!qSuW>Mo~vYqm^HmsFBQK;8i5>kSrF&k#8Ol8!t%$@71)l7TmVX@3Y|?GbCK|od*V)O| zk>#m#y?7=)_~5J<+ORd@-^l;J+#IvaEy#a(}7OM zPv^(n(|Z&58oxT79pd8V7JKW~n0NZ_iO)&#!YBkLjUQDUEap{p$c8&2)W12YCy!c+ zJqj|r;o&EzH%qple|VvpdeI}Bx?R>~($%{2#-a+cF|U$>fZBNoQ9qZ+t<=~5d^u&1 zp@~;lgLX=#vDKo<7MIq1|CNu`Mqc9*09)qmc0aH_uHC%eI?7t%7x~(yUD#56+1^M9 z5-uiBiCgWz{31q1T8$db0)<{+`$qt*1lPAN*(#0?b2D#>QmL)w2R9w4ci}_`sMcXn zJARwVN9tBL21!PmxlYT_%k@T7^%CsQhlg*R_vH)S(#8kYyiE=7eJEQF@-GX?0baho zo$PuW{Q!rRt`;{N56gl3z_jjG@Y&iq5!rbP&qEUd>4J3RxZ!W`z`3|j8EA#_b{jiu-Z#T=f* z)!~c5w#}OjX$S?J*u8hJKhM)LxrA+7mPli|_U!4#UZ9w+OVDyTvkHZDAZt;3_36{# zmt-f}I`tO)XGDtM#*}H(l%ys|-i_za_xSSltBfJCcBh83rG4<>!=gd6aWFG8%Z)m- zChzUt*6hn-n@zRT7cLB&H*a2}$mO3>2pwH<0OWd2f46GU_C!jjyNvizJ&Z6@^D?Hr zh#_3ONV;IZxusG$=34%k%P7IFvggHW*p0qUB?e>|Jw)JvqgpAqtN)qeJm2w)_Iz2s zHjUD=rD`SCe5^-a+qB=R`UFS&&#!;s)(A}0iA+JKKVtOgjifjct@5FPqz}<@DV!x~ zuxb>9L45uQ+ShU-sa>apEo+5T3S6UF$BrEhR_Cjegs8|h7k1F{tFhjh{c&K(EgKt%t{|oR=!#-Rs!sFzTJLy9a^g@#;TpbdTN6>cRnA>Y2UoTjI@|8$tP|S)>*( z&VF&ZNuNG_2%=sQ^_BhwTgyYE)um|Q8NRoEbaHyy$pZ_V?SfXA=~AgYRzD@N~z{v$;Y#5AKw*W5*iI?5X6uYw?Y# zgcxp+VrM5xz@;!Gg2V{Sb8%_fq#u^Y1BrT9pFEjLL~6WkQ{wqWPwIj~66}-(I#X4{?u!8-&Q!X+M2}7iI2sZq$n>QrG#*R_P`(vsEJXY0$gdnUEg;>D*ILtwRxZEENw zkmwFYyv7O>H5L=pb;+W87`|jl@V&B&2TwQ)JYR||@)FhV^q`ax3xJbikju8>lx#^b zd^jiBuV%e^_1FzZ3_ZS`O&M`K%a?4g=c$b(a%pHx2)8G$0HzW9K8->5qOPv4^XyYs zIYWP@&$zynUA-dhhqn6UfJ{xd|C`KA7i`BG@e3@sEmcgpxTG0NHaovazH#F!y@(f1 zE0T>d-_AG(y(Eu@$!5HPCq90|*Pzils&7z=@**xFGrhNB_ntki`u8{YZ2`wu-! z49VKjfbpuQPoKuQW>H&jVC6H6!)9piYKqfqzRT_e_S9-9PP6qQAl*Tz-G(6f^6YPX{)FbCeo%)>SXHH6Bki`)Z)BJdpw))Y^Y;Dw*1EdEBkW6Z(uWYSGa%XU z?~CR4D=PR zZ(dqdKmJDbfqDi#fBiL{->0G=_%@8SHT`}R@I&_3GxDsVsaX}V{Ih7M=#%C#%X`ee z{<~#Cs}4b`32p6ix%^gCF7r@AHEq@`)V{-seW!kE0dg&cUz5R6oF+hD+uCh1Q9%wa z2JAqHL(rwjpQkHA_cyAu>%1(z^%RsEsXf11vc`^WGb7AgXXCK8l_FibrU~H{_m^g4 z4)2RIL^$&zobBGX&k6$$$$+O$b%txKt{56)`_i;ae}Gc0#*O{C*@(qd6gZAudH%c^ z&FC;D@ua6_;1&qv(_dYNXv-Cmrot|(LGMeNrEx)B8_+9_OQ*tq01omjbU2)@@r{c? zBO0(jBjX2;>=1vaYqxGgNFHKgA|DIXSS{Uw@5=L`-BhJhB>Q^AhILHs*>mX&Lx53f zPMDq&H->;Ud)kQWE%G{Ioz6y&<%^7a65XdnIrb*wy7I^T(dFDpNpWkb8ksvOV;>6& zI(6*rwjsh!2S^N%= ztB$Hz9Y)&i(xtw58P(v6hlPh9f~kYsRhJ~pJxE8Y9k#k)$({!T4NZ2Bf3&4b6FO7> zGp$W8O`G8AGRnwETIL7VJ4fIsM@BoMyWzo2w$*fnc#t}QklJ@MYq172yuNJ{9HJ{{ z7VuBU+QIP19GyhLizduJy=G!CN9hJU(skYn@aj&8KXw#EXdI4KoO_mFO?H8#r?;Ua)sqgyHz*?r?d0JU47qTCQl>l18t* z#MDZC*b^_FMJ{0_y<=^4IK6hXe9nA~%RHsn2M_8uXwZPb!~X`F83Y@9M0X3lgS)%V zI&uikN~Ywev9wOS5n|?{bwd*DsEtj!eMy02}Gv1lV;x{5-08jTCPgl#==MGi$`11=) zRo6Qs&;hiREjZB2J`vr?h)QKp6|@?7<49Qn5mN&=Z?gRdLXp73K_-Fg$Mr9&!hNXM zC2o=*qx|w9@ekA@Dl;Sbrb+A?r9b8Lj(B*l`XLTRhDSQ|TD1Dc(4j*Q0dmky?|l$Z zC$Kx`w$?*)qlkzIwG=VdhZ4f}u;2nTSy! zBM(e!sgps_FJ!{t+WVCgZ*-E2Ls7C@ZEOz5j9O;=QZSkSU-*$37~3TNc;-W zJv>;e`@A~R^l^Phni**jv)sUuu$*6pkD+uSJrc_CH0txdqjq&#*HU%Lnc188)}p6) z`yj9$C3~GljXK!%*4!0Y(0ld%dS3dPKZ;%4-H-QLly(GD<vGuUv!=0CIWCp7Z4*-Otll32ipBf4%nUbHcm^q^WewEFJf-`ikDBdKHo zaUZ|;b>De!r+g{@^?a!WR_9Ovdq=42RHsi^-%?e)JNcYmjsHAPQI{aWkmywbs@O2P zZ7d4I(2;8aAL8~0FS$>P2T+6y*Q znbT7=rOcKuA^+2O2`D?B%R3)fkMF$?Cjo}8b?CQ_%=xp6wSJHAUO-Urm&yb!*{?{k z$qvO0WijpDzNo1FBHSR@S<*I6VG8uNU%!qwzJKR+C5TXo@xa(;&wM|q<`Ex+*ICfPb}F0F%lLA`Gh z3ViTp!BGtHwM;fjy6!lFh-n+a_G1r;cl6&=iS zlynI^%EZ}b*me&?-S%RBGosm0>Sv<-q_#co?mGpDgbXZzFB{ld@D{JOmfw#)qutAa zG9B1<$1H9?6#n*zHuuIOm=#-=vIi6M*V)+qoe5fynh9;+FQ8VOt^cI&DWK32=a#Cf z>gt_#?0tKSDDOe(#PRTYnjr~X9#>qGasW9ObBs}DYNmCeb%sxxw5#m*|4B?}D|>Ty zQChS&c=O@IW~!SQI(E=m!S$Ks>k?_7TS;{1(vCS)ui1Dbxn>qGfegI9|hr_@^2rVYJyNy<~u;DnfOj|7EW*Kp&9N8idCjm%sO(_h z9K7YF-FO7O9axrIbA8L12qwbVLBabbe<|A6N-g8r3cu1aAfOtoeyQNYlgfkY2-1d> zzX?EEJSi718;gutshIi5r-yW^i;l#N6^!T3pBL*_DNMLMl@)phB36~L$wnBLy55`G43XX=kZ)2BC~ zfc1{3AM~2>GM9?p=jYcQ9kjwbySLZ32@U)x<)=qRqjTm^fETx-Lq!-C3sV=m;GvF5 zpm9}Bo1%Vf9@uXO^{cwkECp(UAsb2uS6&8ZoPVx|BvBD?=}kB*Af*mN%Yrj>b=VdP zoL{Igau~y}WZ%pWkwP;CGXLsG%}hefn{iRGC0*i`6FGBSo?PA+FQTqr$V@NdDX56h zj0=KVO{c&sA|rRth~8`aOG+`#&tFU-BjPSHH`!QKAtnX}_BjKo=#Dq7$NAs56BH7zR3dB1@*I_cO*7Vf zd=}17jOb|0+ZdE`3>A?dpCe>TQKs&4%i_CNRTMLD%=hFDOqQ3qE!i+JH&3XHnk#(qpP} zI3PM-k@|HOGHJQ{@!@{@`o>Kgmmu&Sh`)`qe|i!85m7*FiI`PY0cYhq0pwVg4Hd!c zR!4khqIz9~vrxDyoQBlLk7Z>Kz_%Mo9A%5?$JTanpQiKu%M#lJ>&0mxLT;#ZDPi0_ zMvNQ@6M2XXFroLKg=k$b-!nPS;^V7{UYW*F<|7D*12Vn{Y|lM_Lx#(0&;rfJ5ZXPo z-L{G=WY9YR&1{gWzHG&ccp`*C!Ks$o_~y-<l$z6y`Ngyf`~|98Uf9_}e-Q z*_b^Lp5V~2V{X7Cp_9X5DSM4WQ2`JM-gTTQVL%y~f90X^6gQ=ZBhw@OaOBoApd#T_ zaq#fr$^>FXNNgUA-_@9yN`y?4@}#8$G^zDJefcvfNyi|al8ZCH5prk38=qkl172X-*3hFrF4gI zvSc{_x`7ta{UK7Mu1!?=NhA8Yzb*`KH3z zP8oSW=15@nbVw)>5d|jw{s2V_dz5QK#|SIk${D3)H?Zp}Ae*vFgy9B-IN*p;4!F+x zb?a1^*IUQZ)!K@eZ{AcxH9=nU?B|aK&PGgboFrJlU`aXfGZfsuU5mZRDB?^*?Oa`4 zr~yKwC>*G31d$z>neEWLZr$~03`D8pUAa6K{LJSaZe)GtGZJ{=Z@9thE?oFk_&b6T z+Q40-%qTelqXvebymV4_3E@P1h0yoH!A!^|B!4ef6>)YW@8>%>wl&^*ptiJtdml$x z&z^md%WCY?DiE!sByP5F%bE#6`3OM3x-BR-Tw1CE3tod}p8$yo9$Q1vwLA_I_k{1K zm?A$Q=gFdI5Y&K?0C~11CnnWIVJ7$_XTSQyi4##td!##X?)5Oo6-ffJ5kQ45#vNnx zGI)r!@iI97_Y=oS@|rO+)|PkUl0ed}%sXMLTfmHW#tp<#-+NvWf&Gkbpekt}(qPw( z2=w2wu_)^6XP(xlb8DI(*tGLi)&}md7yIVnjE0d)L79xvQMZ8oLzg83z%ryK_N$Ea zisvn7llKEYUki-gwWTUr%veNGB6^_6oRyjA&Fi3Asf+-zVHFj*n$9VglQNx@{UH?v ztizDU<|$N;ig+Z|sWRxp9`ibU%Q1cijldiv{{Q2MhF@e0xr{$#)E1gf?eZNvJ3GPn z3DhEXA zhSEIpfaugYQ@c^$qpTKDq%0)1FZ!%aQD2=Fj}+wTG+u-_fHQm-sBK|Q6$63BX)176APP~F%Lh;-KvjlIIf}CHRuL3y%k_~74c?L=<%VXZ z#o;&s)dH^6h_PCAzjN$lAuB`l4JQkYju_)!~+$+hFoSD`23gmDYXd|6hB)19eW`FXuEdl zC<(|io77f&sDXBbp zC>}`_gg6r(ZZx|fUoI4%E{l;P(pqD!S%XLs%W3d@a8$kG>An>P3!+F87g!gUM1(qA zIGIf)CNb)Eg_4N>90lM8!6%+R^`{@;jBLDoxu0A^lnf#*;U5#*s*Ue%5RFEOcJAf7 zcOIZ)VqY$hC<+D>*DMz^aw?b#r8sd6{`SO|bO-be&~xo1Nsp~~)MYKp($u_S`dVqB z00&hL&a($guwxTs-xVhd3;7Yxn#tDsjVSD{ednu9R81Z-c<{CP2px_yEh@MKEKKgI zRifkp%Z)2ibIam3k5^4z`QdS^u}$=6kMPQYuV{v5n`_aq#dOZcl<1%wd6gMI5HAY5 zq3DVgw}^42XUEd3{q5GZWi=q$J5;vSdD)vTBG(P=c^TfE-a?$MLL08Wx=@_rVo-cg zhf2nyH1~WkMeA>EI7#ydZQa}Fmk0wRK2}J=ILg)Fp>mgxQ=F!|Mz&}3if|;PJXcZL4n_sxxiz-$g2RrVC6f*gi z<4AyDYI{dn=&6um9a%8>iC?|I11rPdI1ublFHF&et4sxTS6ty$*HIrC88@s9Sj zBEMa2tE)RUk|AhAo9p(b=|yCtYu_p8PM8)j~-P^}2m`KhiSv9$>?y_@0+*@t*lO+hBS{2;vuHlQ|2H3pcKzy8|b z(W6HM4l1D-gg}Spjzp_VsUlz^Bz7+J`vclseoFM37)DnD6&7r0K}zrzxX4NbjD36d zq?61AKM*{b>7PyaxyCifVWBIlQ3S}uwDaU4v9;kmXgR}Hei8^y;-1hcW)Z&)!em@B z5y%@1ZlfzFatxTWVccgut%Z1fL;i^O2qS9kjjd)G^sm<;p`tKfBqcWDPJz#tW)gQK zFO?mJihjA*BAT4bqwLw?WFpyJQKx?WD#M2lhu+4xvIY!FfLd}leSO)9M%i@*`~d$w z<3_S4O=>W;Ax|}HCFAvgCzb+MJBFtT@EcJ6p8+$=4}q!zY-k<}R7+0S(!>oAbr4W7 ziH0=*n#bg1ML9<|tL>`yH~<;wCG z0hUm_Wb|j>$Y7ucR14h2$5oeYSPmJoY>rC11ID~r0-r~_qXdfRP?orsEo>ZySS%ffN z#LT=QZYZ@Ul1=gRo`vZNHf`4-E&_QXcgEA8q%hYCGR8JpVq7cMqRxLr3KD>{zEpzch^-p8XoL*Jr{MqrDI*Te0-k^5i0syOK4gK8ad z`{2QY%F7!t(Wu2r^GL^{x;R;dvAkf;F z(JwjW)b#37|y*D?o{EC<{$^u&u=TSM50^!KPEZP?)Lt=ah3MecMFHfEGGuA|!yftL`AU74uZk3Y<4#{&Si zta7XbRHO604^9W7M_I7I1Hd%)?%mMG<7Yf^{M?608&R=}FBt*uKWciTtd6Hz4RM`G z86IH1)m^9U-|nM#W-ia-*v&@)H>s5q-|0Mlm9co|@Z`#Yr_IW4%$PHXxukyK1gKQ5 zHj@TC;|Iz^k3*pb22SWY`xm~fOxx8889Wl=IOy^!1Isb}f6-7D=0qM8#U5#_x&qZp zEJi63kyjV!Nlv%)UP%5LZ$ey%G|VS-f2I zhUt)7!;Fm7xS#^1xMn3@$a{UG9^)@95kHEMkQUeU_JQr&E6E6rtE&=yA;mK+J8C1- zyv2n4+qZAqL+FtN(lauYuBla{O9S_Y96_I2bKJOOUsszL9CKwyQe7a)oa!iNv=$@Kh7lH2=+p&fFg3phs=YE9IVre`09x8RX`>PZRv#M zxJTNP!xE}0PEI?o20Y+Q;UnTHB8Vbn?Spxka0v!OY7&ff=&I&u3lBM!mWcWo)G)4v zsma$7;~%vi`otEmy?^v-C-oh&6&GqqEIs1DeyXYO7TTPs+qkg@@2`?V9v8*p+JxWT zWEe&Y4&2*ZDa>>_g>({ib_~6`LO~=Iy$NJfrGa+#Ynhy;Y*q5Q%cP^Y8%^@Wem^>M4zULP zGn1|pdzXsX73ag;T=K0fY8_!8ydVlPKoq|UWVsvYmSqeGc7*rly^~H77oq5~*Ru~O zT=x3CkpK1d^2kB=MIzvy_}RYYr}X`3%#pE*r!ocJP+)x=KekbjxfGo}b4DcLax54) zr1zFPYNE>%SPI*LQH48oKOzemeJIvD+@_y=AGIb;nqaIXPeJ-d5hf}`y3LHaG{rQ6 zo+;xx6~4NGpi^X29FbX+B%(haJ9g{6=D!53I?{f%?!R_%x;s+F2CZ0kT>0`(L{z(7 zyN(-=d_p;24=ryPI2`u29^8T%zLS3lI9tS;Ol@bYim? zr3SnNS)Z5Cx_=ZJImU=yZb@|jF5q;Yritm1dlx%Qoth&PXExT8(F!*9QJM+;j&SPx&*)=hgY8+a%+I}PU8}qzHQp80 zVIbB~hAF*$W_>YvW+=#~vwkj|v6p&V!_V zNT4P11Exph3Mgh0`zd+3;7HFj2NdUQ7`%ASoH>AP4L^~WTL1d%h3mHMnND22w_%h; z*%fLrU~Q+dJKVC^vNIv5={>%`J;=TL7qV z6BvX;fkMdNvRANr2kxsPsmqvG+0ewnWa};;kaVMfGmgF61&v6=OBkm+NEOYa;5#*0 z?l8f=)6W6h=B7yv8~QOsTDQl72jky5aCkP-)pUGdI^}8$)cnunI=N(GccM_>ZZHtA zTIOAa_$$6@Sn^6%Ow-wUJa-Lh{!84~5fi@7z};7m_MYxcM#jj2##$aFW;unUk2D?7 zg5b4DXX5t@d=ks(m62Pd`KNUiDIa&KFwDRp8hl662d?a(n3iZJExXLMva%8mQBj^w zEpXOk@4Y)$UV;g4Qrv|U^;`ILF^i}VH|I6D%L)a^+EqNW5N@u+A_0Q41YfyKgYRbRVcc5my-N4 z&X*e1^@HcplFt6Pw!VH{RM=q{lh77b3&tZH-MhlvP4)r`ff+KD-ZJ+C7>3d6HtpYg z`M(P{a4a0(w2~f1VWdh16*}aHdrz|dmb>%#xe89|%=xA03pO4*men_;9o~v48X))1 z#k{KOwz#06z-@Hf4NQDMV_Y-8$1*D+Z~6Z#iX?hJc`q;{u6y=0!n8!Tt6pVTj`z^{ zS6PpxJ6pdI%Bi?i(6rzGQ{!tLn#^x*3OLFrXJBGZj=W{ zt>xD-Rd%uqgRBT~4fMG&n-X?wVgxpBwPl+8=1p}j%Q`o=;hgsA=QXD?m%tiBqO(;-; z$QVdLgTa3VUZTTk%}fw^;V~|I1blot)FA^E9{p-dKL;L0{81v(^qq~mt z8TBy$+akhe?q3)lz>;;Lp?WfAPo3QG(oF_FnP{lQ_N%Z(-k>tV7_$&cG4N2C>n07h9#_tsXH?GCRq)|U(tsiEvY&$KujAM4VmBSBtEs7NuH5Y2z24t4 zSBtf}zraV1&@9(WAi=Zyqb(o@lTBpLQfAbsA6 zTC5$PoRxrlUWR-E7b;`ao(qzSh&fPEL8N=eD-1s6HVGss^>h05^pcE=8nGsWHhn!cA zzgSMVda-dayC;Jc;%HJvB{vPa#ug`M5bBZgP&ViIh{jiEeQXR(sa=gRG*mKQec7ge z1%YILncGCAxZ3BQLV>&2I>g}4+f$}#98cu|?Eh2QnNjrp`(XkHyFYd?Po)rn#xit; z(&+1#AKv4tuH6jZ4S(L>hkCccYTN47s#!7`u*}ZRB`~mqNGh08!2C_7*N$U6M}xPS zOClmrnzt1zR>-F5u>Krt8HXWiFqupL7R!udRZ4q#7GOajl~j&Z`TyEf`+%HnI0d`N z7XAh5{`&PyAf zH@QAxNn-aQLyfG$V}5^mF7Zsu!-MLyAJRU(ZhL>#b6fV#IHI!d=+#*rx<9Z9m>Pfj zb%wUL*Qho%rzq=m+n(;C`kQ7Ql`-`*i+;DgztrSsJdRqvL<{Xj?n=UN@7vM1ROjZq<6UxuT`p zKHKX9it=rX?tU)rcA#i9EWY;Y^Yx{w)|wz?0a22u-%X|-13^AZpBI5EL_+t(cjire6*=i8^+ zvYlmL)hfMZ>Fd;eb6Rvx?t;(Zw}g+l7m@IOGi++^*At?wgcY<8oSri)Z^?No`(Csz zU$@}~;~zD}BI39CJ9q7RG$0>VdI0TXLk%>^OSeIh#|^;CO}-24gyA)(F3I1&{88`x z`SV|szrNg1dl>D>yO3~3JHI6mW*bq4E-3E#ht~CrDJrk)eXpUIIy>seaK=+CDKi7D zu9QCDk;^3cJFP1da&Fg9DC#>qb{sQcnjc%L&y<8xV!zp$#qi<^$8Yx!Y~}Aibb3C{ z>D&EpA$_yY-Or$-I_`9mG%$hwLPLXJ>PegSXuu?D1q;8F2M?}cztfDR8%v}msF##S z9h3m<{_em+f=KSy5U0x}dqZ$u`C&zJnBZ4gF|aubPqWC+i5>ZP?WUcXE%Z|tJN1|C z?f*|_R~pvTm4*+b;tVPy8U&RH1s7ae8bt|VF({i0$f8rJYe`Xyt$<7{u_-VjEo%S^ zQ;Sr1KwLXev}2$yR3${Qg0?8FY&Aim*x~>x1O(>&0(2bxH}_Be+}wN5Ip4m#pLPsm z#-fYaN3p9V=Q_UYQ@Itpq$diV)&-I3e7eOE>3ziS-tl;T%4KNC^J!+57V(5I*I19ZyjH$#f0rd=U6JN0o`*#oO=?^yCzX>}}43>?on!3FbKC?|hG2+sg$ofqm-QT!qnbahqYS2(L#jIa;$l?7! zBtm9M#_!00Zn_ieV&NZszT1$s`qzjCbv@w$+LWp+EnGx7Y7e}y?&|SVziK*kqdD%5z8^@l%t&~NX z=uV>C`m;}FI4ZXzkQ8|*czcoDKzd!jnr_)6v>+h)PpiqoaF{v8#oPeR#1^AQ75DG+=g3 z`WwTO*TAMCc_A6knBXX;b(-S**6=v;yPUtcOoTz_$K&j9Til#k~+Vfido;S!EPKU0-xI8!P`9ekW-kmPJzs7@{C-`st z+?)w)l+g<;xd%ud0%`0kp^@qmg5(-N>-q9H#{2XuIjd{?_KnkR02oL|6UGs_fkPZ| ziLpO;ZNO-6l`D|9lcN|*u13OLBX{ob;c;?)K+H-ET}iLXcNxp#4A%t*Per}76xF+L zNVqvSQBz+CB9e!VW%&=*u3I;^_F5K5oFrEuc1fh)rL*FD`5C|fTn_lSDL9OD7_uth z{+R%b| z3HZJpOn-_;DwA2lHk4KHfxd@o%niAcJHY`ckw!QBV5=?G0Xq0<>@zOwazJxC#PnXV z0!91MTu=m?%ZQ@=LD6(wyMQWtL>W)j@$;{(KKRz_`tN*UTUp%Y?fPXzUX&nO2cQ;c zEr+CVnPz$?0N22y`36~9CXyeRG~bZADr^aKtwKBOnIJ390~pChzW z>}FvgXoV)0jIs-@sFnODC42yATCe_}@&>sC9!z(*gH(p^z_{=^aNrM;bbv}#1M_~< zh;)dvRPLoME*oA*tpXh-m1rBp>x>Yd4@PZ;Exrw^;-xj0)++2}_r`T%UJCeX0z}vs z!#pptHS3{8|FyJ*7Off)*&Dvu>fX5fI%!o?D5pmSDE1HAQ9s%<+Q_Tw8INq2E|~FTNSZGAcqM4aeuyNQ>6%DVTaFi#J2e zdJQk$28Dq?K7f&eAfJtd`>O>XqUwLX!>!pqR(JgYYMa|FxS6QQ@`kTn2q(G|)7_8C zIhM;us60O(af+G6umLDq8|eLdA-x9GCh0+bPP0(>W)=&L9^`E(=YX5(@{hnI4GVyt zq(V;|lP@!J0cL0}wB1DyJgpZaJlpxhqFNf1H;JYslD*1@d5$i@AQ)=YcdS7QJ{^{j z68bgJd+a1KW}H^8{Q6H!^sZhgwKZgZ42z=x6~^#?o@n;mKr3e1gMt*o_*4C!V_8mO z=i!mh=?-Gy-e-ymp83WIcbV3?C5adiZxdtUU@3GZ4KoN-jp^DC9o!lbWx}}AhG}bY z<3AP6G>tx~A-uvB37B~C?ld4n+g$9q@R%?J)WDYo4zTXNs#WOF45fNs5St$`Vz#ol zW#VBvsQLvOh$INc+K7Ry(+LD*tEW*N2y-s=EPN@yiMW=~j3OG$aJ- zj{6qriYqr}F#jDSJTi5AKDd4Rwi5oC8sj3C0|V0KFbb$pc)9$y#_}@(we^TX08e4l z4sk1=>>`{L^Y3OytVC!P+`8uPoA8IoW((*R~v?C z+iu?bun3~ZLqK!GIe*E z)7U@c)@jYyrM>QG1?Njr_nk#;7Z8dhh}t?!xYk!*A=eMS6iUKiP87)lG7ylRYG!5z zHS0;{1YHr9z?KmJ_=krumLIRkn$TqRQUQf}LEZ+*dJh0M{wg?u96H+HJYcD}+ev@N zFvbsak>f=F%}EGBn*usa!4wl_=kUy&oxUo&ezsxPxi^5XG6@wZA@~bTz(i|CdKpwP zJvswSa5W$>#1qC-%CJm69Zv2~c8P2j?1yaO%FV}%i{s2ajcj(~xn zvvRWL^z}DWAj_QfB7fTVrh1*VtHxkd2s#eZG(o41a_wQ#TMlsCfqh3{>;XYRlQADj z&{p4q3RM@lpq*#(1{P2x0x-&`_t)7|=Z)WPkBrqHyXDv?9z2~gv#L2i>oOqH)=6Bi-8R77v* z44N=Y*AWdWs-i#&tU*h9!rHgrR-yhS1TGUY1*TA>n-PC@t`TTb$=lZKpX`^2vd=25 zTTi(FaR9=siUc2%t5b+tPT*~RbI?V)8$+DzNkrlcR}Iv11hYqpjd4d`%$VmW9Wl|Z kpb=5T{Ga?^w_X_HbR Date: Fri, 22 Oct 2021 10:42:00 +0200 Subject: [PATCH 007/108] add: Add new fim tags to `qa-docs` `schema.yaml`. --- deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index f68739d368..bf3bc54a38 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -231,6 +231,8 @@ predefined_values: - fim_registry_file_limit - fim_registry_multiple_registries - fim_registry_recursion_level + - fim_registry_restrict + - fim_synchronization - gcloud - github - integrity From dd3bfae45f9b6b121ea0a7f8ccd15ac1f422b128 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 25 Oct 2021 10:11:55 +0200 Subject: [PATCH 008/108] fix: Fix npm command for windows. #2075 Also added `run_local_command` to `utils.py`. --- .../wazuh_testing/qa_docs/lib/utils.py | 26 +++++++++++++++++++ .../qa_docs/search_ui/functions/search.js | 5 ++-- .../wazuh_testing/scripts/qa_docs.py | 6 +++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index e8b04af78b..a89dcc160f 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -2,7 +2,9 @@ # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 +import subprocess import os +import sys import shutil from wazuh_testing.qa_docs import QADOCS_LOGGER @@ -212,3 +214,27 @@ def clean_folder(folder): shutil.rmtree(file_path) except Exception as e: utils_logger.error(f"Failed to delete {file_path}. Reason: {e}") + +def run_local_command(command): + """Run local commands without getting the output, but validating the result code. + + Args: + command (string): Command to run. + + Raises: + QAValueError: If the run command has failed (rc != 0). + """ + if sys.platform == 'win32': + run = subprocess.Popen(command, shell=True) + else: + run = subprocess.Popen(['/bin/bash', '-c', command]) + + # Wait for the process to finish + run.communicate() + + result_code = run.returncode + + if result_code != 0: + print("error") + # raise QAValueError(f"The command {command} returned {result_code} as result code.", utils_logger.LOGGER.error, + # QADOCS_LOGGER) \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/search_ui/functions/search.js b/deps/wazuh_testing/wazuh_testing/qa_docs/search_ui/functions/search.js index 165bfc0bbf..60dda12d4e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/search_ui/functions/search.js +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/search_ui/functions/search.js @@ -13,9 +13,10 @@ const httpsAgent = new https.Agent({ const httpAgent = new http.Agent(); exports.handler = function(event, context, callback) { - const host = process.env.ELASTICSEARCH_HOST; + // npm config var cannot have '_' within its name + const host = process.env.npm_config_elastichost; const agent = host.startsWith("http:") ? httpAgent : httpsAgent; - const index = process.env.INDEX; + const index = process.env.npm_config_index; fetch(`${host}/${index}/_search`, { method: "POST", diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index a79a2cad2f..b360209f6c 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -12,6 +12,7 @@ from wazuh_testing.qa_docs.lib.config import Config from wazuh_testing.qa_docs.lib.index_data import IndexData from wazuh_testing.qa_docs.lib.sanity import Sanity +from wazuh_testing.qa_docs.lib.utils import run_local_command from wazuh_testing.qa_docs.doc_generator import DocGenerator from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging @@ -194,14 +195,15 @@ def install_searchui_deps(): os.chdir(SEARCH_UI_PATH) if not os.path.exists(os.path.join(SEARCH_UI_PATH, 'node_modules')): qadocs_logger.info('Installing SearchUI dependencies') - os.system("npm install") + run_local_command("npm install") def run_searchui(index): """Run SearchUI installing its dependencies if necessary""" install_searchui_deps() qadocs_logger.debug('Running SearchUI') - os.system(f"ELASTICSEARCH_HOST=http://localhost:9200 INDEX={index} npm start") + + run_local_command(f"npm --ELASTICHOST=http://localhost:9200 --INDEX={index} start") def parse_data(args): From 2bb06f158f55144aa8c558d158cb0c12ee8f9a67 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 26 Oct 2021 11:10:14 +0200 Subject: [PATCH 009/108] refac: Add output location to `qa-docs` logging. #2075 --- deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index f83b57dc4a..0f0d111012 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -328,7 +328,7 @@ def run(self): qa-docs -I ../../tests/ -T test_cache -o /tmp -> It would be running as `single test mode` creating `/tmp/test_cache.json` """ - DocGenerator.LOGGER.info("Starting test documentation parsing") + DocGenerator.LOGGER.info('Starting test documentation parsing') if self.conf.mode == Mode.DEFAULT: DocGenerator.LOGGER.debug(f"Cleaning doc folder located in {self.conf.documentation_path}") @@ -340,3 +340,5 @@ def run(self): elif self.conf.mode == Mode.PARSE_TESTS: self.parse_test_list() + + DocGenerator.LOGGER.info(f"Run completed, documentation location: {self.conf.documentation_path}") From 81b6ccdd49348bcc8ccb6a48e3c836c5d806a277 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 26 Oct 2021 11:28:18 +0200 Subject: [PATCH 010/108] refac: Few error messages has been changed. Also, type validation added. #2075 --- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index b360209f6c..f57c24bb56 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -130,13 +130,13 @@ def check_incompatible_parameters(parameters): qadocs_logger.error) if parameters.output_path and default_run: - raise QAValueError('The -o parameter only works with -t, --tests options in isolation. The default output ' + raise QAValueError('The -o parameter only works with -t, --tests option. The default output ' 'path is generated within the qa-docs tool to index it and visualize it.', qadocs_logger.error) if (parameters.test_types or parameters.test_modules) and test_run: raise QAValueError('The --types, --modules parameters parse the data so you can index it and visualize it. ' - '-t, --tests get specific tests information.', + '-t, --tests, -e and --exist are not compatible with them.', qadocs_logger.error) if parameters.no_logging and parameters.debug_level: @@ -187,6 +187,12 @@ def validate_parameters(parameters, parser): 'one type if you want to parse some modules within a test type.', qadocs_logger.error) + if parameters.test_types: + for type in parameters.test_types: + if type not in os.listdir(parameters.tests_path): + raise QAValueError(f"The given types, {parameters.test_types}, not found in {parameters.tests_path}", + qadocs_logger.error) + qadocs_logger.debug('Input parameters validation completed') From 3dae6f44fd2739761a9ed86c1314c7b07494c163 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 26 Oct 2021 12:33:57 +0200 Subject: [PATCH 011/108] refac: Redirect stdout so `--collect-only` does not print anything #2075 --- .../wazuh_testing/qa_docs/lib/pytest_wrap.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py index 663ff378b0..92b176a473 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py @@ -3,6 +3,8 @@ # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 import pytest +import os +import sys from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging @@ -48,7 +50,13 @@ def collect_test_cases(self, path): outpout (dict): A dictionary that contains the pytest parsed output. """ PytestWrap.LOGGER.debug(f"Running pytest to collect test cases for '{path}'") + + # Redirect the stdout to 'null' so --collect-only does not log anything + default_stdout = sys.stdout + no_stdout = open(os.devnull, 'w') + sys.stdout = no_stdout pytest.main(['--collect-only', "-qq", path], plugins=[self.plugin]) + sys.stdout = default_stdout output = {} for item in self.plugin.collected: From 64c1e9b3de33ea078a9d316ee316704cb6bd8a9e Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 26 Oct 2021 12:52:24 +0200 Subject: [PATCH 012/108] add: Add new predefined values tags to `schema.yaml`. #2075 --- deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index bf3bc54a38..6cbdb4bcd9 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -186,6 +186,8 @@ predefined_values: - cluster - cors - cpe + - diff + - disk_quota - dos_attack - download - enrollment @@ -231,7 +233,9 @@ predefined_values: - fim_registry_file_limit - fim_registry_multiple_registries - fim_registry_recursion_level + - fim_registry_report_changes - fim_registry_restrict + - fim_registry_tags - fim_synchronization - gcloud - github @@ -248,6 +252,7 @@ predefined_values: - nvd - office365 - oval + - prelink - rbac - realtime - remoted From e3464004ad1750e228a96b09f13d5ae40f1b5cdc Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 26 Oct 2021 13:25:08 +0200 Subject: [PATCH 013/108] refac: Log each incompatible `qa-docs` possibility run. #2075 Instead of log error for subset of incompatible options, now, each incompatible possibility has its error message. --- .../wazuh_testing/scripts/qa_docs.py | 108 ++++++++++++++---- 1 file changed, 86 insertions(+), 22 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index f57c24bb56..8adc9dd7a8 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -38,6 +38,7 @@ def set_qadocs_logger_level(logging_level): else: qadocs_logger.set_level(logging_level) + def set_parameters(args): # Set the qa-docs logger level if args.debug_level: @@ -47,6 +48,7 @@ def set_parameters(args): if args.no_logging: set_qadocs_logger_level(None) + def get_parameters(): """Capture the script parameters @@ -112,32 +114,93 @@ def check_incompatible_parameters(parameters): test_run = parameters.test_names or parameters.test_exist if parameters.version and (default_run or api_run or parameters.tests_path or test_run): - raise QAValueError('The -v, --version option must be run in isolation.', + raise QAValueError('The -v(--version) option must be run in isolation.', qadocs_logger.error) - if parameters.sanity and (default_run or api_run or test_run): - raise QAValueError('The -s, --sanity-check option must be run with -I, --tests-path option.', - qadocs_logger.error) + if parameters.sanity: + if default_run or api_run or test_run: + raise QAValueError('The -s, --sanity-check option must be run only with the -I(--tests-path) option.', + qadocs_logger.error) - if parameters.tests_path is None and (default_run or test_run or parameters.sanity): - raise QAValueError('The following options need the path where the tests are located: -t, --test, ' - ' -e, --exist, --types, --modules, -s, --sanity-check. You must specify it by using ' - '-I, --tests-path path_to_tests.', - qadocs_logger.error) + if parameters.tests_path is None: + raise QAValueError('The -s(--sanity-check) option needs the path to the tests to be parsed. You must ' + 'specify it by using -I, --tests-path', + qadocs_logger.error) - if api_run and (test_run): - raise QAValueError('The -e, -t options do not support API usage.', - qadocs_logger.error) + if parameters.test_types: + if parameters.tests_path is None: + raise QAValueError('The --types option needs the path to the tests to be parsed. You must specify it by ' + 'using -I, --tests-path', + qadocs_logger.error) - if parameters.output_path and default_run: - raise QAValueError('The -o parameter only works with -t, --tests option. The default output ' - 'path is generated within the qa-docs tool to index it and visualize it.', - qadocs_logger.error) + if parameters.test_names: + raise QAValueError('The --types option is not compatible with -t(--test)', + qadocs_logger.error) - if (parameters.test_types or parameters.test_modules) and test_run: - raise QAValueError('The --types, --modules parameters parse the data so you can index it and visualize it. ' - '-t, --tests, -e and --exist are not compatible with them.', - qadocs_logger.error) + if parameters.test_exist: + raise QAValueError('The --types option is not compatible with -e(--exist)', + qadocs_logger.error) + + if parameters.test_modules: + if parameters.tests_path is None: + raise QAValueError('The --modules option needs the path to the tests to be parsed. You must specify it by ' + 'using -I, --tests-path', + qadocs_logger.error) + + if parameters.test_names: + raise QAValueError('The --modules option is not compatible with -t(--test)', + qadocs_logger.error) + + if parameters.test_exist: + raise QAValueError('The --modules option is not compatible with -e(--exist)', + qadocs_logger.error) + + if parameters.test_names: + if parameters.tests_path is None: + raise QAValueError('The -t(--test) option needs the path to the tests to be parsed. You must specify it by' + ' using -I, --tests-path', + qadocs_logger.error) + + if parameters.index_name: + raise QAValueError('The -t(--test) option is not compatible with -i option', + qadocs_logger.error) + + if parameters.app_index_name: + raise QAValueError('The -t(--test) option is not compatible with -l option', + qadocs_logger.error) + + if parameters.launching_index_name: + raise QAValueError('The -t(--test) option is not compatible with -il option', + qadocs_logger.error) + + if parameters.test_exist: + if parameters.tests_path is None: + raise QAValueError('The -e(--exist) option needs the path to the tests to be parsed. You must specify it by' + ' using -I, --tests-path', + qadocs_logger.error) + + if parameters.index_name: + raise QAValueError('The -e(--exist) option is not compatible with -i option', + qadocs_logger.error) + + if parameters.app_index_name: + raise QAValueError('The -e(--exist) option is not compatible with -l option', + qadocs_logger.error) + + if parameters.launching_index_name: + raise QAValueError('The -e(--exist) option is not compatible with -il option', + qadocs_logger.error) + + if parameters.output_path: + if parameters.test_types: + raise QAValueError('The -o option is not compatible with --types. The default output path is generated ' + 'within the qa-docs tool to index it and visualize it.', + qadocs_logger.error) + + if parameters.test_modules: + raise QAValueError('The -o option is not compatible with --modules. The default output path is generated ' + 'within the qa-docs tool to index it and visualize it.', + qadocs_logger.error) if parameters.no_logging and parameters.debug_level: raise QAValueError('You cannot specify debug level and no-logging at the same time.', @@ -171,7 +234,8 @@ def validate_parameters(parameters, parser): for test_name in parameters.test_names: if doc_check.locate_test(test_name) is None: - raise QAValueError(f"{test_name} has not been not found in {parameters.tests_path}.", qadocs_logger.error) + raise QAValueError(f"{test_name} has not been not found in " + "{parameters.tests_path}.", qadocs_logger.error) # Check that the index exists if parameters.app_index_name: @@ -191,7 +255,7 @@ def validate_parameters(parameters, parser): for type in parameters.test_types: if type not in os.listdir(parameters.tests_path): raise QAValueError(f"The given types, {parameters.test_types}, not found in {parameters.tests_path}", - qadocs_logger.error) + qadocs_logger.error) qadocs_logger.debug('Input parameters validation completed') From cb75b536e729a6bad1ba22b06938968bddc003d5 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 26 Oct 2021 13:31:32 +0200 Subject: [PATCH 014/108] style: Fix style in `doc_generator.py` and `utils.py`. --- deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py | 2 +- deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index 0f0d111012..7beff8dd7e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -292,7 +292,7 @@ def locate_test(self, test_name): def check_test_exists(self, path): """Check that a test exists within the tests path input. - + Args: path (str): A string with the tests path. """ diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index a89dcc160f..23d6bc9586 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -215,6 +215,7 @@ def clean_folder(folder): except Exception as e: utils_logger.error(f"Failed to delete {file_path}. Reason: {e}") + def run_local_command(command): """Run local commands without getting the output, but validating the result code. @@ -237,4 +238,4 @@ def run_local_command(command): if result_code != 0: print("error") # raise QAValueError(f"The command {command} returned {result_code} as result code.", utils_logger.LOGGER.error, - # QADOCS_LOGGER) \ No newline at end of file + # QADOCS_LOGGER) From c4b0f87e6722bd5396cbfd989ec8b49926de3c8e Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 26 Oct 2021 13:50:23 +0200 Subject: [PATCH 015/108] add: Add incompatible parameters check with -o option. --- .../wazuh_testing/scripts/qa_docs.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 8adc9dd7a8..d975742374 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -202,6 +202,26 @@ def check_incompatible_parameters(parameters): 'within the qa-docs tool to index it and visualize it.', qadocs_logger.error) + if parameters.index_name: + raise QAValueError('The -o option is not compatible with -i option', + qadocs_logger.error) + + if parameters.app_index_name: + raise QAValueError('The -o option is not compatible with -l option', + qadocs_logger.error) + + if parameters.launching_index_name: + raise QAValueError('The -o option is not compatible with -il option', + qadocs_logger.error) + + if parameters.test_exist: + raise QAValueError('The -o option is not compatible with -e option', + qadocs_logger.error) + + if not parameters.test_names: + raise QAValueError('The -o option needs a list of tests to parse. You can use -t or --tests.', + qadocs_logger.error) + if parameters.no_logging and parameters.debug_level: raise QAValueError('You cannot specify debug level and no-logging at the same time.', qadocs_logger.error) From e7bf5908975155f430b52df2f5848e70f87349a0 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 28 Oct 2021 10:37:31 +0200 Subject: [PATCH 016/108] fix: Fix string format because it was throwing ES error. #2137 --- .../wazuh_testing/qa_docs/lib/code_parser.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 77b9865f3e..7705ae04cd 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -223,6 +223,17 @@ def parse_test(self, path, id, group_id): test_cases = self.pytest.collect_test_cases(path) if test_cases and test_cases[function.name]: function_doc['inputs'] = test_cases[function.name] + # ES throwing error because of its format in some cases + # -> Inserting it between double quotes fixs it + new_expected_output = [] + for string in function_doc['expected_output']: + if isinstance(string, dict): + for key, value in string.items(): + # example: r'.*Sending: FIM event (.+)$' ('added', 'modified' events) + new_expected_output.append(f"{key}: {value}") + else: + new_expected_output.append(f"{string}") + function_doc['expected_output'] = new_expected_output functions_doc.append(function_doc) From 226be191df21016868e6c03bcd5fa6da218115c8 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 28 Oct 2021 11:08:00 +0200 Subject: [PATCH 017/108] doc: Fix the error cases comments. #2137 --- deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 7705ae04cd..4d359ff190 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -223,8 +223,8 @@ def parse_test(self, path, id, group_id): test_cases = self.pytest.collect_test_cases(path) if test_cases and test_cases[function.name]: function_doc['inputs'] = test_cases[function.name] - # ES throwing error because of its format in some cases - # -> Inserting it between double quotes fixs it + # ES throwing errors because of the expected_output format in some cases + # -> Inserting the raw string and its comment between double quotes fixes it new_expected_output = [] for string in function_doc['expected_output']: if isinstance(string, dict): From 5fdb0babadd5cd06379229d70db1d1e9a5ab4a44 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 11:48:10 +0200 Subject: [PATCH 018/108] add: Add new predefined tag values to `schema.yaml`. #2075 --- deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index 6cbdb4bcd9..7d07bcd494 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -238,11 +238,18 @@ predefined_values: - fim_registry_tags - fim_synchronization - gcloud + - gcloud_configuration + - gcloud_functionality - github + - github_configuration - integrity + - invalid_settings - keys - key_polling - logcollector + - logcollector_age + - logcollector_cmd_exec + - logcollector_configuration - logs - logtest - man_in_the_middle @@ -260,6 +267,7 @@ predefined_values: - rootcheck - rules - scan + - scheduled - settings - simulator - ssl From f7aad4df8532262488bf4aa8832b47a180ec647d Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 11:48:10 +0200 Subject: [PATCH 019/108] add: Add new predefined tag values to `schema.yaml`. #2075 --- deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index 6cbdb4bcd9..7d07bcd494 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -238,11 +238,18 @@ predefined_values: - fim_registry_tags - fim_synchronization - gcloud + - gcloud_configuration + - gcloud_functionality - github + - github_configuration - integrity + - invalid_settings - keys - key_polling - logcollector + - logcollector_age + - logcollector_cmd_exec + - logcollector_configuration - logs - logtest - man_in_the_middle @@ -260,6 +267,7 @@ predefined_values: - rootcheck - rules - scan + - scheduled - settings - simulator - ssl From e98eb5f92fcd3cd4c17f7f89536bc3a8f6b8ddeb Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 12:12:10 +0200 Subject: [PATCH 020/108] add: Add qa-docs dockerfiles to `setup.py`. #2145 --- deps/wazuh_testing/setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/wazuh_testing/setup.py b/deps/wazuh_testing/setup.py index efe009f3c4..5c2c7ede74 100644 --- a/deps/wazuh_testing/setup.py +++ b/deps/wazuh_testing/setup.py @@ -50,6 +50,7 @@ def get_files_from_directory(directory): package_data_list.extend(get_files_from_directory('wazuh_testing/qa_docs/search_ui')) +package_data_list.extend(get_files_from_directory('wazuh_testing/qa_docs/dockerfiles')) setup(name='wazuh_testing', version='4.3.0', From c872b51a7f438320056e3ba3cd6074970bcd531b Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 12:13:27 +0200 Subject: [PATCH 021/108] refac: Update `qa-docs` dockerfile and entrypoint. #2145 --- .../qa_docs/dockerfiles/Dockerfile | 20 +++++++- .../qa_docs/dockerfiles/entrypoint.sh | 49 ++++++------------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile index c5727a9bdc..14ddab7f70 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile @@ -27,8 +27,24 @@ RUN curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add - && \ apt-get update && \ apt-get install wazuh-manager -ADD https://raw.githubusercontent.com/wazuh/wazuh-qa/master/requirements.txt /tmp/requirements.txt -RUN python3 -m pip install --upgrade pip && python3 -m pip install -r /tmp/requirements.txt --ignore-installed +WORKDIR / +RUN git clone https://github.com/wazuh/wazuh-qa -b 2145-docker-shared-dir +WORKDIR /wazuh-qa/ +RUN python3 -m pip install --upgrade pip && \ + python3 -m pip install -r requirements.txt --ignore-installed && \ + python3 -m pip install -r deps/wazuh_testing/wazuh_testing/qa_docs/requirements.txt --ignore-installed + +# Install the QA framework +WORKDIR /wazuh-qa/deps/wazuh_testing +RUN python3 setup.py install + +# Install search-ui deps +WORKDIR /usr/local/lib/python3.8/dist-packages/wazuh_testing-*/wazuh_testing/qa_docs/search_ui +RUN npm install + +# Limit ES RAM +RUN echo "-Xms1g" >> /etc/elasticsearch/jvm.options && \ + echo "-Xmx1g" >> /etc/elasticsearch/jvm.options # copy entrypoint and grant permission COPY ./entrypoint.sh /usr/bin/entrypoint.sh diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh index de12b96742..a1a1192d6e 100755 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh @@ -1,44 +1,27 @@ #!/bin/bash BRANCH="$1"; -TYPE="$2"; -MODULES="${@:3}"; +CMD="${@:2}"; # Clone tests to be parsed as qa-docs input -mkdir ~/tests && cd ~/tests +mkdir /tests && cd /tests +echo "Cloning tests to parse from ${BRANCH} branch" git clone https://github.com/wazuh/wazuh-qa --depth=1 -b ${BRANCH} &> /dev/null -# Clone qa-docs -cd ~ && git clone https://github.com/wazuh/wazuh-qa - -cd wazuh-qa/ -git checkout 1864-qa-docs-fixes - -# Install python dependencies not installed from -python3 -m pip install -r requirements.txt &> /dev/null - -# Install Wazuh QA framework -cd deps/wazuh_testing &> /dev/null -python3 setup.py install &> /dev/null - -# Install search-ui deps -cd /usr/local/lib/python3.8/dist-packages/wazuh_testing-*/wazuh_testing/qa_docs/search_ui -npm install - -# Limit ES RAM -echo "-Xms1g" >> /etc/elasticsearch/jvm.options -echo "-Xmx1g" >> /etc/elasticsearch/jvm.options +/usr/local/bin/qa-docs -d -I /tests/wazuh-qa/tests --validate-parameters ${CMD} # Start services -service elasticsearch start && service wazuh-manager start - -# Run qa-docs tool -if (($# == 1)) -then - /usr/local/bin/qa-docs -I ~/tests/wazuh-qa/tests -il qa-docs -elif (($# == 2)) +# If qa-docs will index the data, start ES +if [[ "$CMD" =~ .*"-i".* ]] || [[ "$CMD" =~ .*"-il".* ]]; then - /usr/local/bin/qa-docs -I ~/tests/wazuh-qa/tests --types ${TYPE} -il qa-docs -else - /usr/local/bin/qa-docs -I ~/tests/wazuh-qa/tests --types ${TYPE} --modules ${MODULES} -il qa-docs + service elasticsearch start fi +service wazuh-manager start + +# Run qa-docs with the given args +echo "Running /usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD}" +/usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD} + +# Move the documentation parsed to the shared dir +echo "Moving qa-docs output to shared directory /tmp/qa_docs" +mv -f /usr/local/lib/python3.8/dist-packages/wazuh_testing-*/wazuh_testing/qa_docs/output/ /qa_docs From 557ab9db2e6b79fb12a0b8ce49bd739db6f6827f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 12:15:04 +0200 Subject: [PATCH 022/108] rm: Remove old script to deploy `search-ui`. #2145 --- .../wazuh_testing/qa_docs/deploy_qa_docs.sh | 27 ------------------- 1 file changed, 27 deletions(-) delete mode 100755 deps/wazuh_testing/wazuh_testing/qa_docs/deploy_qa_docs.sh diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/deploy_qa_docs.sh b/deps/wazuh_testing/wazuh_testing/qa_docs/deploy_qa_docs.sh deleted file mode 100755 index 1c151deecc..0000000000 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/deploy_qa_docs.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -if (($# < 1)) -then - printf "Expected call:\n\n$0 (TYPE) (MODULES)\n\nTest type and modules are optionals.\n"; - exit 1; -fi - -branch_name=$1; -test_type=$2; -test_modules=${@:3}; - -docker build -t qa-docs:0.1 dockerfiles/ - -printf "Using $branch_name branch as test(s) input.\n"; -if (($# == 1)) -then - printf "Parsing the whole tests directory.\n"; - docker run qa-docs:0.1 $branch_name -elif (($# == 2)) -then - printf "Parsing $test_type test type.\n"; - docker run qa-docs:0.1 $branch_name $test_type -else - printf "Parsing $test_modules modules from $test_type.\n"; - docker run qa-docs:0.1 $branch_name $test_type $test_modules -fi From 7a4bbfab8e90ea36a2394e3d81f1123c0313d6f4 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 12:16:33 +0200 Subject: [PATCH 023/108] add: Add to `qa-docs` the option to run using a docker container. #2145 --- .../wazuh_testing/qa_docs/lib/utils.py | 40 ++++++++++++ .../wazuh_testing/scripts/qa_docs.py | 61 +++++++++++++++---- 2 files changed, 88 insertions(+), 13 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 23d6bc9586..bf8173ae8a 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -7,6 +7,8 @@ import sys import shutil +from tempfile import gettempdir + from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging @@ -239,3 +241,41 @@ def run_local_command(command): print("error") # raise QAValueError(f"The command {command} returned {result_code} as result code.", utils_logger.LOGGER.error, # QADOCS_LOGGER) + + +def run_local_command_with_output(command): + """Run local commands getting the command output. + Args: + command (string): Command to run. + + Returns: + str: Command output + """ + if sys.platform == 'win32': + run = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) + else: + run = subprocess.Popen(['/bin/bash', '-c', command], stdout=subprocess.PIPE) + + return run.stdout.read().decode() + + +def qa_docs_docker_run(qa_branch, parameters, command): + """Run qa-docs in a Linux docker container. + + Having this functionality helps the people that does not have ElasticSearch and/or wazuh framework to generate + the documentation of the tests. + + Args: + qa_branch (str): Wazuh qa branch that will be used as tests input. + parameters (str): + command (str): + """ + docker_args = f"{qa_branch} {command}" + docker_image_name = 'wazuh/qa-docs' + docker_image_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'dockerfiles') + + utils_logger.info(f"Building qa-docs docker image") + run_local_command(f"cd {docker_image_path} && docker build -q -t {docker_image_name} .") + + utils_logger.info(f"Running the Linux container") + run_local_command(f"docker run --rm -v {os.path.join(gettempdir(), 'qa_docs')}:/qa_docs {docker_image_name} {docker_args}") diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index d975742374..c185a28171 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -12,7 +12,7 @@ from wazuh_testing.qa_docs.lib.config import Config from wazuh_testing.qa_docs.lib.index_data import IndexData from wazuh_testing.qa_docs.lib.sanity import Sanity -from wazuh_testing.qa_docs.lib.utils import run_local_command +from wazuh_testing.qa_docs.lib.utils import run_local_command, qa_docs_docker_run from wazuh_testing.qa_docs.doc_generator import DocGenerator from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging @@ -100,6 +100,15 @@ def get_parameters(): parser.add_argument('-e', '--exist', nargs='+', default=[], dest='test_exist', help="Checks if test(s) exist or not.",) + parser.add_argument('--validate-parameters', action='store_true', dest='validate_parameters', + help='Validate the parameters passed to the qa-docs tool.') + + parser.add_argument('--docker-run', action='store_true', dest='run_with_docker', + help='Run qa-docs using within a docker container') + + parser.add_argument('--qa-branch', dest='qa_branch', + help='Specifies the qa branch that will be used as input for the tests to be parsed.') + return parser.parse_args(), parser @@ -113,6 +122,8 @@ def check_incompatible_parameters(parameters): api_run = parameters.index_name or parameters.app_index_name or parameters.launching_index_name test_run = parameters.test_names or parameters.test_exist + qadocs_logger.debug('Checking parameters incompatibilities.') + if parameters.version and (default_run or api_run or parameters.tests_path or test_run): raise QAValueError('The -v(--version) option must be run in isolation.', qadocs_logger.error) @@ -128,7 +139,7 @@ def check_incompatible_parameters(parameters): qadocs_logger.error) if parameters.test_types: - if parameters.tests_path is None: + if parameters.tests_path is None and not parameters.run_with_docker: raise QAValueError('The --types option needs the path to the tests to be parsed. You must specify it by ' 'using -I, --tests-path', qadocs_logger.error) @@ -142,7 +153,7 @@ def check_incompatible_parameters(parameters): qadocs_logger.error) if parameters.test_modules: - if parameters.tests_path is None: + if parameters.tests_path is None and not parameters.run_with_docker: raise QAValueError('The --modules option needs the path to the tests to be parsed. You must specify it by ' 'using -I, --tests-path', qadocs_logger.error) @@ -156,7 +167,7 @@ def check_incompatible_parameters(parameters): qadocs_logger.error) if parameters.test_names: - if parameters.tests_path is None: + if parameters.tests_path is None and not parameters.run_with_docker: raise QAValueError('The -t(--test) option needs the path to the tests to be parsed. You must specify it by' ' using -I, --tests-path', qadocs_logger.error) @@ -226,6 +237,8 @@ def check_incompatible_parameters(parameters): raise QAValueError('You cannot specify debug level and no-logging at the same time.', qadocs_logger.error) + qadocs_logger.debug('Parameters incompatibilities checked.') + def validate_parameters(parameters, parser): """Validate the parameters that qa-docs receives. @@ -271,12 +284,6 @@ def validate_parameters(parameters, parser): 'one type if you want to parse some modules within a test type.', qadocs_logger.error) - if parameters.test_types: - for type in parameters.test_types: - if type not in os.listdir(parameters.tests_path): - raise QAValueError(f"The given types, {parameters.test_types}, not found in {parameters.tests_path}", - qadocs_logger.error) - qadocs_logger.debug('Input parameters validation completed') @@ -357,14 +364,42 @@ def index_and_visualize_data(args): # When SearchUI index is not hardcoded, it will be use args.launching_index_name run_searchui(args.launching_index_name) +def get_qa_docs_run(args): + command = '' + if args.index_name: + command += f" -i {args.index_name}" + if args.app_index_name: + command += f" -l {args.app_index_name}" + if args.launching_index_name: + command += f" -il {args.launching_index_name}" + + if args.test_types: + command += ' --types' + for type in args.test_types: + command += f" {type}" + if args.test_modules: + command += ' --modules' + for modules in args.test_modules: + command += f" {modules} " + elif args.test_names: + command += ' -t' + for test_name in args.test_names: + command += f" {test_name} " + + return command def main(): args, parser = get_parameters() - set_parameters(args) - validate_parameters(args, parser) + if args.validate_parameters: + set_parameters(args) + validate_parameters(args, parser) + return 0 - if args.version: + if args.run_with_docker: + command = get_qa_docs_run(args) + qa_docs_docker_run(args.qa_branch, qadocs_logger.get_logger('qadocs_logger'), command) + elif args.version: with open(VERSION_PATH, 'r') as version_file: version_data = version_file.read() version = json.loads(version_data) From c2c2c97d8921acd903e20eafde7fc1691ba59dc6 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 12:31:26 +0200 Subject: [PATCH 024/108] add: Add new `os_version` value to `schema.yaml`. --- deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index 7d07bcd494..f75f130617 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -112,6 +112,7 @@ predefined_values: - Windows Server 2003 - Windows Server 2012 - Windows Server 2016 + - Windows Server 2019 components: - agent - manager From db65ea0f0b6c120542991c91bdd889eb79d14466 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 13:03:50 +0200 Subject: [PATCH 025/108] fix: Add missing comma in `setup.py`. --- deps/wazuh_testing/setup.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/setup.py b/deps/wazuh_testing/setup.py index 5c2c7ede74..0955334453 100644 --- a/deps/wazuh_testing/setup.py +++ b/deps/wazuh_testing/setup.py @@ -21,7 +21,8 @@ 'data/sslmanager.cert', 'tools/macos_log/log_generator.m', 'qa_docs/schema.yaml', - 'qa_docs/VERSION.json' + 'qa_docs/VERSION.json', + 'qa_docs/dockerfiles/*', 'qa_ctl/deployment/dockerfiles/*', 'qa_ctl/deployment/dockerfiles/qa_ctl/*', 'qa_ctl/deployment/vagrantfile_template.txt', @@ -50,7 +51,7 @@ def get_files_from_directory(directory): package_data_list.extend(get_files_from_directory('wazuh_testing/qa_docs/search_ui')) -package_data_list.extend(get_files_from_directory('wazuh_testing/qa_docs/dockerfiles')) +#package_data_list.extend(get_files_from_directory('wazuh_testing/qa_docs/dockerfiles')) setup(name='wazuh_testing', version='4.3.0', From 3f01bab9d41fb2811c6a426920348f7f14b9cb68 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 13:05:29 +0200 Subject: [PATCH 026/108] refac: Remove a useless commented line. --- deps/wazuh_testing/setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/deps/wazuh_testing/setup.py b/deps/wazuh_testing/setup.py index 0955334453..d0ae596096 100644 --- a/deps/wazuh_testing/setup.py +++ b/deps/wazuh_testing/setup.py @@ -51,7 +51,6 @@ def get_files_from_directory(directory): package_data_list.extend(get_files_from_directory('wazuh_testing/qa_docs/search_ui')) -#package_data_list.extend(get_files_from_directory('wazuh_testing/qa_docs/dockerfiles')) setup(name='wazuh_testing', version='4.3.0', From 217216f237e658f21b750b4d45e3397a1fcfd93a Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 13:11:51 +0200 Subject: [PATCH 027/108] add: Add new parameter validations to `qa-docs`. #2145 Also, `get_qa_docs_runs` has been renamed to `get_qa_docs_run_options` and placed in `utils.py`. --- .../wazuh_testing/qa_docs/lib/utils.py | 32 +++++++++++ .../wazuh_testing/scripts/qa_docs.py | 55 ++++++++----------- 2 files changed, 54 insertions(+), 33 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index bf8173ae8a..17944bfdbb 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -279,3 +279,35 @@ def qa_docs_docker_run(qa_branch, parameters, command): utils_logger.info(f"Running the Linux container") run_local_command(f"docker run --rm -v {os.path.join(gettempdir(), 'qa_docs')}:/qa_docs {docker_image_name} {docker_args}") + + +def get_qa_docs_run_options(args): + """Get the parameters to run qa-docs. + + Args: + args (argparse.Namespace): arguments that are passed to the tool. + Returns: + command (str): A string with the options to run qa-docs. + """ + command = '' + if args.index_name: + command += f" -i {args.index_name}" + if args.app_index_name: + command += f" -l {args.app_index_name}" + if args.launching_index_name: + command += f" -il {args.launching_index_name}" + + if args.test_types: + command += ' --types' + for type in args.test_types: + command += f" {type}" + if args.test_modules: + command += ' --modules' + for modules in args.test_modules: + command += f" {modules} " + elif args.test_names: + command += ' -t' + for test_name in args.test_names: + command += f" {test_name} " + + return command \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index c185a28171..ff199da09d 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -12,7 +12,7 @@ from wazuh_testing.qa_docs.lib.config import Config from wazuh_testing.qa_docs.lib.index_data import IndexData from wazuh_testing.qa_docs.lib.sanity import Sanity -from wazuh_testing.qa_docs.lib.utils import run_local_command, qa_docs_docker_run +from wazuh_testing.qa_docs.lib.utils import run_local_command, qa_docs_docker_run, get_qa_docs_run_options from wazuh_testing.qa_docs.doc_generator import DocGenerator from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging @@ -278,11 +278,24 @@ def validate_parameters(parameters, parser): except Exception as index_exception: raise QAValueError(f"Index exception: {index_exception}", qadocs_logger.error) + if parameters.test_types: + for type in parameters.test_types: + if type not in os.listdir(parameters.tests_path): + raise QAValueError(f"The given type: {type}, not found in {parameters.tests_path}", + qadocs_logger.error) + # Check that modules selection is done within a test type - if parameters.test_modules and len(parameters.test_types) != 1: - raise QAValueError('The --modules option work when is only parsing a single test type. Use --types with just ' - 'one type if you want to parse some modules within a test type.', - qadocs_logger.error) + if parameters.test_modules: + if len(parameters.test_types) != 1: + raise QAValueError('The --modules option work when is only parsing a single test type. Use --types with ' + 'just one type if you want to parse some modules within a test type.', + qadocs_logger.error) + + for module in parameters.test_modules: + type_path = os.path.join(parameters.tests_path,parameters.test_types[0]) + if module not in os.listdir(type_path): + raise QAValueError(f"The given module: {module}, not found in {type_path}", + qadocs_logger.error) qadocs_logger.debug('Input parameters validation completed') @@ -364,40 +377,16 @@ def index_and_visualize_data(args): # When SearchUI index is not hardcoded, it will be use args.launching_index_name run_searchui(args.launching_index_name) -def get_qa_docs_run(args): - command = '' - if args.index_name: - command += f" -i {args.index_name}" - if args.app_index_name: - command += f" -l {args.app_index_name}" - if args.launching_index_name: - command += f" -il {args.launching_index_name}" - - if args.test_types: - command += ' --types' - for type in args.test_types: - command += f" {type}" - if args.test_modules: - command += ' --modules' - for modules in args.test_modules: - command += f" {modules} " - elif args.test_names: - command += ' -t' - for test_name in args.test_names: - command += f" {test_name} " - - return command def main(): args, parser = get_parameters() - if args.validate_parameters: - set_parameters(args) - validate_parameters(args, parser) - return 0 + set_parameters(args) + validate_parameters(args, parser) + if args.validate_parameters: return 0 if args.run_with_docker: - command = get_qa_docs_run(args) + command = get_qa_docs_run_options(args) qa_docs_docker_run(args.qa_branch, qadocs_logger.get_logger('qadocs_logger'), command) elif args.version: with open(VERSION_PATH, 'r') as version_file: From 98efbbdc6a3e972d05d7b163408542d075e0598a Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 29 Oct 2021 14:03:26 +0200 Subject: [PATCH 028/108] Fix: Halt entrypoint when the validation fails. #2145 Also, a missing line added to qa-docs script. --- .../wazuh_testing/qa_docs/dockerfiles/entrypoint.sh | 8 ++++++++ deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh index a1a1192d6e..94d0d2c6ba 100755 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh @@ -10,6 +10,14 @@ git clone https://github.com/wazuh/wazuh-qa --depth=1 -b ${BRANCH} &> /dev/null /usr/local/bin/qa-docs -d -I /tests/wazuh-qa/tests --validate-parameters ${CMD} +# get run status +status=$? +# If not returned 0, exit +if [ $status -ne 0 ] +then + exit 1 +fi + # Start services # If qa-docs will index the data, start ES if [[ "$CMD" =~ .*"-i".* ]] || [[ "$CMD" =~ .*"-il".* ]]; diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index ff199da09d..e62184f0ca 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -381,8 +381,9 @@ def index_and_visualize_data(args): def main(): args, parser = get_parameters() - set_parameters(args) - validate_parameters(args, parser) + if not args.run_with_docker: + set_parameters(args) + validate_parameters(args, parser) if args.validate_parameters: return 0 if args.run_with_docker: From 36e154f8911294a5bf7e1b588d75a03187866014 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 2 Nov 2021 09:01:52 +0100 Subject: [PATCH 029/108] fix: Fix moving `qa-docs` output to shared volume. #2145 --- .../wazuh_testing/qa_docs/dockerfiles/entrypoint.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh index 94d0d2c6ba..1f5e2c4771 100755 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh @@ -32,4 +32,5 @@ echo "Running /usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD}" # Move the documentation parsed to the shared dir echo "Moving qa-docs output to shared directory /tmp/qa_docs" +rm -rf /qa_docs/output &> /dev/null mv -f /usr/local/lib/python3.8/dist-packages/wazuh_testing-*/wazuh_testing/qa_docs/output/ /qa_docs From be3d92ae53ddeee828b3d3687ac6f70b286a9040 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 2 Nov 2021 09:02:56 +0100 Subject: [PATCH 030/108] refac: Name docker container as `qa_docs_container`. #2145 --- deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 17944bfdbb..7c2bbba294 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -278,7 +278,7 @@ def qa_docs_docker_run(qa_branch, parameters, command): run_local_command(f"cd {docker_image_path} && docker build -q -t {docker_image_name} .") utils_logger.info(f"Running the Linux container") - run_local_command(f"docker run --rm -v {os.path.join(gettempdir(), 'qa_docs')}:/qa_docs {docker_image_name} {docker_args}") + run_local_command(f"docker run --name qa_docs_container --rm -v {os.path.join(gettempdir(), 'qa_docs')}:/qa_docs {docker_image_name} {docker_args}") def get_qa_docs_run_options(args): From c1c8ff9cf4a5e8801261f5a4e62171f5ef11b0ac Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 2 Nov 2021 09:11:40 +0100 Subject: [PATCH 031/108] doc: Add missing doc to `qa_docs_docker_run`. --- deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py | 7 +++---- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 7c2bbba294..355982f211 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -259,16 +259,15 @@ def run_local_command_with_output(command): return run.stdout.read().decode() -def qa_docs_docker_run(qa_branch, parameters, command): +def qa_docs_docker_run(qa_branch, command): """Run qa-docs in a Linux docker container. - Having this functionality helps the people that does not have ElasticSearch and/or wazuh framework to generate + Having this functionality helps the people that do not have ElasticSearch and(or) wazuh framework to generate the documentation of the tests. Args: qa_branch (str): Wazuh qa branch that will be used as tests input. - parameters (str): - command (str): + command (str): A string with the arguments to pass qa-docs when running within the docker container. """ docker_args = f"{qa_branch} {command}" docker_image_name = 'wazuh/qa-docs' diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index e62184f0ca..e433e39f31 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -388,7 +388,7 @@ def main(): if args.run_with_docker: command = get_qa_docs_run_options(args) - qa_docs_docker_run(args.qa_branch, qadocs_logger.get_logger('qadocs_logger'), command) + qa_docs_docker_run(args.qa_branch, command) elif args.version: with open(VERSION_PATH, 'r') as version_file: version_data = version_file.read() From 4cab2fbd40a4a0e712247e415efa551332bd8746 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 2 Nov 2021 11:27:17 +0100 Subject: [PATCH 032/108] add: Add `--check-documentation` flag that allows `qa-docs` tool to check if test(s) are documentated following the `qa-docs` schema. #1864 --- .../wazuh_testing/qa_docs/doc_generator.py | 19 +++++++++++++++++-- .../wazuh_testing/qa_docs/lib/config.py | 5 ++++- .../wazuh_testing/scripts/qa_docs.py | 17 ++++++++++++----- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index 7beff8dd7e..6a9060305f 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -220,10 +220,14 @@ def create_test(self, path, group_id, test_name=None): self.dump_output(test, doc_path) DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' " - "was created with ID:{self.__id_counter}") + f"was created with ID:{self.__id_counter}") return self.__id_counter elif self.conf.mode == Mode.PARSE_TESTS: + # If qa-docs is run with --check-doc flag then the output files wont be generated + if self.conf.check_doc: + return + if self.conf.documentation_path: doc_path = self.conf.documentation_path doc_path = os.path.join(doc_path, test_name) @@ -302,6 +306,16 @@ def check_test_exists(self, path): else: print(f'{test_name} does not exist in {path}') + def check_documentation(self): + for test_name in self.conf.test_names: + test_path = self.locate_test(test_name) + test = self.parser.parse_test(test_path, self.__id_counter, 0) + + if test: + print(f"{test_name} is documented using qa-docs current schema") + else: + print(f"{test_name} is not documented using qa-docs current schema") + def print_test_info(self, test): """Print the test info to standard output. @@ -341,4 +355,5 @@ def run(self): elif self.conf.mode == Mode.PARSE_TESTS: self.parse_test_list() - DocGenerator.LOGGER.info(f"Run completed, documentation location: {self.conf.documentation_path}") + if not self.conf.check_doc: + DocGenerator.LOGGER.info(f"Run completed, documentation location: {self.conf.documentation_path}") diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py index f423d44558..07d342a6b7 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py @@ -38,7 +38,8 @@ class Config(): """ LOGGER = Logging.get_logger(QADOCS_LOGGER) - def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_modules=None, test_names=None): + def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_modules=None, test_names=None, + check_doc=False): """Constructor that loads the schema file and set the `qa-docs` configuration. If a test name is passed, it would be run in `single test mode`. @@ -56,6 +57,7 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ test_types (list): A list that contains the test type(s) that the user specifies. test_modules (list): A list that contains the test module(s) that the user specifies. test_names (list): A list that contains the test name(s) that the user specifies. + check_dock (boolean): Flag to indicate if the test specified (with -t parameter) is documented. """ self.mode = Mode.DEFAULT self.project_path = test_dir @@ -69,6 +71,7 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ self.test_types = [] self.test_modules = [] self.predefined_values = {} + self.check_doc = check_doc self.__read_schema_file(schema_path) self.__read_output_fields() diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index d975742374..e4e1d428de 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -100,6 +100,9 @@ def get_parameters(): parser.add_argument('-e', '--exist', nargs='+', default=[], dest='test_exist', help="Checks if test(s) exist or not.",) + parser.add_argument('--check-documentation', action='store_true', dest='check_doc', + help="Checks if test(s) are correctly documentated according to qa-docs current schema.",) + return parser.parse_args(), parser @@ -255,7 +258,7 @@ def validate_parameters(parameters, parser): for test_name in parameters.test_names: if doc_check.locate_test(test_name) is None: raise QAValueError(f"{test_name} has not been not found in " - "{parameters.tests_path}.", qadocs_logger.error) + f"{parameters.tests_path}.", qadocs_logger.error) # Check that the index exists if parameters.app_index_name: @@ -309,10 +312,12 @@ def parse_data(args): # When output path is specified by user, a json is generated within that path if args.output_path: - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, args.output_path, test_names=args.test_names)) - # When no output is specified, it is printed + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, args.output_path, test_names=args.test_names, + check_doc=args.check_doc)) + # When no output is specified, it is generated within the default qa-docs output folder else: - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_names=args.test_names)) + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_names=args.test_names, + check_doc=args.check_doc)) # Parse a list of test types elif args.test_types: @@ -332,9 +337,11 @@ def parse_data(args): docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH)) docs.run() - if args.test_types or args.test_modules or args.test_names: + if args.test_types or args.test_modules or args.test_names and not args.check_doc: qadocs_logger.info('Running QADOCS') docs.run() + elif args.test_names and args.check_doc: + docs.check_documentation() def index_and_visualize_data(args): From 2a08267bf3a8476f2b0b56f14f495f9676985ee8 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 2 Nov 2021 11:41:03 +0100 Subject: [PATCH 033/108] fix: Fix `--check-documentation` flag when the test is not documented. #1864 --- deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index 6a9060305f..e7a517c926 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -309,12 +309,14 @@ def check_test_exists(self, path): def check_documentation(self): for test_name in self.conf.test_names: test_path = self.locate_test(test_name) - test = self.parser.parse_test(test_path, self.__id_counter, 0) + try: + test = self.parser.parse_test(test_path, self.__id_counter, 0) + except Exception as qaerror: + test = None + print(f"{test_name} is not documented using qa-docs current schema") if test: print(f"{test_name} is documented using qa-docs current schema") - else: - print(f"{test_name} is not documented using qa-docs current schema") def print_test_info(self, test): """Print the test info to standard output. From 2d973f122a720dc30f2ab41e0958adf9aad2520b Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 11:15:21 +0100 Subject: [PATCH 034/108] refac: Change default output path and `-o` now supports `--types`, `--modules`, `-i` and `-il`. #2075 --- .../wazuh_testing/scripts/qa_docs.py | 38 ++++--------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index e4e1d428de..b70eba16fa 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -6,8 +6,10 @@ import os import sys import json + from datetime import datetime from elasticsearch import Elasticsearch +from tempfile import gettempdir from wazuh_testing.qa_docs.lib.config import Config from wazuh_testing.qa_docs.lib.index_data import IndexData @@ -20,7 +22,7 @@ VERSION_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'VERSION.json') SCHEMA_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'schema.yaml') -OUTPUT_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'output') +OUTPUT_PATH = os.path.join(gettempdir(), 'qa_docs', 'output') LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'log') SEARCH_UI_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'search_ui') qadocs_logger = Logging(QADOCS_LOGGER, 'INFO', True, os.path.join(LOG_PATH, @@ -48,6 +50,10 @@ def set_parameters(args): if args.no_logging: set_qadocs_logger_level(None) + if args.output_path: + global OUTPUT_PATH + OUTPUT_PATH = args.output_path + def get_parameters(): """Capture the script parameters @@ -195,36 +201,14 @@ def check_incompatible_parameters(parameters): qadocs_logger.error) if parameters.output_path: - if parameters.test_types: - raise QAValueError('The -o option is not compatible with --types. The default output path is generated ' - 'within the qa-docs tool to index it and visualize it.', - qadocs_logger.error) - - if parameters.test_modules: - raise QAValueError('The -o option is not compatible with --modules. The default output path is generated ' - 'within the qa-docs tool to index it and visualize it.', - qadocs_logger.error) - - if parameters.index_name: - raise QAValueError('The -o option is not compatible with -i option', - qadocs_logger.error) - if parameters.app_index_name: raise QAValueError('The -o option is not compatible with -l option', qadocs_logger.error) - if parameters.launching_index_name: - raise QAValueError('The -o option is not compatible with -il option', - qadocs_logger.error) - if parameters.test_exist: raise QAValueError('The -o option is not compatible with -e option', qadocs_logger.error) - if not parameters.test_names: - raise QAValueError('The -o option needs a list of tests to parse. You can use -t or --tests.', - qadocs_logger.error) - if parameters.no_logging and parameters.debug_level: raise QAValueError('You cannot specify debug level and no-logging at the same time.', qadocs_logger.error) @@ -310,13 +294,7 @@ def parse_data(args): elif args.test_names: qadocs_logger.info(f"Parsing the following test(s) {args.test_names}") - # When output path is specified by user, a json is generated within that path - if args.output_path: - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, args.output_path, test_names=args.test_names, - check_doc=args.check_doc)) - # When no output is specified, it is generated within the default qa-docs output folder - else: - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_names=args.test_names, + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_names=args.test_names, check_doc=args.check_doc)) # Parse a list of test types From 302e590f0d3e74c51a2b00d4c6fbd4f992f7d3a9 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 12:42:51 +0100 Subject: [PATCH 035/108] add: Add generated documentation format selection. #2075 Now, using `--format` you can select if you want the output data with JSON or YAML format. --- .../wazuh_testing/qa_docs/doc_generator.py | 31 +++++++++++-------- .../wazuh_testing/qa_docs/lib/index_data.py | 27 +++++++++++----- .../wazuh_testing/scripts/qa_docs.py | 20 ++++++++---- 3 files changed, 52 insertions(+), 26 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index e7a517c926..d5edf69c27 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -30,16 +30,18 @@ class DocGenerator: __id_counter (int): An integer that counts the test/group ID when it is created. ignore_regex (list): A list with compiled paths to be ignored. include_regex (list): A list with regular expressions used to parse a file or not. + file_format (str): Generated documentation format. """ LOGGER = Logging.get_logger(QADOCS_LOGGER) - def __init__(self, config): + def __init__(self, config, file_format='json'): """Class constructor Initialize every attribute. Args: config (Config): A `Config` instance with the loaded configuration. + file_format (str): Generated documentation format. """ self.conf = config self.parser = CodeParser(self.conf) @@ -51,6 +53,7 @@ def __init__(self, config): if self.conf.mode == Mode.DEFAULT: for include_regex in self.conf.include_regex: self.include_regex.append(re.compile(include_regex.replace('\\', '/'))) + self.file_format = file_format def is_valid_folder(self, path): """Check if a folder is included so it would be parsed. @@ -152,21 +155,23 @@ def dump_output(self, content, doc_path): DocGenerator.LOGGER.debug('Creating documentation folder') os.makedirs(os.path.dirname(doc_path)) - DocGenerator.LOGGER.debug(f"Writing {doc_path}.json") + if self.file_format == 'json': + DocGenerator.LOGGER.debug(f"Writing {doc_path}.json") - try: - with open(f"{doc_path}.json", 'w+') as out_file: - out_file.write(f"{json.dumps(content, indent=4)}\n") - except IOError: - raise QAValueError(f"Cannot write in {doc_path}.json", DocGenerator.LOGGER.error) + try: + with open(f"{doc_path}.json", 'w+') as out_file: + out_file.write(f"{json.dumps(content, indent=4)}\n") + except IOError: + raise QAValueError(f"Cannot write in {doc_path}.json", DocGenerator.LOGGER.error) - DocGenerator.LOGGER.debug(f"Writing {doc_path}.yaml") + if self.file_format == 'yaml': + DocGenerator.LOGGER.debug(f"Writing {doc_path}.yaml") - try: - with open(doc_path + ".yaml", "w+") as out_file: - out_file.write(yaml.dump(content)) - except IOError: - raise QAValueError(f"Cannot write in {doc_path}.yaml", DocGenerator.LOGGER.error) + try: + with open(doc_path + ".yaml", "w+") as out_file: + out_file.write(yaml.dump(content)) + except IOError: + raise QAValueError(f"Cannot write in {doc_path}.yaml", DocGenerator.LOGGER.error) def create_group(self, path, group_id): """Parse the content of a group file and dump the content into a file. diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py index a35cc72dc4..b7e2cea840 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py @@ -6,6 +6,7 @@ import os import re import json +import yaml import requests from elasticsearch import Elasticsearch, helpers @@ -20,23 +21,27 @@ class IndexData: Attributes: path (str): A string that contains the path where the parsed documentation is located. index (str): A string with the index name to be indexed with Elasticsearch. + files_format (str): A string with the generated documentation format. regex: A regular expression to get JSON files. es (ElasticSearch): An `ElasticSearch` client instance. output (list): A list to be indexed in Elasticsearch. """ LOGGER = Logging.get_logger(QADOCS_LOGGER) - def __init__(self, index, path): + def __init__(self, index, path, file_format): """Class constructor Initialize every attribute. Args: - config (Config): A `Config` instance with the loaded configuration. + index (str): Index name. + path (str): Path where the generated documentation is allocated. + file_format (str): Generated documentation format. """ self.path = path self.index = index - self.regex = re.compile(".*json") + self.files_format = file_format + self.regex = re.compile(f".*{file_format}") self.es = Elasticsearch() self.output = [] @@ -74,16 +79,24 @@ def read_files_content(self, files): Args: files (list): A list with the files that matched with the regex. """ - for file in files: - with open(file) as test_file: - lines = json.load(test_file) - self.output.append(lines) + if self.files_format == 'json': + for file in files: + with open(file, 'r') as test_file: + lines = json.load(test_file) + self.output.append(lines) + else: + for file in files: + with open(file, 'r') as test_file: + lines = yaml.load(test_file, Loader=yaml.FullLoader) + self.output.append(lines) + def remove_index(self): """Delete an index.""" delete = self.es.indices.delete(index=self.index, ignore=[400, 404]) IndexData.LOGGER.info(f'Delete index {self.index}\n {delete}\n') + def run(self): """Collect all the documentation files and makes a request to the BULK API to index the new data.""" self.test_connection() diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index b70eba16fa..ef0b18f8b9 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -23,6 +23,7 @@ VERSION_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'VERSION.json') SCHEMA_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'schema.yaml') OUTPUT_PATH = os.path.join(gettempdir(), 'qa_docs', 'output') +OUTPUT_FORMAT = 'json' LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'log') SEARCH_UI_PATH = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'qa_docs', 'search_ui') qadocs_logger = Logging(QADOCS_LOGGER, 'INFO', True, os.path.join(LOG_PATH, @@ -54,6 +55,10 @@ def set_parameters(args): global OUTPUT_PATH OUTPUT_PATH = args.output_path + if args.output_format: + global OUTPUT_FORMAT + OUTPUT_FORMAT = args.output_format + def get_parameters(): """Capture the script parameters @@ -102,6 +107,9 @@ def get_parameters(): parser.add_argument('-o', dest='output_path', help="Specifies the output directory for test parsed when `-t, --tests` is used.") + + parser.add_argument('--format', dest='output_format', choices=['json', 'yaml'], + help="Specifies the generated files format.") parser.add_argument('-e', '--exist', nargs='+', default=[], dest='test_exist', help="Checks if test(s) exist or not.",) @@ -295,7 +303,7 @@ def parse_data(args): qadocs_logger.info(f"Parsing the following test(s) {args.test_names}") docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_names=args.test_names, - check_doc=args.check_doc)) + check_doc=args.check_doc), OUTPUT_FORMAT) # Parse a list of test types elif args.test_types: @@ -304,15 +312,15 @@ def parse_data(args): # Parse a list of test modules if args.test_modules: docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, - args.test_modules)) + args.test_modules), OUTPUT_FORMAT) else: - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types)) + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types), OUTPUT_FORMAT) # Parse the whole path else: if not (args.index_name or args.app_index_name or args.launching_index_name): qadocs_logger.info(f"Parsing all tests located in {args.tests_path}") - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH)) + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH), OUTPUT_FORMAT) docs.run() if args.test_types or args.test_modules or args.test_names and not args.check_doc: @@ -326,7 +334,7 @@ def index_and_visualize_data(args): """Index the data previously parsed and visualize it.""" # Index the previous parsed tests into Elasticsearch if args.index_name: - index_data = IndexData(args.index_name, OUTPUT_PATH) + index_data = IndexData(args.index_name, OUTPUT_PATH, OUTPUT_FORMAT) index_data.run() # Launch SearchUI with index_name as input @@ -337,7 +345,7 @@ def index_and_visualize_data(args): # Index the previous parsed tests into Elasticsearch and then launch SearchUI elif args.launching_index_name: qadocs_logger.debug(f"Indexing {args.launching_index_name}") - index_data = IndexData(args.launching_index_name, OUTPUT_PATH) + index_data = IndexData(args.launching_index_name, OUTPUT_PATH, OUTPUT_FORMAT) index_data.run() # When SearchUI index is not hardcoded, it will be use args.launching_index_name run_searchui(args.launching_index_name) From ce73ed5a21f5ac9d70f869acf2b300e4b68da273 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 12:54:57 +0100 Subject: [PATCH 036/108] refac: Improve the `qa_docs`, `doc_generator` and `index_data` logging. #2075 --- deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py | 2 -- deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py | 7 ++++--- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index d5edf69c27..de30c62f7b 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -349,8 +349,6 @@ def run(self): qa-docs -I ../../tests/ -T test_cache -o /tmp -> It would be running as `single test mode` creating `/tmp/test_cache.json` """ - DocGenerator.LOGGER.info('Starting test documentation parsing') - if self.conf.mode == Mode.DEFAULT: DocGenerator.LOGGER.debug(f"Cleaning doc folder located in {self.conf.documentation_path}") clean_folder(self.conf.documentation_path) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py index b7e2cea840..506ee0807e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py @@ -94,7 +94,7 @@ def read_files_content(self, files): def remove_index(self): """Delete an index.""" delete = self.es.indices.delete(index=self.index, ignore=[400, 404]) - IndexData.LOGGER.info(f'Delete index {self.index}\n {delete}\n') + IndexData.LOGGER.info(f'Deleting the already existing index: {self.index}') def run(self): @@ -110,7 +110,8 @@ def run(self): except Exception: pass - IndexData.LOGGER.info("Indexing data...\n") + IndexData.LOGGER.info("Indexing data") helpers.bulk(self.es, self.output, index=self.index) out = json.dumps(self.es.cluster.health(wait_for_status='yellow', request_timeout=1), indent=4) - IndexData.LOGGER.info(out) + IndexData.LOGGER.debug(out) + IndexData.LOGGER.info("The data have been successfully indexed") diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index ef0b18f8b9..a37298d70e 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -311,6 +311,7 @@ def parse_data(args): # Parse a list of test modules if args.test_modules: + qadocs_logger.info(f"Parsing the following test(s) modules(s): {args.test_modules}") docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, args.test_modules), OUTPUT_FORMAT) else: From e2a640b1627e5ceea73681a06c12886489ea7da5 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 13:53:19 +0100 Subject: [PATCH 037/108] refac: Improve ElasticSearch connection exception handling. #2075 --- .../wazuh_testing/qa_docs/lib/index_data.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py index 506ee0807e..cd71b1503f 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py @@ -8,6 +8,7 @@ import json import yaml import requests +import urllib3 from elasticsearch import Elasticsearch, helpers from wazuh_testing.qa_docs import QADOCS_LOGGER @@ -55,8 +56,9 @@ def test_connection(self): res = requests.get("http://localhost:9200/_cluster/health") if res.status_code == 200: return True - except Exception as exception: - raise QAValueError(f"Connection error: {exception}", IndexData.LOGGER.error) + except (ConnectionRefusedError, urllib3.exceptions.NewConnectionError, urllib3.exceptions.MaxRetryError, + requests.exceptions.ConnectionError): + raise QAValueError(f"Connection error", IndexData.LOGGER.error) from None def get_files(self): """Find all the files inside the documentation path that matches with the JSON regex. @@ -99,11 +101,10 @@ def remove_index(self): def run(self): """Collect all the documentation files and makes a request to the BULK API to index the new data.""" - self.test_connection() - files = self.get_files() - self.read_files_content(files) - if self.test_connection(): + files = self.get_files() + self.read_files_content(files) + try: if self.es.count(index=self.index): self.remove_index() From 8ea7a84ad074ca1bcd4cbcf57f224d901bc09f50 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 15:26:15 +0100 Subject: [PATCH 038/108] style: Fix `index_data` style. --- deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py index cd71b1503f..ecaf5b17c8 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py @@ -92,13 +92,11 @@ def read_files_content(self, files): lines = yaml.load(test_file, Loader=yaml.FullLoader) self.output.append(lines) - def remove_index(self): """Delete an index.""" delete = self.es.indices.delete(index=self.index, ignore=[400, 404]) IndexData.LOGGER.info(f'Deleting the already existing index: {self.index}') - def run(self): """Collect all the documentation files and makes a request to the BULK API to index the new data.""" if self.test_connection(): From e655f0de1e042ff4ca303335f6788c8ae3cee449 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 16:17:43 +0100 Subject: [PATCH 039/108] refac: Change ElasticSearch error message. --- deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py index ecaf5b17c8..199dfde2df 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py @@ -58,7 +58,7 @@ def test_connection(self): return True except (ConnectionRefusedError, urllib3.exceptions.NewConnectionError, urllib3.exceptions.MaxRetryError, requests.exceptions.ConnectionError): - raise QAValueError(f"Connection error", IndexData.LOGGER.error) from None + raise QAValueError(f"Could not connect with ElasticSearch.", IndexData.LOGGER.error) from None def get_files(self): """Find all the files inside the documentation path that matches with the JSON regex. From 9fa79dc0f7c347be4eb6d241106935dbd9427485 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 16:50:57 +0100 Subject: [PATCH 040/108] add: Now `-o` modify the shared volume when running with `--docker-run`. #2075 --- .../qa_docs/dockerfiles/entrypoint.sh | 16 +++++++++++++--- .../wazuh_testing/qa_docs/lib/utils.py | 13 +++++++------ .../wazuh_testing/scripts/qa_docs.py | 12 +++++++----- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh index 1f5e2c4771..284e8bd06f 100755 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh @@ -1,13 +1,23 @@ #!/bin/bash BRANCH="$1"; -CMD="${@:2}"; +SHARED_VOL="$2" +CMD="${@:3}"; # Clone tests to be parsed as qa-docs input mkdir /tests && cd /tests echo "Cloning tests to parse from ${BRANCH} branch" git clone https://github.com/wazuh/wazuh-qa --depth=1 -b ${BRANCH} &> /dev/null +# get run status +status=$? +# If not returned 0, exit +if [ $status -ne 0 ] +then + echo "Could not download tests input from ${BRANCH} branch" + exit 1 +fi + /usr/local/bin/qa-docs -d -I /tests/wazuh-qa/tests --validate-parameters ${CMD} # get run status @@ -31,6 +41,6 @@ echo "Running /usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD}" /usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD} # Move the documentation parsed to the shared dir -echo "Moving qa-docs output to shared directory /tmp/qa_docs" +echo "Moving qa-docs output to shared directory: ${SHARED_VOL}/output" rm -rf /qa_docs/output &> /dev/null -mv -f /usr/local/lib/python3.8/dist-packages/wazuh_testing-*/wazuh_testing/qa_docs/output/ /qa_docs +mv -f /tmp/qa_docs/output /qa_docs diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 355982f211..823d12f029 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -259,7 +259,7 @@ def run_local_command_with_output(command): return run.stdout.read().decode() -def qa_docs_docker_run(qa_branch, command): +def qa_docs_docker_run(qa_branch, command, output_path): """Run qa-docs in a Linux docker container. Having this functionality helps the people that do not have ElasticSearch and(or) wazuh framework to generate @@ -269,20 +269,21 @@ def qa_docs_docker_run(qa_branch, command): qa_branch (str): Wazuh qa branch that will be used as tests input. command (str): A string with the arguments to pass qa-docs when running within the docker container. """ - docker_args = f"{qa_branch} {command}" + docker_args = f"{qa_branch} {output_path} {command}" docker_image_name = 'wazuh/qa-docs' docker_image_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'dockerfiles') utils_logger.info(f"Building qa-docs docker image") - run_local_command(f"cd {docker_image_path} && docker build -q -t {docker_image_name} .") + run_local_command_with_output(f"cd {docker_image_path} && docker build -q -t {docker_image_name} .") utils_logger.info(f"Running the Linux container") - run_local_command(f"docker run --name qa_docs_container --rm -v {os.path.join(gettempdir(), 'qa_docs')}:/qa_docs {docker_image_name} {docker_args}") + run_local_command(f"docker run --name qa_docs_container --rm -v {output_path}:/qa_docs {docker_image_name} " + f"{docker_args}") def get_qa_docs_run_options(args): """Get the parameters to run qa-docs. - + Args: args (argparse.Namespace): arguments that are passed to the tool. Returns: @@ -309,4 +310,4 @@ def get_qa_docs_run_options(args): for test_name in args.test_names: command += f" {test_name} " - return command \ No newline at end of file + return command diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 06ddfa0e1f..69e552ad52 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -51,8 +51,11 @@ def set_parameters(args): if args.no_logging: set_qadocs_logger_level(None) - if args.output_path: + if args.run_with_docker: global OUTPUT_PATH + OUTPUT_PATH = os.path.join(gettempdir(), 'qa_docs') + + if args.output_path: OUTPUT_PATH = args.output_path if args.output_format: @@ -374,14 +377,13 @@ def index_and_visualize_data(args): def main(): args, parser = get_parameters() - if not args.run_with_docker: - set_parameters(args) - validate_parameters(args, parser) + set_parameters(args) + if not args.run_with_docker: validate_parameters(args, parser) if args.validate_parameters: return 0 if args.run_with_docker: command = get_qa_docs_run_options(args) - qa_docs_docker_run(args.qa_branch, command) + qa_docs_docker_run(args.qa_branch, command, OUTPUT_PATH) elif args.version: with open(VERSION_PATH, 'r') as version_file: version_data = version_file.read() From caecec31d883773408f68268f2aea655e7201623 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 17:34:28 +0100 Subject: [PATCH 041/108] add: Add new parameters checks for `--qa-branch` and `--docker-run`. #2075 --- .../wazuh_testing/scripts/qa_docs.py | 97 +++++++++++-------- 1 file changed, 58 insertions(+), 39 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 69e552ad52..1824d8907b 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -6,6 +6,7 @@ import os import sys import json +import git from datetime import datetime from elasticsearch import Elasticsearch @@ -234,6 +235,18 @@ def check_incompatible_parameters(parameters): raise QAValueError('You cannot specify debug level and no-logging at the same time.', qadocs_logger.error) + if parameters.run_with_docker: + if not parameters.qa_branch: + raise QAValueError('The docker container run needs a QA branch with the tests input.', + qadocs_logger.error) + + if parameters.qa_branch: + if not parameters.run_with_docker: + raise QAValueError('If you want to use a QA branch as input you need to specify the --docker-run option. ' + 'In the future, with --qa-branch It will also use the tests within the branch in local ' + 'as input', + qadocs_logger.error) + qadocs_logger.debug('Parameters incompatibilities checked.') @@ -252,47 +265,53 @@ def validate_parameters(parameters, parser): check_incompatible_parameters(parameters) - # Check if the directory where the tests are located exist - if parameters.tests_path: - if not os.path.exists(parameters.tests_path): - raise QAValueError(f"{parameters.tests_path} does not exist. Tests directory not found.", - qadocs_logger.error) - - # Check that test_input name exists - if parameters.test_names: - doc_check = DocGenerator(Config(SCHEMA_PATH, parameters.tests_path, test_names=parameters.test_names)) - - for test_name in parameters.test_names: - if doc_check.locate_test(test_name) is None: - raise QAValueError(f"{test_name} has not been not found in " - f"{parameters.tests_path}.", qadocs_logger.error) - - # Check that the index exists - if parameters.app_index_name: - es = Elasticsearch() - try: - es.count(index=parameters.app_index_name) - except Exception as index_exception: - raise QAValueError(f"Index exception: {index_exception}", qadocs_logger.error) + if parameters.run_with_docker: + branches = git.Git().branch("--all").split() + if f"remotes/origin/{parameters.qa_branch}" not in branches: + raise QAValueError(f"{parameters.qa_branch} not found in Wazuh-QA repo.", + qadocs_logger.error) + else: + # Check if the directory where the tests are located exist + if parameters.tests_path: + if not os.path.exists(parameters.tests_path): + raise QAValueError(f"{parameters.tests_path} does not exist. Tests directory not found.", + qadocs_logger.error) - if parameters.test_types: - for type in parameters.test_types: - if type not in os.listdir(parameters.tests_path): - raise QAValueError(f"The given type: {type}, not found in {parameters.tests_path}", - qadocs_logger.error) + # Check that test_input name exists + if parameters.test_names: + doc_check = DocGenerator(Config(SCHEMA_PATH, parameters.tests_path, test_names=parameters.test_names)) - # Check that modules selection is done within a test type - if parameters.test_modules: - if len(parameters.test_types) != 1: - raise QAValueError('The --modules option work when is only parsing a single test type. Use --types with ' - 'just one type if you want to parse some modules within a test type.', - qadocs_logger.error) + for test_name in parameters.test_names: + if doc_check.locate_test(test_name) is None: + raise QAValueError(f"{test_name} has not been not found in " + f"{parameters.tests_path}.", qadocs_logger.error) - for module in parameters.test_modules: - type_path = os.path.join(parameters.tests_path,parameters.test_types[0]) - if module not in os.listdir(type_path): - raise QAValueError(f"The given module: {module}, not found in {type_path}", - qadocs_logger.error) + # Check that the index exists + if parameters.app_index_name: + es = Elasticsearch() + try: + es.count(index=parameters.app_index_name) + except Exception as index_exception: + raise QAValueError(f"Index exception: {index_exception}", qadocs_logger.error) + + if parameters.test_types: + for type in parameters.test_types: + if type not in os.listdir(parameters.tests_path): + raise QAValueError(f"The given type: {type}, not found in {parameters.tests_path}", + qadocs_logger.error) + + # Check that modules selection is done within a test type + if parameters.test_modules: + if len(parameters.test_types) != 1: + raise QAValueError('The --modules option work when is only parsing a single test type. Use --types with ' + 'just one type if you want to parse some modules within a test type.', + qadocs_logger.error) + + for module in parameters.test_modules: + type_path = os.path.join(parameters.tests_path,parameters.test_types[0]) + if module not in os.listdir(type_path): + raise QAValueError(f"The given module: {module}, not found in {type_path}", + qadocs_logger.error) qadocs_logger.debug('Input parameters validation completed') @@ -378,7 +397,7 @@ def main(): args, parser = get_parameters() set_parameters(args) - if not args.run_with_docker: validate_parameters(args, parser) + validate_parameters(args, parser) if args.validate_parameters: return 0 if args.run_with_docker: From bfc28f8e5c1fc82c129e7b2723363888c2ca54ee Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 17:51:30 +0100 Subject: [PATCH 042/108] add: Add a line to `elasticsearch.yml` to remove security warning. --- .../wazuh_testing/qa_docs/dockerfiles/Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile index 14ddab7f70..72e52e343e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile @@ -28,7 +28,7 @@ RUN curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add - && \ apt-get install wazuh-manager WORKDIR / -RUN git clone https://github.com/wazuh/wazuh-qa -b 2145-docker-shared-dir +RUN git clone https://github.com/wazuh/wazuh-qa -b 1864-qa-docs-fixes WORKDIR /wazuh-qa/ RUN python3 -m pip install --upgrade pip && \ python3 -m pip install -r requirements.txt --ignore-installed && \ @@ -44,7 +44,9 @@ RUN npm install # Limit ES RAM RUN echo "-Xms1g" >> /etc/elasticsearch/jvm.options && \ - echo "-Xmx1g" >> /etc/elasticsearch/jvm.options + echo "-Xmx1g" >> /etc/elasticsearch/jvm.options && \ + # Disable xpack to prevent ES showing security warning + echo "xpack.security.enabled: false" >> /etc/elasticsearch/elasticsearch.yml # copy entrypoint and grant permission COPY ./entrypoint.sh /usr/bin/entrypoint.sh From 7eeea2a74e51959888de94b80a4d2a8808a85d80 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 3 Nov 2021 17:52:41 +0100 Subject: [PATCH 043/108] rm: Remove `qa-docs` `requirements.txt`. They are in qa requirements.txt --- deps/wazuh_testing/wazuh_testing/qa_docs/requirements.txt | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 deps/wazuh_testing/wazuh_testing/qa_docs/requirements.txt diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/requirements.txt b/deps/wazuh_testing/wazuh_testing/qa_docs/requirements.txt deleted file mode 100644 index 36fb54a600..0000000000 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -pyyaml -pytest -elasticsearch From 7cb54d12181d0b95f0548aa0063a29d393d309f8 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 4 Nov 2021 08:36:19 +0100 Subject: [PATCH 044/108] refac: Remove `-I` and use `--tests-path` in `qa-docs` tool. #2075 --- .../wazuh_testing/qa_docs/README.md | 50 +++++++++---------- .../qa_docs/dockerfiles/entrypoint.sh | 4 +- .../wazuh_testing/scripts/qa_docs.py | 2 +- 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md index 1f7cf22cc4..8d3eaaddcf 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md @@ -4,7 +4,7 @@ Wazuh - Quality Assurance automation self-contained documentation parsing tool. ## Rational Wazuh QA documentation is designed to be self-contained into the source code of each test. -`qa-docs` is the tool in charge of parsing the documentation block from each source code and generate data capable +`qa-docs` is the tool in charge of parsing the documentation block from each source code and generating data, able to be indexed and displayed. It has two modules well defined: `DocGenerator` and `SearchUI`. ### DocGenerator @@ -41,7 +41,7 @@ within the `qa-docs` wiki. ### Parsing Running `qa-docs` as specified in the [Usage section](#usage) will scan every test and group file found into the -include paths of the documentation, it will extract the module and tests blocks from each test file and discard any +included paths of the documentation, it will extract the module and tests blocks from each test file and discard any non-documentable field. Also, complementary test-cases information will be extracted from a dry-run of Pytest if there isn´t a description for them. @@ -186,43 +186,43 @@ Windows installer: https://nodejs.org/en/download/ and follow the setup wizard s ## Usage -You can parse the tests and run the API with just one command, e.g. `qa-docs -I /path-to-tests/ --type integration --modules test_active_response -il active-response-index` +You can parse the tests and run the API with just one command, e.g. `qa-docs --tests-path /path-to-tests/ --type integration --modules test_active_response -il active-response-index` Also, you can visit the `qa-docs` tool [use guide](https://github.com/wazuh/wazuh-qa/wiki/QADOCS-tool-use-guide) ### Parsing #### Complete run - qa-docs -I /path-to-tests-to-parse/ + qa-docs --tests-path /path-to-tests-to-parse/ -Using just the `-I` flag, the tool will load the schema file and run a complete parse of the paths in the -configuration to dump the content into the output folder located in the `qa-docs` build directory. e.g: `qa-docs -I /wazuh-qa/tests/` +Using just the `--tests-path` flag, the tool will load the schema file and run a complete parse of the paths in the +configuration to dump the content into the output folder located in the `qa-docs` build directory. e.g: `qa-docs --tests-path /wazuh-qa/tests/` #### Parse specific type(s) - qa-docs -I /path-to-tests-to-parse/ --types + qa-docs --tests-path /path-to-tests-to-parse/ --types Using `--type` flag you can parse only the tests inside the type(s) folder(s) you want. #### Parse specific module(s) - qa-docs -I /path-to-tests-to-parse/ --types --modules + qa-docs --tests-path /path-to-tests-to-parse/ --types --modules Using `--modules` flag you can parse only the tests inside the modules(s) folder(s) you want. It also needs the type of tests where the tests are located. #### Parse specific test(s) - qa-docs -I /path-to-tests-to-parse/ -t(--test) TEST_NAME1 TEST_NAME2 + qa-docs --tests-path /path-to-tests-to-parse/ -t(--test) TEST_NAME1 TEST_NAME2 Using `-t, --test` flag you can parse only the tests that you want. The documentation parsed will be printed, if you want to save it you have to use the `-o` -flag and specify the output directory. e.g: `qa-docs -I /wazuh-qa/tests/ -t test_cache test_cors -o /tmp`. +flag and specify the output directory. e.g: `qa-docs --tests-path /wazuh-qa/tests/ -t test_cache test_cors -o /tmp`. This option is not compatible with API-related options, because the output is printed or saved with `-o` in a custom directory. #### Check if test(s) exist - qa-docs -I /path-to-tests-to-parse/ -e(--exist) TEST_NAME1 TEST_NAME2 + qa-docs --tests-path /path-to-tests-to-parse/ -e(--exist) TEST_NAME1 TEST_NAME2 With this option the tool prints if test(s) do(es) exist. #### Sanity Check - qa-docs -I /path-to-tests-to-parse/ -s + qa-docs --tests-path /path-to-tests-to-parse/ -s Using `-s`, the tool will run a sanity check of the content in the output folder. @@ -233,7 +233,7 @@ Also, it will validate that the output files have every Mandatory field and chec wrong values following the `qa-docs` [predefined values](https://github.com/wazuh/wazuh-qa/wiki/Documenting-tests-using-the-qadocs-schema#pre-defined-values). #### Debug - qa-docs -I /path-to-tests-to-parse/ -d + qa-docs --tests-path /path-to-tests-to-parse/ -d Using `-d`, the tool runs in DEBUG mode, logging extra information in the log file(created within the `qa-docs` build directory) or console output. @@ -284,12 +284,12 @@ Using `-il` option, the tool indexes the content of each file output as a docume - Complete tests directory parse ``` -qa-docs -I /path-to-tests/ +qa-docs --tests-path /path-to-tests/ ``` - Parse `fim` module ``` -qa-docs -I /path-to-tests/ --type integration --modules test_fim +qa-docs --tests-path /path-to-tests/ --type integration --modules test_fim ``` - Index the parsed data @@ -304,23 +304,21 @@ qa-docs -l my_index - Parse `vulnerability_detector` module, index the output data, and launch `search-ui` ``` -qa-docs -I /path-to-tests/ --type integration --modules test_vulnerability_detector -il vd-index +qa-docs --tests-path /path-to-tests/ --type integration --modules test_vulnerability_detector -il vd-index ``` ## Docker deployment -If you prefer, you can run the script inside the `qa-docs/` directory, which will parse the tests of a branch you pass as an argument: +If you prefer, you can run `qa-docs` using a docker container, that allows you to use `qa-docs` without installing ElasticSearch and npm. You need to run `qa-docs` as if you would do in local but need to specify the branch you want to use as tests input with `--qa-branch` and the flag `--docker-run`. -``` -./deploy_qa_docs.sh 1796-migrate-doc-schema-2 -``` +Few examples: -You can also parse a specific test type or modules: - -``` -./deploy_qa_docs.sh 1796-migrate-doc-schema-2 integration +- Parse `test_active_response` tests and generate the documentation in `/tmp/qa_docs`: +```bash +qa-docs --docker-run --types integration --modules test_active_response --qa-branch 1796-migrate-doc-active-response ``` +- Parse `test_active_response` and `test_agentd` tests and launch search-ui to visualize the documentation: +```bash +qa-docs --docker-run --types integration --modules test_active_response test_agentd -il qa-index --qa-branch 1796-migrate-doc-schema-2 ``` -./deploy_qa_docs.sh 1796-migrate-doc-schema-2 integration test_active_response test_agentd -``` \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh index 284e8bd06f..093f5f105d 100755 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh @@ -18,7 +18,7 @@ then exit 1 fi -/usr/local/bin/qa-docs -d -I /tests/wazuh-qa/tests --validate-parameters ${CMD} +/usr/local/bin/qa-docs --tests-path /tests/wazuh-qa/tests --validate-parameters ${CMD} # get run status status=$? @@ -38,7 +38,7 @@ service wazuh-manager start # Run qa-docs with the given args echo "Running /usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD}" -/usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD} +/usr/local/bin/qa-docs --tests-path /tests/wazuh-qa/tests ${CMD} # Move the documentation parsed to the shared dir echo "Moving qa-docs output to shared directory: ${SHARED_VOL}/output" diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 1824d8907b..c9177bfbf5 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -88,7 +88,7 @@ def get_parameters(): parser.add_argument('-d', '--debug', action='count', dest='debug_level', help="Enable debug messages.") - parser.add_argument('-I', '--tests-path', dest='tests_path', + parser.add_argument('--tests-path', dest='tests_path', help="Path where tests are located.") parser.add_argument('-t', '--tests', nargs='+', default=[], dest='test_names', From 51d7c58897ec0cf2f002f618fcdc8a9d6ffaa74e Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 4 Nov 2021 13:05:57 +0100 Subject: [PATCH 045/108] style: fix `code_parser` and `qa_docs` style. --- .../wazuh_testing/qa_docs/lib/code_parser.py | 2 +- .../wazuh_testing/scripts/qa_docs.py | 33 ++++++++++--------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 4d359ff190..3f0f4c221e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -229,7 +229,7 @@ def parse_test(self, path, id, group_id): for string in function_doc['expected_output']: if isinstance(string, dict): for key, value in string.items(): - # example: r'.*Sending: FIM event (.+)$' ('added', 'modified' events) + # example: r'.*Sending: FIM event (.+)$' ('added', 'modified' events) new_expected_output.append(f"{key}: {value}") else: new_expected_output.append(f"{string}") diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index c9177bfbf5..4f7284d7af 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -56,7 +56,7 @@ def set_parameters(args): global OUTPUT_PATH OUTPUT_PATH = os.path.join(gettempdir(), 'qa_docs') - if args.output_path: + if args.output_path: OUTPUT_PATH = args.output_path if args.output_format: @@ -111,7 +111,7 @@ def get_parameters(): parser.add_argument('-o', dest='output_path', help="Specifies the output directory for test parsed when `-t, --tests` is used.") - + parser.add_argument('--format', dest='output_format', choices=['json', 'yaml'], help="Specifies the generated files format.") @@ -123,7 +123,7 @@ def get_parameters(): parser.add_argument('--docker-run', action='store_true', dest='run_with_docker', help='Run qa-docs using within a docker container') - + parser.add_argument('--qa-branch', dest='qa_branch', help='Specifies the qa branch that will be used as input for the tests to be parsed.') parser.add_argument('--check-documentation', action='store_true', dest='check_doc', @@ -238,14 +238,14 @@ def check_incompatible_parameters(parameters): if parameters.run_with_docker: if not parameters.qa_branch: raise QAValueError('The docker container run needs a QA branch with the tests input.', - qadocs_logger.error) + qadocs_logger.error) if parameters.qa_branch: if not parameters.run_with_docker: raise QAValueError('If you want to use a QA branch as input you need to specify the --docker-run option. ' 'In the future, with --qa-branch It will also use the tests within the branch in local ' 'as input', - qadocs_logger.error) + qadocs_logger.error) qadocs_logger.debug('Parameters incompatibilities checked.') @@ -269,13 +269,13 @@ def validate_parameters(parameters, parser): branches = git.Git().branch("--all").split() if f"remotes/origin/{parameters.qa_branch}" not in branches: raise QAValueError(f"{parameters.qa_branch} not found in Wazuh-QA repo.", - qadocs_logger.error) + qadocs_logger.error) else: # Check if the directory where the tests are located exist if parameters.tests_path: if not os.path.exists(parameters.tests_path): raise QAValueError(f"{parameters.tests_path} does not exist. Tests directory not found.", - qadocs_logger.error) + qadocs_logger.error) # Check that test_input name exists if parameters.test_names: @@ -284,7 +284,7 @@ def validate_parameters(parameters, parser): for test_name in parameters.test_names: if doc_check.locate_test(test_name) is None: raise QAValueError(f"{test_name} has not been not found in " - f"{parameters.tests_path}.", qadocs_logger.error) + f"{parameters.tests_path}.", qadocs_logger.error) # Check that the index exists if parameters.app_index_name: @@ -298,20 +298,20 @@ def validate_parameters(parameters, parser): for type in parameters.test_types: if type not in os.listdir(parameters.tests_path): raise QAValueError(f"The given type: {type}, not found in {parameters.tests_path}", - qadocs_logger.error) + qadocs_logger.error) # Check that modules selection is done within a test type if parameters.test_modules: if len(parameters.test_types) != 1: - raise QAValueError('The --modules option work when is only parsing a single test type. Use --types with ' - 'just one type if you want to parse some modules within a test type.', - qadocs_logger.error) + raise QAValueError('The --modules option work when is only parsing a single test type. Use --types with' + ' just one type if you want to parse some modules within a test type.', + qadocs_logger.error) for module in parameters.test_modules: - type_path = os.path.join(parameters.tests_path,parameters.test_types[0]) + type_path = os.path.join(parameters.tests_path, parameters.test_types[0]) if module not in os.listdir(type_path): raise QAValueError(f"The given module: {module}, not found in {type_path}", - qadocs_logger.error) + qadocs_logger.error) qadocs_logger.debug('Input parameters validation completed') @@ -344,7 +344,7 @@ def parse_data(args): qadocs_logger.info(f"Parsing the following test(s) {args.test_names}") docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_names=args.test_names, - check_doc=args.check_doc), OUTPUT_FORMAT) + check_doc=args.check_doc), OUTPUT_FORMAT) # Parse a list of test types elif args.test_types: @@ -398,7 +398,8 @@ def main(): set_parameters(args) validate_parameters(args, parser) - if args.validate_parameters: return 0 + if args.validate_parameters: + return 0 if args.run_with_docker: command = get_qa_docs_run_options(args) From 7a009832566f03bd60d8f28912744ed590f0ddfc Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 8 Nov 2021 11:16:20 +0100 Subject: [PATCH 046/108] add: Add set logging level option. --- .../wazuh_testing/scripts/qa_docs.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 4f7284d7af..29ddf20534 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -48,6 +48,9 @@ def set_parameters(args): if args.debug_level: set_qadocs_logger_level('DEBUG') + if args.logging_level: + set_qadocs_logger_level(args.logging_level) + # Deactivate the qa-docs logger if necessary. if args.no_logging: set_qadocs_logger_level(None) @@ -126,9 +129,13 @@ def get_parameters(): parser.add_argument('--qa-branch', dest='qa_branch', help='Specifies the qa branch that will be used as input for the tests to be parsed.') + parser.add_argument('--check-documentation', action='store_true', dest='check_doc', help="Checks if test(s) are correctly documentated according to qa-docs current schema.",) + parser.add_argument('--logging-level', dest='logging_level', + help="Checks if test(s) are correctly documentated according to qa-docs current schema.",) + return parser.parse_args(), parser @@ -235,6 +242,15 @@ def check_incompatible_parameters(parameters): raise QAValueError('You cannot specify debug level and no-logging at the same time.', qadocs_logger.error) + if parameters.logging_level: + if parameters.no_logging: + raise QAValueError('You cannot run qa-docs in no-logging mode and set a logging level.', + qadocs_logger.error) + + if parameters.debug_level: + raise QAValueError('You cannot run qa-docs in debug mode and set a logging level.', + qadocs_logger.error) + if parameters.run_with_docker: if not parameters.qa_branch: raise QAValueError('The docker container run needs a QA branch with the tests input.', From 3f8ba7243a0a40705cf0a5475c003671cdf532ea Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 8 Nov 2021 11:17:53 +0100 Subject: [PATCH 047/108] style: Fix `qa-docs` and `code_parser` style. --- deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py | 4 ++-- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 3f0f4c221e..214bb1d9b5 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -167,9 +167,9 @@ def parse_comment(self, function, doc_type, path): except Exception as inst: if hasattr(function, 'name'): CodeParser.LOGGER.error(f"Failed to parse test documentation in {function.name} " - "from module {self.scan_file}. Error: {inst}") + f"from module {self.scan_file}. Error: {inst}") raise QAValueError(f"Failed to parse test documentation in {function.name} " - "from module {self.scan_file}. Error: {inst}", CodeParser.LOGGER.error) + f"from module {self.scan_file}. Error: {inst}", CodeParser.LOGGER.error) else: CodeParser.LOGGER.error(f"Failed to parse module documentation in {self.scan_file}. Error: {inst}") raise QAValueError(f"Failed to parse module documentation in {self.scan_file}. Error: {inst}", diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 29ddf20534..cce4a1851d 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -245,11 +245,11 @@ def check_incompatible_parameters(parameters): if parameters.logging_level: if parameters.no_logging: raise QAValueError('You cannot run qa-docs in no-logging mode and set a logging level.', - qadocs_logger.error) + qadocs_logger.error) if parameters.debug_level: raise QAValueError('You cannot run qa-docs in debug mode and set a logging level.', - qadocs_logger.error) + qadocs_logger.error) if parameters.run_with_docker: if not parameters.qa_branch: From e7e517a6a47dacbb02d59d985563d497429dd31f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 8 Nov 2021 13:21:22 +0100 Subject: [PATCH 048/108] add: Add new `qa-docs` tags. The following tags have been added: - cdb - decoder - inactivity - logtest_configuration - logtest_invalid_rule_decoder_syntax - logtest_invalid_socket_input - logtest_invalid_token - logtest_log_process_options - logtest_remove_old_sessions - logtest_remove_session - logtest_rules_decoders_load - logtest_ruleset_refresh - session_error - session_limit These tags have been added becase `logtest` documentation uses them now. #1814 --- .../wazuh_testing/qa_docs/schema.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index f75f130617..aa3f20d67a 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -184,9 +184,11 @@ predefined_values: - aws - brute_force_attack - cache + - cdb - cluster - cors - cpe + - decoder - diff - disk_quota - dos_attack @@ -243,6 +245,7 @@ predefined_values: - gcloud_functionality - github - github_configuration + - inactivity - integrity - invalid_settings - keys @@ -253,6 +256,15 @@ predefined_values: - logcollector_configuration - logs - logtest + - logtest_configuration + - logtest_invalid_rule_decoder_syntax + - logtest_invalid_socket_input + - logtest_invalid_token + - logtest_log_process_options + - logtest_remove_old_sessions + - logtest_remove_session + - logtest_rules_decoders_load + - logtest_ruleset_refresh - man_in_the_middle - master - mitre @@ -269,6 +281,8 @@ predefined_values: - rules - scan - scheduled + - session_error + - session_limit - settings - simulator - ssl From d0488dbc37be9a056ceb03f18357a6af2019fe39 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 9 Nov 2021 09:22:05 +0100 Subject: [PATCH 049/108] doc: Update `qa-docs` `README.md`. --- deps/wazuh_testing/wazuh_testing/qa_docs/README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md index 8d3eaaddcf..305deab973 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md @@ -1,6 +1,8 @@ # Wazuh `qa-docs` Wazuh - Quality Assurance automation self-contained documentation parsing tool. +You can visit the `qa-docs` wiki entry for a complete guide. + ## Rational Wazuh QA documentation is designed to be self-contained into the source code of each test. @@ -30,12 +32,6 @@ Each test file has a header docstring that details information related to the wh And each test method inside the file will have a test documentation block with the specific information of this test. -Additional group information is parsed from the README files found in the repository. Each README file represents -a group and every test file at the same or lower folder level is considered as belonging to it. - -Also, groups could be nested, so a README file found under the level of a group will generate a new group that belongs -to the first one. - The specific content of each block is defined in the [Documentation schema section](https://github.com/wazuh/wazuh-qa/wiki/Documenting-tests-using-the-qadocs-schema) within the `qa-docs` wiki. From 7fae5f82455d46e93ca4baf2028ea81b467b5a37 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 10 Nov 2021 15:59:33 +0100 Subject: [PATCH 050/108] fix: Fix logging level parameter description. Also, `qa-docs` wiki entry link added to readme. --- deps/wazuh_testing/wazuh_testing/qa_docs/README.md | 2 +- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md index 305deab973..d228621ea4 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md @@ -1,7 +1,7 @@ # Wazuh `qa-docs` Wazuh - Quality Assurance automation self-contained documentation parsing tool. -You can visit the `qa-docs` wiki entry for a complete guide. +You can visit the `qa-docs` [wiki entry](https://github.com/wazuh/wazuh-qa/wiki/QADOCS-tool) for a complete guide. ## Rational Wazuh QA documentation is designed to be self-contained into the source code of each test. diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index cce4a1851d..7b4a6c19d9 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -134,7 +134,7 @@ def get_parameters(): help="Checks if test(s) are correctly documentated according to qa-docs current schema.",) parser.add_argument('--logging-level', dest='logging_level', - help="Checks if test(s) are correctly documentated according to qa-docs current schema.",) + help="Set the logging level.",) return parser.parse_args(), parser From ac25a6bb0e8b586dc1fbe5e3d8a9ffa6249e720f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 10 Nov 2021 16:26:41 +0100 Subject: [PATCH 051/108] refac: Remove deprecated requirements installation. The `qa-docs` requirements.txt was removed. --- .../wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile index 72e52e343e..9073153671 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile @@ -31,8 +31,7 @@ WORKDIR / RUN git clone https://github.com/wazuh/wazuh-qa -b 1864-qa-docs-fixes WORKDIR /wazuh-qa/ RUN python3 -m pip install --upgrade pip && \ - python3 -m pip install -r requirements.txt --ignore-installed && \ - python3 -m pip install -r deps/wazuh_testing/wazuh_testing/qa_docs/requirements.txt --ignore-installed + python3 -m pip install -r requirements.txt --ignore-installed # Install the QA framework WORKDIR /wazuh-qa/deps/wazuh_testing From 36aeef21db34e8d81b54e27a7c02dedc7cc7967c Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 18 Nov 2021 13:53:51 +0100 Subject: [PATCH 052/108] refac: Now when using `-o` option an `custom-path/output` folder is generated. #1864 So it only refreshes the parsed data. --- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 7b4a6c19d9..bb020f44a1 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -44,6 +44,11 @@ def set_qadocs_logger_level(logging_level): def set_parameters(args): + """Set the QADOCS parameters. + + Args: + args (argparse.Namespace): The parameters that the tool receives. + """ # Set the qa-docs logger level if args.debug_level: set_qadocs_logger_level('DEBUG') @@ -59,8 +64,8 @@ def set_parameters(args): global OUTPUT_PATH OUTPUT_PATH = os.path.join(gettempdir(), 'qa_docs') - if args.output_path: - OUTPUT_PATH = args.output_path + if args.output_path and not args.run_with_docker: + OUTPUT_PATH = os.path.join(args.output_path, 'output') if args.output_format: global OUTPUT_FORMAT From 5ebac901845c27026bb6893cd062e3c7b55b6097 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 23 Feb 2022 17:46:30 +0100 Subject: [PATCH 053/108] refac: Change some parameters names. #2588 - Change `modules` to `components` - Add `suites` parameter - Change `tests` to `modules` --- .../wazuh_testing/qa_docs/doc_generator.py | 130 ++++++++--------- .../wazuh_testing/qa_docs/lib/code_parser.py | 20 +-- .../wazuh_testing/qa_docs/lib/config.py | 63 +++++---- .../wazuh_testing/qa_docs/lib/index_data.py | 8 +- .../wazuh_testing/qa_docs/lib/pytest_wrap.py | 4 +- .../wazuh_testing/qa_docs/lib/utils.py | 21 +-- .../wazuh_testing/scripts/qa_docs.py | 131 +++++++++++------- 7 files changed, 210 insertions(+), 167 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index de30c62f7b..60a82156e8 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -18,8 +18,8 @@ class DocGenerator: """Main class of DocGenerator tool. - It is in charge of walk every test file, and every group file to dump the parsed documentation. - Every folder is checked so they are ignored when the path matches. Then, every test from folders not ignored + It is in charge of walk every module file, and every group file to dump the parsed documentation. + Every folder is checked so they are ignored when the path matches. Then, every module from folders not ignored that matches a include regex, is parsed. The included paths are generated using the types and modules from the wazuh-qa framework. @@ -27,7 +27,7 @@ class DocGenerator: Attributes: conf (Config): A `Config` instance with the loaded configuration. parser (CodeParser): A `CodeParser` instance with parsing utilities. - __id_counter (int): An integer that counts the test/group ID when it is created. + __id_counter (int): An integer that counts the module/group ID when it is created. ignore_regex (list): A list with compiled paths to be ignored. include_regex (list): A list with regular expressions used to parse a file or not. file_format (str): Generated documentation format. @@ -123,14 +123,14 @@ def get_group_doc_path(self, group): return doc_path - def get_test_doc_path(self, path): - """Get the name of the test file in the documentation output based on the original file name. + def get_module_doc_path(self, path): + """Get the name of the module file in the documentation output based on the original file name. Args: path (str): A string that contains the original file name. Returns: - doc_path (str): A string with the name of the documentation test file. + doc_path (str): A string with the name of the documentation module file. """ base_path = os.path.join(self.conf.documentation_path, os.path.basename(self.scan_path)) relative_path = path.replace(self.scan_path, "") @@ -144,7 +144,7 @@ def dump_output(self, content, doc_path): Also, create the containing folder if it does not exist. Args: - content (dict): A dict that contains the parsed content of a test file. + content (dict): A dict that contains the parsed content of a module file. doc_path (str): A string with the path where the information should be dumped. Raises: @@ -182,7 +182,7 @@ def create_group(self, path, group_id): Returns: __id.counter (int): An integer with the ID of the newly generated group document. - None if the test does not have documentation. + None if the module does not have documentation. """ self.__id_counter = self.__id_counter + 1 group = self.parser.parse_group(path, self.__id_counter, group_id) @@ -196,55 +196,55 @@ def create_group(self, path, group_id): DocGenerator.LOGGER.error(f"Content for {path} is empty, ignoring it") raise QAValueError(f"Content for {path} is empty, ignoring it", DocGenerator.LOGGER.error) - def create_test(self, path, group_id, test_name=None): - """Parse the content of a test file and dumps the content into a file. + def create_module(self, path, group_id, module_name=None): + """Parse the content of a module file and dumps the content into a file. Modes: - Single test: - When a single test is going to be parsed, if it has not an output directory, the content is printed. + Single module: + When a single module is going to be parsed, if it has not an output directory, the content is printed. If it has an output dir, the content is dumped into that dir. Default: The content is dumped into the corresponding directory. Args: - path (str): A string with the path of the test file to be parsed. - group_id (str): A string with the id of the group where the new test belongs. - test_name (str): A string with the name of the test that is going to be parsed. + path (str): A string with the path of the module file to be parsed. + group_id (str): A string with the id of the group where the new module belongs. + module_name (str): A string with the name of the module that is going to be parsed. Returns: - __id.counter (int): An integer with the ID of the new generated test document. - None if the test does not have documentation. + __id.counter (int): An integer with the ID of the new generated module document. + None if the module does not have documentation. """ self.__id_counter = self.__id_counter + 1 - test = self.parser.parse_test(path, self.__id_counter, group_id) + tests = self.parser.parse_module(path, self.__id_counter, group_id) - if test: + if tests: if self.conf.mode == Mode.DEFAULT: - doc_path = self.get_test_doc_path(path) + doc_path = self.get_module_doc_path(path) - self.dump_output(test, doc_path) + self.dump_output(tests, doc_path) DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' " f"was created with ID:{self.__id_counter}") return self.__id_counter - elif self.conf.mode == Mode.PARSE_TESTS: + elif self.conf.mode == Mode.PARSE_MODULES: # If qa-docs is run with --check-doc flag then the output files wont be generated if self.conf.check_doc: return if self.conf.documentation_path: doc_path = self.conf.documentation_path - doc_path = os.path.join(doc_path, test_name) + doc_path = os.path.join(doc_path, module_name) - self.dump_output(test, doc_path) + self.dump_output(tests, doc_path) DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' was created.") else: DocGenerator.LOGGER.error(f"Content for {path} is empty, ignoring it") raise QAValueError(f"Content for {path} is empty, ignoring it", DocGenerator.LOGGER.error) def parse_folder(self, path, group_id): - """Search in a specific folder to parse possible group files and each test file. + """Search in a specific folder to parse possible group files and each module file. Args: path (str): A string with the path of the folder to be parsed. @@ -267,86 +267,86 @@ def parse_folder(self, path, group_id): for file in files: if self.is_valid_file(file): - self.create_test(os.path.join(root, file), group_id) + self.create_module(os.path.join(root, file), group_id) for folder in folders: self.parse_folder(os.path.join(root, folder), group_id) - def parse_test_list(self): - """Parse the tests that the user has specified.""" - for test_name in self.conf.test_names: - self.test_path = self.locate_test(test_name) + def parse_module_list(self): + """Parse the modules that the user has specified.""" + for module in self.conf.test_modules: + self.module_path = self.locate_module(module) - if self.test_path: - self.create_test(self.test_path, 0, test_name) + if self.module_path: + self.create_module(self.module_path, 0, module) else: - DocGenerator.LOGGER.error(f"'{test_name}' could not be found") - raise QAValueError(f"'{test_name}' could not be found", DocGenerator.LOGGER.error) + DocGenerator.LOGGER.error(f"'{module}' could not be found") + raise QAValueError(f"'{module}' could not be found", DocGenerator.LOGGER.error) - def locate_test(self, test_name): - """Get the test path when a test is specified by the user. + def locate_module(self, module_name): + """Get the module path when a module is specified by the user. Returns: - str: A string with the test path. + str: A string with the module path. """ - complete_test_name = f"{test_name}.py" - DocGenerator.LOGGER.info(f"Looking for {complete_test_name}") + complete_module_name = f"{module_name}.py" + DocGenerator.LOGGER.info(f"Looking for {complete_module_name}") for root, dirnames, filenames in os.walk(self.conf.project_path, topdown=True): for filename in filenames: - if filename == complete_test_name: - return os.path.join(root, complete_test_name) + if filename == complete_module_name: + return os.path.join(root, complete_module_name) return None - def check_test_exists(self, path): - """Check that a test exists within the tests path input. + def check_module_exists(self, path): + """Check that a module exists within the modules path input. Args: - path (str): A string with the tests path. + path (str): A string with the modules path. """ - for test_name in self.conf.test_names: - if self.locate_test(test_name): - print(f'{test_name} exists in {path}') + for module in self.conf.test_modules: + if self.locate_module(module): + print(f'{module} exists in {path}') else: - print(f'{test_name} does not exist in {path}') + print(f'{module} does not exist in {path}') def check_documentation(self): - for test_name in self.conf.test_names: - test_path = self.locate_test(test_name) + for module in self.conf.test_modules: + module_path = self.locate_module(module) try: - test = self.parser.parse_test(test_path, self.__id_counter, 0) + test = self.parser.parse_module(module_path, self.__id_counter, 0) except Exception as qaerror: test = None - print(f"{test_name} is not documented using qa-docs current schema") + print(f"{module} is not documented using qa-docs current schema") if test: - print(f"{test_name} is documented using qa-docs current schema") + print(f"{module} is documented using qa-docs current schema") - def print_test_info(self, test): - """Print the test info to standard output. + def print_module_info(self, module): + """Print the module info to standard output. Args: - test: A dict with the parsed test data + module: A dict with the parsed module data """ - relative_path = re.sub(r'.*wazuh-qa\/', '', self.test_path) - test['path'] = relative_path + relative_path = re.sub(r'.*wazuh-qa\/', '', self.module_path) + module['path'] = relative_path - print(json.dumps(test, indent=4)) + print(json.dumps(module, indent=4)) def run(self): - """Run a complete scan of each included path to parse every test and group found. + """Run a complete scan of each included path to parse every module and group found. Default mode: parse the files within the included paths. - Single test mode: found the test required and parse it. + Single module mode: found the module required and parse it. For example: qa-docs -I ../../tests/ -> It would be running as `default mode`. - qa-docs -I ../../tests/ -T test_cache -> It would be running as `single test mode` + qa-docs -I ../../tests/ -m test_cache -> It would be running as `single module mode` using the standard output - qa-docs -I ../../tests/ -T test_cache -o /tmp -> It would be running as `single test mode` + qa-docs -I ../../tests/ -m test_cache -o /tmp -> It would be running as `single module mode` creating `/tmp/test_cache.json` """ if self.conf.mode == Mode.DEFAULT: @@ -357,8 +357,8 @@ def run(self): DocGenerator.LOGGER.debug(f"Going to parse files on '{path}'") self.parse_folder(path, self.__id_counter) - elif self.conf.mode == Mode.PARSE_TESTS: - self.parse_test_list() + elif self.conf.mode == Mode.PARSE_MODULES: + self.parse_module_list() if not self.conf.check_doc: DocGenerator.LOGGER.info(f"Run completed, documentation location: {self.conf.documentation_path}") diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 214bb1d9b5..87708fa093 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -18,7 +18,7 @@ class CodeParser: - """Class that parses the content of the test files. + """Class that parses the content of the module files. Attributes: conf (Config): A `Config` instance with the loaded configuration. @@ -56,7 +56,7 @@ def is_documentable_function(self, function): return False def remove_ignored_fields(self, doc): - """Remove the fields from a parsed test file to delete the fields that are not mandatory or optional. + """Remove the fields from a parsed module file to delete the fields that are not mandatory or optional. It may disappear because the fields that are parsed and not specified in the `qa-docs` schema raise an error. @@ -181,18 +181,18 @@ def parse_comment(self, function, doc_type, path): return doc - def parse_test(self, path, id, group_id): - """Parse the content of a test file. + def parse_module(self, path, id, group_id): + """Parse the content of a module file. Args: - path (str): A string with the path of the test file to be parsed. - id (str): An integer with the ID of the new test document. - group_id (int): An integer with the ID of the group where the new test document belongs. + path (str): A string with the path of the module file to be parsed. + id (str): An integer with the ID of the new module document. + group_id (int): An integer with the ID of the group where the new module document belongs. Returns: module_doc (dict): A dictionary with the documentation block parsed with module and tests fields. """ - CodeParser.LOGGER.debug(f"Parsing test file '{path}'") + CodeParser.LOGGER.debug(f"Parsing module file '{path}'") self.scan_file = path with open(path) as fd: file_content = fd.read() @@ -253,8 +253,8 @@ def parse_group(self, group_file, id, group_id): Args: group_file (str): A string with the path of the group file to be parsed. - id (int): An integer with the ID of the new test document. - group_id (int): An integer with the ID of the group where the new test document belongs. + id (int): An integer with the ID of the new module document. + group_id (int): An integer with the ID of the group where the new module document belongs. Returns: group_doc (dict): A dictionary with the parsed information from `group_file`. diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py index 07d342a6b7..26294be551 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py @@ -32,32 +32,31 @@ class Config(): module_fields (_fields): A struct that contains the module documentation data. test_fields (_fields): A struct that contains the test documentation data. test_types (list): A list with the types to be parsed. - test_modules (list): A list with the modules to be parsed. - test_names (list): A list with the tests to be parsed. + test_components (list): A list with the modules to be parsed. + test_modules (list): A list with the tests to be parsed. LOGGER (_fields): A custom qa-docs logger. """ LOGGER = Logging.get_logger(QADOCS_LOGGER) - def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_modules=None, test_names=None, - check_doc=False): + def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_components=None, test_suites=None, + test_modules=None, check_doc=False): """Constructor that loads the schema file and set the `qa-docs` configuration. - If a test name is passed, it would be run in `single test mode`. - And if an output path is not received, when is running in single test mode, it will be printed using the + If a module name is passed, it would be run in `single module mode`. + And if an output path is not received, when is running in single module mode, it will be printed using the standard output. But if an output path is passed, there will be generated a JSON file with the same data that - would be printed in `single test` mode. + would be printed in `single module` mode. The default output path for `default mode` is `qa_docs_installation/output`, it cannot be changed. Args: schema_path (str): A string that contains the schema file path. - test_dir (str): A string that contains the path of the tests. + module_dir (str): A string that contains the path of the modules. output_path (str): A string that contains the doc output path. - test_types (list): A list that contains the tests type(s) to be parsed. test_types (list): A list that contains the test type(s) that the user specifies. - test_modules (list): A list that contains the test module(s) that the user specifies. - test_names (list): A list that contains the test name(s) that the user specifies. - check_dock (boolean): Flag to indicate if the test specified (with -t parameter) is documented. + test_components (list): A list that contains the test component(s) that the user specifies. + test_modules (list): A list that contains the test name(s) that the user specifies. + check_dock (boolean): Flag to indicate if the test specified (with -m parameter) is documented. """ self.mode = Mode.DEFAULT self.project_path = test_dir @@ -69,7 +68,8 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ self.module_fields = _fields() self.test_fields = _fields() self.test_types = [] - self.test_modules = [] + self.test_components = [] + self.test_suites = [] self.predefined_values = {} self.check_doc = check_doc @@ -78,18 +78,21 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ self.__set_documentation_path(output_path.replace('\\', '/')) self.__read_predefined_values() - if test_names is not None: - # When a name is passed, it is using just a single test. - self.mode = Mode.PARSE_TESTS - self.test_names = test_names + if test_modules is not None: + # When a name is passed, it is using just a single module. + self.mode = Mode.PARSE_MODULES + self.test_modules = test_modules if test_types is None: self.__get_test_types() else: self.test_types = test_types - if test_modules: - self.test_modules = test_modules + if test_components: + self.test_components = test_components + + if test_suites: + self.test_suites = test_suites # Get the paths to parse self.__get_include_paths() @@ -106,19 +109,21 @@ def __get_test_types(self): self.test_types.append(name) def __get_include_paths(self): - """Get all the modules to include within all the specified types. - - The paths to be included are generated using this info. - """ + """Get all the components and suites to include within all the specified types.""" dir_regex = re.compile("test_.") self.include_paths = [] for type in self.test_types: subset_tests = os.path.join(self.project_path, type) - if self.test_modules: - for name in self.test_modules: - self.include_paths.append(os.path.join(subset_tests, name)) + if self.test_components: + if self.test_suites: + for component in self.test_components: + for suite in self.test_suites: + self.include_paths.append(os.path.join(subset_tests, component, suite)) + else: + for component in self.test_components: + self.include_paths.append(os.path.join(subset_tests, component)) else: for name in os.listdir(subset_tests): if os.path.isdir(os.path.join(subset_tests, name)) and dir_regex.match(name): @@ -242,8 +247,8 @@ class Mode(Enum): The current modes that `doc_generator` has are these: Modes: - DEFAULT: `default mode` parses all tests within tests directory. - PARSE_TESTS: `single tests mode` parses a list of tests. + DEFAULT: `default mode` parses all modules within tests directory. + PARSE_MODULES: `single modules mode` parses a list of modules. For example, if you want to declare that it is running thru all tests directory, you must specify it by: @@ -253,4 +258,4 @@ class Mode(Enum): Enum (Class): Base class for creating enumerated constants. """ DEFAULT = 1 - PARSE_TESTS = 2 + PARSE_MODULES = 2 diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py index 199dfde2df..d56850667e 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py @@ -83,13 +83,13 @@ def read_files_content(self, files): """ if self.files_format == 'json': for file in files: - with open(file, 'r') as test_file: - lines = json.load(test_file) + with open(file, 'r') as module_file: + lines = json.load(module_file) self.output.append(lines) else: for file in files: - with open(file, 'r') as test_file: - lines = yaml.load(test_file, Loader=yaml.FullLoader) + with open(file, 'r') as module_file: + lines = yaml.load(module_file, Loader=yaml.FullLoader) self.output.append(lines) def remove_index(self): diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py index 92b176a473..32d834f8a3 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py @@ -41,10 +41,10 @@ def __init__(self): self.plugin = PytestPlugin() def collect_test_cases(self, path): - """Execute pytest in 'collect-only' mode to extract all the test cases found for a test file. + """Execute pytest in 'collect-only' mode to extract all the test cases found for a module file. Args: - path (str): A string with the path of the test file to extract the test cases. + path (str): A string with the path of the module file to extract the test cases. Returns: outpout (dict): A dictionary that contains the pytest parsed output. diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 823d12f029..1d16b9a0d6 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -301,13 +301,18 @@ def get_qa_docs_run_options(args): command += ' --types' for type in args.test_types: command += f" {type}" - if args.test_modules: - command += ' --modules' - for modules in args.test_modules: - command += f" {modules} " - elif args.test_names: - command += ' -t' - for test_name in args.test_names: - command += f" {test_name} " + if args.test_components: + command += ' --components' + for components in args.test_components: + command += f" {components} " + if args.test_suites: + command += ' --suites' + for suite in args.test_suites: + command += f" {suite} " + + elif args.test_modules: + command += ' -m' + for module in args.test_modules: + command += f" {module} " return command diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index f92bea322b..3438f425e8 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -92,7 +92,7 @@ def get_parameters(): parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS, help='Show this help message and exit.') - parser.add_argument('-s', '--sanity-check', action='store_true', dest='sanity', + parser.add_argument('--sanity-check', action='store_true', dest='sanity', help="Run a sanity check.") parser.add_argument('--no-logging', action='store_true', dest='no_logging', @@ -104,17 +104,20 @@ def get_parameters(): parser.add_argument('-d', '--debug', action='count', dest='debug_level', help="Enable debug messages.") - parser.add_argument('--tests-path', dest='tests_path', + parser.add_argument('-p', '--tests-path', dest='tests_path', help="Path where tests are located.") - parser.add_argument('-t', '--tests', nargs='+', default=[], dest='test_names', - help="Parse the test(s) that you pass as argument.") - - parser.add_argument('--types', nargs='+', default=[], dest='test_types', + parser.add_argument('-t', '--types', nargs='+', default=[], dest='test_types', help="Parse the tests from type(s) that you pass as argument.") - parser.add_argument('--modules', nargs='+', default=[], dest='test_modules', - help="Parse the tests from modules(s) that you pass as argument.") + parser.add_argument('-c', '--components', nargs='+', default=[], dest='test_components', + help="Parse the tests from components(s) that you pass as argument.") + + parser.add_argument('-s', '--suites', nargs='+', default=[], dest='test_suites', + help="Parse the tests from suite(s) that you pass as argument.") + + parser.add_argument('-m', '--modules', nargs='+', default=[], dest='test_modules', + help="Parse the test(s) that you pass as argument.") parser.add_argument('-i', '--index-data', dest='index_name', help="Indexes the data named as you specify as argument to elasticsearch.") @@ -158,9 +161,9 @@ def check_incompatible_parameters(parameters): Args: parameters (argparse.Namespace): The parameters that the tool receives. """ - default_run = parameters.test_types or parameters.test_modules + default_run = parameters.test_types or parameters.test_components or parameters.test_suites api_run = parameters.index_name or parameters.app_index_name or parameters.launching_index_name - test_run = parameters.test_names or parameters.test_exist + test_run = parameters.test_modules or parameters.test_exist qadocs_logger.debug('Checking parameters incompatibilities.') @@ -175,53 +178,63 @@ def check_incompatible_parameters(parameters): if parameters.tests_path is None: raise QAValueError('The -s(--sanity-check) option needs the path to the tests to be parsed. You must ' - 'specify it by using -I, --tests-path', + 'specify it by using --tests-path', qadocs_logger.error) if parameters.test_types: if parameters.tests_path is None and not parameters.run_with_docker: raise QAValueError('The --types option needs the path to the tests to be parsed. You must specify it by ' - 'using -I, --tests-path', + 'using --tests-path', qadocs_logger.error) - if parameters.test_names: - raise QAValueError('The --types option is not compatible with -t(--test)', + if parameters.test_modules: + raise QAValueError('The --types option is not compatible with -t(--modules)', qadocs_logger.error) if parameters.test_exist: raise QAValueError('The --types option is not compatible with -e(--exist)', qadocs_logger.error) - if parameters.test_modules: + if parameters.test_components: if parameters.tests_path is None and not parameters.run_with_docker: - raise QAValueError('The --modules option needs the path to the tests to be parsed. You must specify it by ' - 'using -I, --tests-path', + raise QAValueError('The --components option needs the path to the tests to be parsed. You must specify it by ' + 'using --tests-path', qadocs_logger.error) - if parameters.test_names: - raise QAValueError('The --modules option is not compatible with -t(--test)', + if parameters.test_modules: + raise QAValueError('The --components option is not compatible with -m(--modules)', qadocs_logger.error) if parameters.test_exist: - raise QAValueError('The --modules option is not compatible with -e(--exist)', + raise QAValueError('The --components option is not compatible with -e(--exist)', qadocs_logger.error) - if parameters.test_names: + if parameters.test_suites: + if not parameters.test_components: + raise QAValueError('The --suites option needs the suite module to be parsed. You must specify it ' + 'using --components', + qadocs_logger.error) + + if parameters.test_exist: + raise QAValueError('The --suites option is not compatible with -e(--exist)', + qadocs_logger.error) + + if parameters.test_modules: if parameters.tests_path is None and not parameters.run_with_docker: - raise QAValueError('The -t(--test) option needs the path to the tests to be parsed. You must specify it by' - ' using -I, --tests-path', + raise QAValueError('The -m(--modules) option needs the path to the tests to be parsed. You must specify it ' + 'using --tests-path', qadocs_logger.error) if parameters.index_name: - raise QAValueError('The -t(--test) option is not compatible with -i option', + raise QAValueError('The -m(--modules) option is not compatible with -i option', qadocs_logger.error) if parameters.app_index_name: - raise QAValueError('The -t(--test) option is not compatible with -l option', + raise QAValueError('The -m(--modules) option is not compatible with -l option', qadocs_logger.error) if parameters.launching_index_name: - raise QAValueError('The -t(--test) option is not compatible with -il option', + raise QAValueError('The -m(--modules) option is not compatible with -il option', qadocs_logger.error) if parameters.test_exist: @@ -307,11 +320,11 @@ def validate_parameters(parameters, parser): qadocs_logger.error) # Check that test_input name exists - if parameters.test_names: - doc_check = DocGenerator(Config(SCHEMA_PATH, parameters.tests_path, test_names=parameters.test_names)) + if parameters.test_modules: + doc_check = DocGenerator(Config(SCHEMA_PATH, parameters.tests_path, test_modules=parameters.test_modules)) - for test_name in parameters.test_names: - if doc_check.locate_test(test_name) is None: + for test_name in parameters.test_modules: + if doc_check.locate_module(test_name) is None: raise QAValueError(f"{test_name} has not been not found in " f"{parameters.tests_path}.", qadocs_logger.error) @@ -329,18 +342,30 @@ def validate_parameters(parameters, parser): raise QAValueError(f"The given type: {type}, not found in {parameters.tests_path}", qadocs_logger.error) - # Check that modules selection is done within a test type - if parameters.test_modules: + # Check that components selection is done within a test type + if parameters.test_components: if len(parameters.test_types) != 1: - raise QAValueError('The --modules option work when is only parsing a single test type. Use --types with' - ' just one type if you want to parse some modules within a test type.', + raise QAValueError('The --components option work when is only parsing a single test type. Use --types with' + ' just one type if you want to parse some components within a test type.', qadocs_logger.error) - for module in parameters.test_modules: + if parameters.test_suites: + if len(parameters.test_components) != 1: + raise QAValueError('The --suites option work when is only parsing a single test module. Use ' + '--components with just one type if you want to parse some components within a test ' + 'type.', qadocs_logger.error) + + for module in parameters.test_components: type_path = os.path.join(parameters.tests_path, parameters.test_types[0]) if module not in os.listdir(type_path): raise QAValueError(f"The given module: {module}, not found in {type_path}", qadocs_logger.error) + + for suite in parameters.test_suites: + module_path = os.path.join(parameters.tests_path, parameters.test_types[0], module) + if suite not in os.listdir(module_path): + raise QAValueError(f"The given suite: {suite}, not found in {module_path}", + qadocs_logger.error) qadocs_logger.debug('Input parameters validation completed') @@ -348,7 +373,7 @@ def validate_parameters(parameters, parser): def install_searchui_deps(): """Install SearchUI dependencies if needed""" os.chdir(SEARCH_UI_PATH) - if not os.path.exists(os.path.join(SEARCH_UI_PATH, 'node_modules')): + if not os.path.exists(os.path.join(SEARCH_UI_PATH, 'node_components')): qadocs_logger.info('Installing SearchUI dependencies') run_local_command("npm install") @@ -364,26 +389,33 @@ def run_searchui(index): def parse_data(args): """Parse the tests and collect the data.""" if args.test_exist: - doc_check = DocGenerator(Config(SCHEMA_PATH, args.tests_path, '', test_names=args.test_exist)) + doc_check = DocGenerator(Config(SCHEMA_PATH, args.tests_path, '', test_modules=args.test_exist)) - doc_check.check_test_exists(args.tests_path) + doc_check.check_module_exists(args.tests_path) - # Parse a list of tests - elif args.test_names: - qadocs_logger.info(f"Parsing the following test(s) {args.test_names}") + # Parse a list of modules + elif args.test_modules: + qadocs_logger.info(f"Parsing the following test(s) {args.test_modules}") - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_names=args.test_names, + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_modules=args.test_modules, check_doc=args.check_doc), OUTPUT_FORMAT) # Parse a list of test types elif args.test_types: qadocs_logger.info(f"Parsing the following test(s) type(s): {args.test_types}") - # Parse a list of test modules - if args.test_modules: - qadocs_logger.info(f"Parsing the following test(s) modules(s): {args.test_modules}") - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, - args.test_modules), OUTPUT_FORMAT) + # Parse a list of test components + if args.test_components: + qadocs_logger.info(f"Parsing the following test(s) components(s): {args.test_components}") + + if args.test_suites: + qadocs_logger.info(f"Parsing the following suite(s): {args.test_suites}") + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, + args.test_components, args.test_suites), OUTPUT_FORMAT) + else: + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, + args.test_components), OUTPUT_FORMAT) + else: docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types), OUTPUT_FORMAT) @@ -394,10 +426,10 @@ def parse_data(args): docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH), OUTPUT_FORMAT) docs.run() - if args.test_types or args.test_modules or args.test_names and not args.check_doc: + if args.test_types or args.test_components or args.test_modules and not args.check_doc: qadocs_logger.info('Running QADOCS') docs.run() - elif args.test_names and args.check_doc: + elif args.test_modules and args.check_doc: docs.check_documentation() @@ -432,6 +464,7 @@ def main(): if args.run_with_docker: command = get_qa_docs_run_options(args) + qadocs_logger.info(f"Running {command} in a docker container.") qa_docs_docker_run(args.qa_branch, command, OUTPUT_PATH) elif args.version: with open(VERSION_PATH, 'r') as version_file: From 7c3449ccd490196d3d442f48e3e0fb4fbfde5fcd Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 24 Feb 2022 10:19:09 +0100 Subject: [PATCH 054/108] refac: Adapt `-m` parameter to the framework changes. #2588 Now, it is needed the suite, the component and, the type when you want to parse a single module because there are modules with the same name since the new framework changes. --- .../wazuh_testing/qa_docs/doc_generator.py | 42 +++++-------- .../wazuh_testing/qa_docs/lib/config.py | 23 ++++--- .../wazuh_testing/scripts/qa_docs.py | 63 +++++++++---------- 3 files changed, 58 insertions(+), 70 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index 60a82156e8..902c9d7096 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -50,9 +50,8 @@ def __init__(self, config, file_format='json'): for ignore_regex in self.conf.ignore_paths: self.ignore_regex.append(re.compile(ignore_regex.replace('\\', '/'))) self.include_regex = [] - if self.conf.mode == Mode.DEFAULT: - for include_regex in self.conf.include_regex: - self.include_regex.append(re.compile(include_regex.replace('\\', '/'))) + for include_regex in self.conf.include_regex: + self.include_regex.append(re.compile(include_regex.replace('\\', '/'))) self.file_format = file_format def is_valid_folder(self, path): @@ -220,25 +219,12 @@ def create_module(self, path, group_id, module_name=None): tests = self.parser.parse_module(path, self.__id_counter, group_id) if tests: - if self.conf.mode == Mode.DEFAULT: - doc_path = self.get_module_doc_path(path) - - self.dump_output(tests, doc_path) - DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' " - f"was created with ID:{self.__id_counter}") - return self.__id_counter - - elif self.conf.mode == Mode.PARSE_MODULES: - # If qa-docs is run with --check-doc flag then the output files wont be generated - if self.conf.check_doc: - return - - if self.conf.documentation_path: - doc_path = self.conf.documentation_path - doc_path = os.path.join(doc_path, module_name) + doc_path = self.get_module_doc_path(path) - self.dump_output(tests, doc_path) - DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' was created.") + self.dump_output(tests, doc_path) + DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' " + f"was created with ID:{self.__id_counter}") + return self.__id_counter else: DocGenerator.LOGGER.error(f"Content for {path} is empty, ignoring it") raise QAValueError(f"Content for {path} is empty, ignoring it", DocGenerator.LOGGER.error) @@ -274,14 +260,14 @@ def parse_folder(self, path, group_id): def parse_module_list(self): """Parse the modules that the user has specified.""" - for module in self.conf.test_modules: - self.module_path = self.locate_module(module) - - if self.module_path: - self.create_module(self.module_path, 0, module) + for module_index in range(len(self.conf.include_paths)): + if self.is_valid_file(f"{self.conf.test_modules[module_index]}.py"): + self.scan_path = self.conf.include_paths[module_index] + self.create_module(self.conf.include_paths[module_index], 0) else: - DocGenerator.LOGGER.error(f"'{module}' could not be found") - raise QAValueError(f"'{module}' could not be found", DocGenerator.LOGGER.error) + DocGenerator.LOGGER.error(f"'{self.conf.test_modules[module_index]}' not a valid module file.") + raise QAValueError(f"'{self.conf.test_modules[module_index]}' not a valid module file.", + DocGenerator.LOGGER.error) def locate_module(self, module_name): """Get the module path when a module is specified by the user. diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py index 26294be551..31e8575ae0 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py @@ -70,6 +70,7 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ self.test_types = [] self.test_components = [] self.test_suites = [] + self.test_modules = [] self.predefined_values = {} self.check_doc = check_doc @@ -78,11 +79,6 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ self.__set_documentation_path(output_path.replace('\\', '/')) self.__read_predefined_values() - if test_modules is not None: - # When a name is passed, it is using just a single module. - self.mode = Mode.PARSE_MODULES - self.test_modules = test_modules - if test_types is None: self.__get_test_types() else: @@ -94,6 +90,10 @@ def __init__(self, schema_path, test_dir, output_path='', test_types=None, test_ if test_suites: self.test_suites = test_suites + if test_modules: + self.mode = Mode.PARSE_MODULES + self.test_modules = test_modules + # Get the paths to parse self.__get_include_paths() @@ -118,9 +118,16 @@ def __get_include_paths(self): if self.test_components: if self.test_suites: - for component in self.test_components: - for suite in self.test_suites: - self.include_paths.append(os.path.join(subset_tests, component, suite)) + if self.test_modules: + for component in self.test_components: + for suite in self.test_suites: + for module in self.test_modules: + self.include_paths.append(os.path.join(subset_tests, component, suite, + f"{module}.py")) + else: + for component in self.test_components: + for suite in self.test_suites: + self.include_paths.append(os.path.join(subset_tests, component, suite)) else: for component in self.test_components: self.include_paths.append(os.path.join(subset_tests, component)) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 3438f425e8..54b9cdeb9a 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -161,9 +161,10 @@ def check_incompatible_parameters(parameters): Args: parameters (argparse.Namespace): The parameters that the tool receives. """ - default_run = parameters.test_types or parameters.test_components or parameters.test_suites + default_run = parameters.test_types or parameters.test_components or parameters.test_suites or \ + parameters.test_modules api_run = parameters.index_name or parameters.app_index_name or parameters.launching_index_name - test_run = parameters.test_modules or parameters.test_exist + test_run = parameters.test_exist qadocs_logger.debug('Checking parameters incompatibilities.') @@ -187,10 +188,6 @@ def check_incompatible_parameters(parameters): 'using --tests-path', qadocs_logger.error) - if parameters.test_modules: - raise QAValueError('The --types option is not compatible with -t(--modules)', - qadocs_logger.error) - if parameters.test_exist: raise QAValueError('The --types option is not compatible with -e(--exist)', qadocs_logger.error) @@ -201,10 +198,6 @@ def check_incompatible_parameters(parameters): 'using --tests-path', qadocs_logger.error) - if parameters.test_modules: - raise QAValueError('The --components option is not compatible with -m(--modules)', - qadocs_logger.error) - if parameters.test_exist: raise QAValueError('The --components option is not compatible with -e(--exist)', qadocs_logger.error) @@ -319,15 +312,6 @@ def validate_parameters(parameters, parser): raise QAValueError(f"{parameters.tests_path} does not exist. Tests directory not found.", qadocs_logger.error) - # Check that test_input name exists - if parameters.test_modules: - doc_check = DocGenerator(Config(SCHEMA_PATH, parameters.tests_path, test_modules=parameters.test_modules)) - - for test_name in parameters.test_modules: - if doc_check.locate_module(test_name) is None: - raise QAValueError(f"{test_name} has not been not found in " - f"{parameters.tests_path}.", qadocs_logger.error) - # Check that the index exists if parameters.app_index_name: es = Elasticsearch() @@ -355,18 +339,25 @@ def validate_parameters(parameters, parser): '--components with just one type if you want to parse some components within a test ' 'type.', qadocs_logger.error) - for module in parameters.test_components: + for component in parameters.test_components: type_path = os.path.join(parameters.tests_path, parameters.test_types[0]) - if module not in os.listdir(type_path): - raise QAValueError(f"The given module: {module}, not found in {type_path}", + if component not in os.listdir(type_path): + raise QAValueError(f"The given component: {component}, not found in {type_path}", qadocs_logger.error) for suite in parameters.test_suites: - module_path = os.path.join(parameters.tests_path, parameters.test_types[0], module) - if suite not in os.listdir(module_path): - raise QAValueError(f"The given suite: {suite}, not found in {module_path}", + component_path = os.path.join(type_path, component) + if suite not in os.listdir(component_path): + raise QAValueError(f"The given suite: {suite}, not found in {component_path}", qadocs_logger.error) + for module in parameters.test_modules: + suite_path = os.path.join(component_path, suite) + module_file = f"{module}.py" + if module_file not in os.listdir(suite_path): + raise QAValueError(f"The given module: {module_file}, not found in {suite_path}", + qadocs_logger.error) + qadocs_logger.debug('Input parameters validation completed') @@ -393,13 +384,6 @@ def parse_data(args): doc_check.check_module_exists(args.tests_path) - # Parse a list of modules - elif args.test_modules: - qadocs_logger.info(f"Parsing the following test(s) {args.test_modules}") - - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, test_modules=args.test_modules, - check_doc=args.check_doc), OUTPUT_FORMAT) - # Parse a list of test types elif args.test_types: qadocs_logger.info(f"Parsing the following test(s) type(s): {args.test_types}") @@ -410,13 +394,24 @@ def parse_data(args): if args.test_suites: qadocs_logger.info(f"Parsing the following suite(s): {args.test_suites}") - docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, - args.test_components, args.test_suites), OUTPUT_FORMAT) + + if args.test_modules: + qadocs_logger.info(f"Parsing the following modules(s): {args.test_modules}") + + # Parse specified modules + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, + args.test_components, args.test_suites, args.test_modules), OUTPUT_FORMAT) + else: + # Parse specified suites + docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, + args.test_components, args.test_suites), OUTPUT_FORMAT) else: + # Parse specified components docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, args.test_components), OUTPUT_FORMAT) else: + # Parse all type of tests docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types), OUTPUT_FORMAT) # Parse the whole path From a31f010059fedc1d4d7718a75e5c5b0b0b93ed91 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 17:55:37 +0100 Subject: [PATCH 055/108] doc: Update active response documentation with new schema changes. #2591 --- .../test_analysisd/test_os_exec.py | 24 +++++++----------- .../test_execd/test_execd_firewall_drop.py | 25 +++++++------------ .../test_execd/test_execd_restart.py | 24 +++++++----------- 3 files changed, 27 insertions(+), 46 deletions(-) diff --git a/tests/integration/test_active_response/test_analysisd/test_os_exec.py b/tests/integration/test_active_response/test_analysisd/test_os_exec.py index 552f829655..0f0e507ef5 100644 --- a/tests/integration/test_active_response/test_analysisd/test_os_exec.py +++ b/tests/integration/test_active_response/test_analysisd/test_os_exec.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ to an agent from the threat source when certain criteria are met. These tests will check if the 'wazuh-analysisd' daemon processes 'active response' messages correctly. -tier: 0 - -modules: +components: - active_response -components: +suite: analysisd + +targets: - manager daemons: @@ -31,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/active-response/#active-response @@ -407,6 +399,8 @@ def test_os_exec(set_debug_mode, get_configuration, configure_environment, resta wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_debug_mode: type: fixture diff --git a/tests/integration/test_active_response/test_execd/test_execd_firewall_drop.py b/tests/integration/test_active_response/test_execd/test_execd_firewall_drop.py index 946b6bc102..fb21040c66 100644 --- a/tests/integration/test_active_response/test_execd/test_execd_firewall_drop.py +++ b/tests/integration/test_active_response/test_execd/test_execd_firewall_drop.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ based on the alert level or rule group. These tests will check if the 'active responses', which are executed by the 'wazuh-execd' daemon via scripts, run correctly. -tier: 0 - -modules: +components: - active_response -components: +suite: execd + +targets: - agent daemons: @@ -32,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/active-response/#active-response @@ -148,7 +140,6 @@ def start_agent(request, get_configuration): remoted_simulator.stop() authd_simulator.shutdown() - @pytest.fixture(scope="function") def remove_ip_from_iptables(request, get_configuration): """Remove the testing IP address from `iptables` if it exists. @@ -246,6 +237,8 @@ def test_execd_firewall_drop(set_debug_mode, get_configuration, test_version, co wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_debug_mode: type: fixture diff --git a/tests/integration/test_active_response/test_execd/test_execd_restart.py b/tests/integration/test_active_response/test_execd/test_execd_restart.py index 71365e0021..5edc94cfba 100644 --- a/tests/integration/test_active_response/test_execd/test_execd_restart.py +++ b/tests/integration/test_active_response/test_execd/test_execd_restart.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ on the alert level or rule group. These tests will check if the 'active responses', which are executed by the 'wazuh-execd' daemon via scripts, run correctly. -tier: 0 - -modules: +components: - active_response -components: +suite: execd + +targets: - agent daemons: @@ -32,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/active-response/#active-response @@ -198,6 +190,8 @@ def test_execd_restart(set_debug_mode, get_configuration, test_version, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_debug_mode: type: fixture From 081dd96831747e50ffe3ce3208548b6c78663f55 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 17:56:55 +0100 Subject: [PATCH 056/108] doc: Update agentd documentation with new schema changes. #2591 --- .../test_agentd/test_agentd_multi_server.py | 31 +++++----------- .../test_agentd_parametrized_reconnections.py | 15 +++----- .../test_agentd/test_agentd_reconnection.py | 35 ++++++++----------- .../test_agentd/test_agentd_state.py | 27 ++++---------- .../test_agentd/test_agentd_state_config.py | 27 ++++---------- 5 files changed, 42 insertions(+), 93 deletions(-) diff --git a/tests/integration/test_agentd/test_agentd_multi_server.py b/tests/integration/test_agentd/test_agentd_multi_server.py index 084de68d5e..d1100bbd7f 100644 --- a/tests/integration/test_agentd/test_agentd_multi_server.py +++ b/tests/integration/test_agentd/test_agentd_multi_server.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,10 @@ and scalability of the service. These tests will check the agent enrollment in a multi-server environment and how the agent manages the connections to the servers depending on their status. -tier: 0 - -modules: +components: - agentd -components: +targets: - agent daemons: @@ -28,32 +26,17 @@ - linux - windows + os_version: - Arch Linux - Amazon Linux 2 - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - Windows 10 - - Windows 8 - - Windows 7 - - Windows Server 2019 - - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/registering/index.html @@ -407,6 +390,8 @@ def test_agentd_multi_server(add_hostnames, configure_authd_server, set_authd_id wazuh_min_version: 4.2.0 + tier: 0 + parameters: - add_hostnames: type: fixture diff --git a/tests/integration/test_agentd/test_agentd_parametrized_reconnections.py b/tests/integration/test_agentd/test_agentd_parametrized_reconnections.py index 15f1c29fa1..1a0799fc42 100644 --- a/tests/integration/test_agentd/test_agentd_parametrized_reconnections.py +++ b/tests/integration/test_agentd/test_agentd_parametrized_reconnections.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ between connection attempts to the 'wazuh-remoted' daemon using TCP and UDP protocols. The 'wazuh-remoted' program is the server side daemon that communicates with the agents. -tier: 0 - -modules: +components: - agentd -components: +targets: - agent daemons: @@ -48,13 +46,8 @@ - Red Hat 7 - Red Hat 6 - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/registering/index.html @@ -323,6 +316,8 @@ def test_agentd_parametrized_reconnections(configure_authd_server, start_authd, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_authd_server: type: fixture diff --git a/tests/integration/test_agentd/test_agentd_reconnection.py b/tests/integration/test_agentd/test_agentd_reconnection.py index a7e16f17cb..f1baa75029 100644 --- a/tests/integration/test_agentd/test_agentd_reconnection.py +++ b/tests/integration/test_agentd/test_agentd_reconnection.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ the agent successfully enrolls after losing connection with the 'wazuh-remoted' daemon. The wazuh-remoted program is the server side daemon that communicates with the agents. -tier: 0 - -modules: +components: - agentd -components: +targets: - agent daemons: @@ -35,26 +33,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/registering/index.html @@ -249,6 +234,8 @@ def test_agentd_reconection_enrollment_with_keys(configure_authd_server, configu wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_authd_server: type: fixture @@ -332,6 +319,8 @@ def test_agentd_reconection_enrollment_no_keys_file(configure_authd_server, conf wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_authd_server: type: fixture @@ -418,6 +407,8 @@ def test_agentd_reconection_enrollment_no_keys(configure_authd_server, configure wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_authd_server: type: fixture @@ -505,6 +496,8 @@ def test_agentd_initial_enrollment_retries(configure_authd_server, configure_env wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_authd_server: type: fixture @@ -597,6 +590,8 @@ def test_agentd_connection_retries_pre_enrollment(configure_authd_server, config wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_authd_server: type: fixture diff --git a/tests/integration/test_agentd/test_agentd_state.py b/tests/integration/test_agentd/test_agentd_state.py index df2787daec..cf6248ba29 100644 --- a/tests/integration/test_agentd/test_agentd_state.py +++ b/tests/integration/test_agentd/test_agentd_state.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,10 @@ These tests will check if the content of the 'wazuh-agentd' daemon statistics file is valid. The statistics files are documents that show real-time information about the Wazuh environment. -tier: 0 - -modules: +components: - agentd -components: +targets: - agent daemons: @@ -33,26 +31,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/reference/statistics-files/wazuh-agentd-state.html @@ -143,6 +128,8 @@ def test_agentd_state(configure_environment, test_case: list): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_environment: type: fixture diff --git a/tests/integration/test_agentd/test_agentd_state_config.py b/tests/integration/test_agentd/test_agentd_state_config.py index 64426c8fc2..b52cd58ee8 100644 --- a/tests/integration/test_agentd/test_agentd_state_config.py +++ b/tests/integration/test_agentd/test_agentd_state_config.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ the 'wazuh-agentd' daemon are working properly. The statistics files are documents that show real-time information about the Wazuh environment. -tier: 0 - -modules: +components: - agentd -components: +targets: - agent daemons: @@ -33,26 +31,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/reference/statistics-files/wazuh-agentd-state.html @@ -147,6 +132,8 @@ def test_agentd_state_config(test_case, set_local_internal_options): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_environment: type: fixture From 85b15c68fa1f094b8dc74377605c924f390b267f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 17:59:13 +0100 Subject: [PATCH 057/108] doc: Update analysisd documentation with new schema changes. #2591 --- .../test_check_rare_socket_responses.py | 24 ++++----- .../test_check_socket_responses.py | 24 ++++----- .../test_validate_linux_analysisd_alerts.py | 24 ++++----- .../test_validate_rare_analysisd_alerts.py | 24 ++++----- .../test_validate_win32_analysisd_alerts.py | 24 ++++----- ...alidate_win32_analysisd_registry_alerts.py | 24 ++++----- .../test_error_messages.py | 24 ++++----- .../test_event_messages.py | 24 ++++----- .../test_integrity_messages.py | 22 +++----- .../test_mitre/test_mitre_check_alert.py | 24 ++++----- .../test_predecoder_stage.py | 24 ++++----- .../test_scan_messages/test_scan_messages.py | 22 +++----- .../test_syscollector_events.py | 50 +++++++------------ 13 files changed, 124 insertions(+), 210 deletions(-) diff --git a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_rare_socket_responses.py b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_rare_socket_responses.py index bd0a6af1af..5bf41330cd 100644 --- a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_rare_socket_responses.py +++ b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_rare_socket_responses.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will verify if the 'wazuh-analysisd' daemon correctly handles 'syscheck' events considered rare. -tier: 2 - -modules: +components: - analysisd -components: +suite: all_syscheckd_configurations + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -108,6 +100,8 @@ def test_validate_rare_socket_responses(configure_sockets_environment, connect_t wazuh_min_version: 4.2.0 + tier: 2 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_socket_responses.py b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_socket_responses.py index b5f71e3097..1059dd4ddd 100644 --- a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_socket_responses.py +++ b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_check_socket_responses.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will verify if the 'wazuh-analysisd' daemon correctly handles 'syscheck' common events. -tier: 2 - -modules: +components: - analysisd -components: +suite: all_syscheckd_configurations + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -107,6 +99,8 @@ def test_validate_socket_responses(configure_sockets_environment, connect_to_soc wazuh_min_version: 4.2.0 + tier: 2 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_linux_analysisd_alerts.py b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_linux_analysisd_alerts.py index 29f25e40e8..2c6a94efc1 100644 --- a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_linux_analysisd_alerts.py +++ b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_linux_analysisd_alerts.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will verify if the 'wazuh-analysisd' daemon generates valid alerts from Linux 'syscheck' events. -tier: 2 - -modules: +components: - analysisd -components: +suite: all_syscheckd_configurations + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -115,6 +107,8 @@ def test_validate_all_linux_alerts(configure_sockets_environment, connect_to_soc wazuh_min_version: 4.2.0 + tier: 2 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_rare_analysisd_alerts.py b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_rare_analysisd_alerts.py index 49ef38de66..c9ed951eae 100644 --- a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_rare_analysisd_alerts.py +++ b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_rare_analysisd_alerts.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will verify if the 'wazuh-analysisd' daemon generates valid alerts from Linux 'syscheck' events considered rare. -tier: 2 - -modules: +components: - analysisd -components: +suite: all_syscheckd_configurations + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -114,6 +106,8 @@ def test_validate_all_linux_alerts(configure_sockets_environment, connect_to_soc wazuh_min_version: 4.2.0 + tier: 2 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_alerts.py b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_alerts.py index 0d679b5a49..305510fb29 100644 --- a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_alerts.py +++ b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_alerts.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will verify if the 'wazuh-analysisd' daemon generates valid alerts from Windows 'syscheck' events. -tier: 2 - -modules: +components: - analysisd -components: +suite: all_syscheckd_configurations + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -112,6 +104,8 @@ def test_validate_all_win32_alerts(configure_sockets_environment, connect_to_soc wazuh_min_version: 4.2.0 + tier: 2 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_registry_alerts.py b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_registry_alerts.py index fce9b43c4e..2504b473c0 100644 --- a/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_registry_alerts.py +++ b/tests/integration/test_analysisd/test_all_syscheckd_configurations/test_validate_win32_analysisd_registry_alerts.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will verify if the 'wazuh-analysisd' daemon generates valid alerts from Windows registry-related 'syscheck' events. -tier: 2 - -modules: +components: - analysisd -components: +suite: all_syscheckd_configurations + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -112,6 +104,8 @@ def test_validate_all_win32_registry_alerts(configure_sockets_environment, conne wazuh_min_version: 4.2.0 + tier: 2 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_error_messages/test_error_messages.py b/tests/integration/test_analysisd/test_error_messages/test_error_messages.py index 6f22b9f499..6ab07e5a7e 100644 --- a/tests/integration/test_analysisd/test_error_messages/test_error_messages.py +++ b/tests/integration/test_analysisd/test_error_messages/test_error_messages.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will check if the 'wazuh-analysisd' daemon handles correctly the invalid events it receives. -tier: 0 - -modules: +components: - analysisd -components: +suite: error_messages + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -104,6 +96,8 @@ def test_error_messages(configure_sockets_environment, connect_to_sockets_module wazuh_min_version: 4.2.0 + tier: 2 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_event_messages/test_event_messages.py b/tests/integration/test_analysisd/test_event_messages/test_event_messages.py index d9f38cea4d..3a97adef72 100644 --- a/tests/integration/test_analysisd/test_event_messages/test_event_messages.py +++ b/tests/integration/test_analysisd/test_event_messages/test_event_messages.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will check if the 'wazuh-analysisd' daemon correctly handles incoming events related to file modification. -tier: 0 - -modules: +components: - analysisd -components: +suite: event_messages + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -111,6 +103,8 @@ def test_event_messages(configure_sockets_environment, connect_to_sockets_module wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_integrity_messages/test_integrity_messages.py b/tests/integration/test_analysisd/test_integrity_messages/test_integrity_messages.py index b2eabbd10e..c9421fe814 100644 --- a/tests/integration/test_analysisd/test_integrity_messages/test_integrity_messages.py +++ b/tests/integration/test_analysisd/test_integrity_messages/test_integrity_messages.py @@ -12,12 +12,12 @@ Specifically, these tests will check if the 'wazuh-analysisd' daemon correctly handles incoming events related to file integrity. -tier: 0 - -modules: +components: - analysisd -components: +suite: integrity_messages + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -111,6 +103,8 @@ def test_integrity_messages(configure_sockets_environment, connect_to_sockets_mo wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_mitre/test_mitre_check_alert.py b/tests/integration/test_analysisd/test_mitre/test_mitre_check_alert.py index 32ce6976b8..fa3f71b374 100644 --- a/tests/integration/test_analysisd/test_mitre/test_mitre_check_alert.py +++ b/tests/integration/test_analysisd/test_mitre/test_mitre_check_alert.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ using custom rules that contains the 'mitre' field to enrich those alerts with MITREs IDs, techniques and tactics. -tier: 0 - -modules: +components: - analysisd -components: +suite: mitre + +targets: - manager daemons: @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -101,6 +93,8 @@ def test_mitre_check_alert(get_configuration, configure_local_rules, restart_waz wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_analysisd/test_predecoder_stage/test_predecoder_stage.py b/tests/integration/test_analysisd/test_predecoder_stage/test_predecoder_stage.py index 756c718664..c338579cf8 100644 --- a/tests/integration/test_analysisd/test_predecoder_stage/test_predecoder_stage.py +++ b/tests/integration/test_analysisd/test_predecoder_stage/test_predecoder_stage.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ Specifically, these tests will verify if the pre-decoding stage of 'wazuh-analysisd' daemon correctly handles syslog formats. -tier: 2 - -modules: +components: - analysisd -components: +suite: predecoder_stage + +targets: - manager daemons: @@ -32,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -87,6 +79,8 @@ def test_precoder_supported_formats(connect_to_sockets_function, test_case: list wazuh_min_version: 4.3.0 + tier: 2 + parameters: - connect_to_sockets_function: type: fixture diff --git a/tests/integration/test_analysisd/test_scan_messages/test_scan_messages.py b/tests/integration/test_analysisd/test_scan_messages/test_scan_messages.py index fe7579fb08..18d62ce821 100644 --- a/tests/integration/test_analysisd/test_scan_messages/test_scan_messages.py +++ b/tests/integration/test_analysisd/test_scan_messages/test_scan_messages.py @@ -12,12 +12,12 @@ Specifically, these tests will check if the 'wazuh-analysisd' daemon correctly handles incoming events related to file scanning. -tier: 0 - -modules: +components: - analysisd -components: +suite: scan_messages + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html @@ -107,6 +99,8 @@ def test_scan_messages(configure_sockets_environment, connect_to_sockets_module, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_sockets_environment: type: fixture diff --git a/tests/integration/test_analysisd/test_syscollector/test_syscollector_events.py b/tests/integration/test_analysisd/test_syscollector/test_syscollector_events.py index 61a840f7eb..13a55c61d0 100644 --- a/tests/integration/test_analysisd/test_syscollector/test_syscollector_events.py +++ b/tests/integration/test_analysisd/test_syscollector/test_syscollector_events.py @@ -1,30 +1,24 @@ ''' -copyright: - Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. - Created by Wazuh, Inc. . + Created by Wazuh, Inc. . - This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 + This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 -type: - integration +type: integration -brief: - These tests will check if the Syscollector events, which are processed by - the `wazuh-analysisd` daemon, generates appropriate alerts based on the - information contained in the delta. +brief: These tests will check if the Syscollector events, which are processed by + the `wazuh-analysisd` daemon, generates appropriate alerts based on the + information contained in the delta. -tier: - 0 -modules: +components: - analysisd -components: - - manager +suite: syscollector -path: - tests/integration/test_analysisd/test_syscollector/test_syscollector_events.py +targets: + - manager daemons: - wazuh-analysisd @@ -38,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/syscollector.html#using-syscollector-information-to-trigger-alerts @@ -94,11 +80,11 @@ def get_configuration(request): def test_syscollector_events(test_case, get_configuration, mock_agent_module, configure_custom_rules, restart_analysisd, wait_for_analysisd_startup, connect_to_sockets_function, file_monitoring): ''' - description: - Check if Analysisd handle Syscollector deltas properly by generating alerts. + description: Check if Analysisd handle Syscollector deltas properly by generating alerts. + + wazuh_min_version: 4.4.0 - wazuh_min_version: - 4.4.0 + tier: 2 parameters: - get_configuration: @@ -129,7 +115,7 @@ def test_syscollector_events(test_case, get_configuration, mock_agent_module, co input_description: Input dataset (defined as event_header + event_payload in syscollector.yaml) cover, in most of the cases, INSERTED, MODIFIED and DELETED deltas - for each of the available scan: osinfo, hwinfo, processes, packages, network_interface, + for each of the available scan; osinfo, hwinfo, processes, packages, network_interface, network_address, network_protocol, ports and hotfixes. expected_output: From f8e09f6f3742716f9f70d46c854df25655042054 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:04:05 +0100 Subject: [PATCH 058/108] doc: Update api documentation with new schema changes. #2591 --- .../test_DOS_blocking_system.py | 24 +++++-------- .../test_bruteforce_blocking_system.py | 12 ++++--- .../test_config/test_cache/test_cache.py | 24 +++++-------- .../test_config/test_cors/test_cors.py | 24 +++++-------- .../test_drop_privileges.py | 24 +++++-------- .../test_experimental_features.py | 24 +++++-------- .../test_host_port/test_host_port.py | 24 +++++-------- .../test_config/test_https/test_https.py | 24 +++++-------- .../test_jwt_token_exp_timeout.py | 24 +++++-------- .../test_config/test_logs/test_logs.py | 24 +++++-------- .../test_max_upload_size.py | 24 +++++-------- .../test_config/test_rbac/test_rbac_mode.py | 24 +++++-------- .../test_request_timeout.py | 24 +++++-------- .../test_rbac/test_add_old_resource.py | 30 ++++++++-------- .../test_rbac/test_admin_resources.py | 34 ++++++++----------- .../test_rbac/test_policy_position.py | 24 +++++-------- .../test_rbac/test_remove_relationship.py | 28 +++++++-------- .../test_rbac/test_remove_resource.py | 30 ++++++++-------- 18 files changed, 182 insertions(+), 264 deletions(-) diff --git a/tests/integration/test_api/test_config/test_DOS_blocking_system/test_DOS_blocking_system.py b/tests/integration/test_api/test_config/test_DOS_blocking_system/test_DOS_blocking_system.py index 5a408d0569..f2e806d1bc 100644 --- a/tests/integration/test_api/test_config/test_DOS_blocking_system/test_DOS_blocking_system.py +++ b/tests/integration/test_api/test_config/test_DOS_blocking_system/test_DOS_blocking_system.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ that allows for interaction with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -98,6 +90,8 @@ def test_DOS_blocking_system(tags_to_apply, get_configuration, configure_api_env wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_bruteforce_blocking_system/test_bruteforce_blocking_system.py b/tests/integration/test_api/test_config/test_bruteforce_blocking_system/test_bruteforce_blocking_system.py index 89ae65b6d8..0aa89272b9 100644 --- a/tests/integration/test_api/test_config/test_bruteforce_blocking_system/test_bruteforce_blocking_system.py +++ b/tests/integration/test_api/test_config/test_bruteforce_blocking_system/test_bruteforce_blocking_system.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -96,6 +96,8 @@ def test_bruteforce_blocking_system(tags_to_apply, get_configuration, configure_ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_cache/test_cache.py b/tests/integration/test_api/test_config/test_cache/test_cache.py index 5210a1b9a5..7bc360e778 100644 --- a/tests/integration/test_api/test_config/test_cache/test_cache.py +++ b/tests/integration/test_api/test_config/test_cache/test_cache.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -116,6 +108,8 @@ def test_cache(tags_to_apply, get_configuration, configure_api_environment, rest wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_cors/test_cors.py b/tests/integration/test_api/test_config/test_cors/test_cors.py index 4da82433b5..7fd73ef4b9 100644 --- a/tests/integration/test_api/test_config/test_cors/test_cors.py +++ b/tests/integration/test_api/test_config/test_cors/test_cors.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ that allows for interaction with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -36,18 +36,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -100,6 +92,8 @@ def test_cors(origin, tags_to_apply, get_configuration, configure_api_environmen wazuh_min_version: 4.2.0 + tier: 0 + parameters: - origin: type: set diff --git a/tests/integration/test_api/test_config/test_drop_privileges/test_drop_privileges.py b/tests/integration/test_api/test_config/test_drop_privileges/test_drop_privileges.py index b1b9d89baa..d41e290f4c 100644 --- a/tests/integration/test_api/test_config/test_drop_privileges/test_drop_privileges.py +++ b/tests/integration/test_api/test_config/test_drop_privileges/test_drop_privileges.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -36,18 +36,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -98,6 +90,8 @@ def test_drop_privileges(tags_to_apply, get_configuration, configure_api_environ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_experimental_features/test_experimental_features.py b/tests/integration/test_api/test_config/test_experimental_features/test_experimental_features.py index bba3e4418d..9778e82989 100644 --- a/tests/integration/test_api/test_config/test_experimental_features/test_experimental_features.py +++ b/tests/integration/test_api/test_config/test_experimental_features/test_experimental_features.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ The Wazuh API is an open source 'RESTful' API that allows for interaction with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -96,6 +88,8 @@ def test_experimental_features(tags_to_apply, get_configuration, configure_api_e wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_host_port/test_host_port.py b/tests/integration/test_api/test_config/test_host_port/test_host_port.py index b776707e2a..030c295eed 100644 --- a/tests/integration/test_api/test_config/test_host_port/test_host_port.py +++ b/tests/integration/test_api/test_config/test_host_port/test_host_port.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -103,6 +95,8 @@ def test_host_port(expected_exception, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - expected_exception: type: bool diff --git a/tests/integration/test_api/test_config/test_https/test_https.py b/tests/integration/test_api/test_config/test_https/test_https.py index a5fcc6337e..fac1fe0860 100644 --- a/tests/integration/test_api/test_config/test_https/test_https.py +++ b/tests/integration/test_api/test_config/test_https/test_https.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -99,6 +91,8 @@ def test_https(tags_to_apply, get_configuration, configure_api_environment, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_jwt_token_exp_timeout/test_jwt_token_exp_timeout.py b/tests/integration/test_api/test_config/test_jwt_token_exp_timeout/test_jwt_token_exp_timeout.py index 87fefbb54d..255543682e 100644 --- a/tests/integration/test_api/test_config/test_jwt_token_exp_timeout/test_jwt_token_exp_timeout.py +++ b/tests/integration/test_api/test_config/test_jwt_token_exp_timeout/test_jwt_token_exp_timeout.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ The Wazuh API is an open source 'RESTful' API that allows for interaction with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -98,6 +90,8 @@ def test_jwt_token_exp_timeout(tags_to_apply, get_configuration, configure_api_e wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_logs/test_logs.py b/tests/integration/test_api/test_config/test_logs/test_logs.py index 0be746d360..3ced91d639 100644 --- a/tests/integration/test_api/test_config/test_logs/test_logs.py +++ b/tests/integration/test_api/test_config/test_logs/test_logs.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ The Wazuh API is an open source 'RESTful' API that allows for interaction with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -102,6 +94,8 @@ def test_logs(tags_to_apply, get_configuration, configure_api_environment, resta wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_max_upload_size/test_max_upload_size.py b/tests/integration/test_api/test_config/test_max_upload_size/test_max_upload_size.py index 1f06b9804c..c2ca7cf954 100644 --- a/tests/integration/test_api/test_config/test_max_upload_size/test_max_upload_size.py +++ b/tests/integration/test_api/test_config/test_max_upload_size/test_max_upload_size.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 2 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -36,18 +36,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -173,6 +165,8 @@ def test_max_upload_size(tags_to_apply, get_configuration, configure_api_environ wazuh_min_version: 4.3.0 + tier: 2 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_rbac/test_rbac_mode.py b/tests/integration/test_api/test_config/test_rbac/test_rbac_mode.py index d0198d1016..7597f32730 100644 --- a/tests/integration/test_api/test_config/test_rbac/test_rbac_mode.py +++ b/tests/integration/test_api/test_config/test_rbac/test_rbac_mode.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ that allows for interaction with the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -36,18 +36,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -126,6 +118,8 @@ def test_rbac_mode(tags_to_apply, get_configuration, configure_api_environment, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_config/test_request_timeout/test_request_timeout.py b/tests/integration/test_api/test_config/test_request_timeout/test_request_timeout.py index 016e1264d7..4762f85596 100644 --- a/tests/integration/test_api/test_config/test_request_timeout/test_request_timeout.py +++ b/tests/integration/test_api/test_config/test_request_timeout/test_request_timeout.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the Wazuh manager from a web browser, command line tool like 'cURL' or any script or program that can make web requests. -tier: 0 - -modules: +components: - api -components: +suite: config + +targets: - manager daemons: @@ -36,18 +36,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -98,6 +90,8 @@ def test_request_timeout(tags_to_apply, get_configuration, configure_api_environ wazuh_min_version: 4.3.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_api/test_rbac/test_add_old_resource.py b/tests/integration/test_api/test_rbac/test_add_old_resource.py index 930c6ba2fe..b35982c8df 100644 --- a/tests/integration/test_api/test_rbac/test_add_old_resource.py +++ b/tests/integration/test_api/test_rbac/test_add_old_resource.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ existing ones, the previous relationships are not maintained. The 'RBAC' capability allows users accessing the API to be assigned a role that will define the privileges they have. -tier: 0 - -modules: +components: - api -components: +suite: rbac + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -73,6 +65,8 @@ def test_add_old_user(restart_api_module, wait_for_start_module, set_security_re wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -128,6 +122,8 @@ def test_add_old_role(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -182,6 +178,8 @@ def test_add_old_policy(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -239,6 +237,8 @@ def test_add_old_rule(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture diff --git a/tests/integration/test_api/test_rbac/test_admin_resources.py b/tests/integration/test_api/test_rbac/test_admin_resources.py index 0cea84f6ea..d56883d929 100644 --- a/tests/integration/test_api/test_rbac/test_admin_resources.py +++ b/tests/integration/test_api/test_rbac/test_admin_resources.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ are working correctly. The 'RBAC' capability allows users accessing the API to be assigned a role that will define the privileges they have. -tier: 0 - -modules: +components: - api -components: +suite: rbac + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -133,13 +125,14 @@ def modify_admin_resources(api_details, admin_ids, endpoint, body): # Tests @pytest.mark.filterwarnings('ignore::urllib3.exceptions.InsecureRequestWarning') def test_admin_users(restart_api, wait_for_start, get_api_details): - """Test if admin security users can be removed.""" ''' description: Check if the admin security users can be removed. For this purpose, it tries to delete these users, expecting an error as a response. wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_api: type: fixture @@ -178,13 +171,14 @@ def test_admin_users(restart_api, wait_for_start, get_api_details): @pytest.mark.filterwarnings('ignore::urllib3.exceptions.InsecureRequestWarning') def test_admin_roles(restart_api, wait_for_start, get_api_details): - """Test if admin security roles can be removed.""" ''' description: Check if the admin security roles can be removed. For this purpose, it tries to delete these roles, expecting an error as a response. wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_api: type: fixture @@ -226,13 +220,14 @@ def test_admin_roles(restart_api, wait_for_start, get_api_details): @pytest.mark.filterwarnings('ignore::urllib3.exceptions.InsecureRequestWarning') def test_admin_policies(restart_api, wait_for_start, get_api_details): - """Test if admin security policies can be removed.""" ''' description: Check if the admin security policies can be removed. For this purpose, it tries to delete these policies, expecting an error as a response. wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_api: type: fixture @@ -275,13 +270,14 @@ def test_admin_policies(restart_api, wait_for_start, get_api_details): @pytest.mark.filterwarnings('ignore::urllib3.exceptions.InsecureRequestWarning') def test_admin_rules(restart_api, wait_for_start, get_api_details): - """Test if admin security rules can be removed.""" ''' description: Check if the admin security rules can be removed. For this purpose, it tries to delete these rules, expecting an error as a response. wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_api: type: fixture diff --git a/tests/integration/test_api/test_rbac/test_policy_position.py b/tests/integration/test_api/test_rbac/test_policy_position.py index cd4abce161..341255921f 100644 --- a/tests/integration/test_api/test_rbac/test_policy_position.py +++ b/tests/integration/test_api/test_rbac/test_policy_position.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ The 'RBAC' capability allows users accessing the API to be assigned a role that will define the privileges they have. -tier: 0 - -modules: +components: - api -components: +suite: rbac + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -136,6 +128,8 @@ def test_policy_position(set_security_resources, add_new_policies, get_api_detai wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture diff --git a/tests/integration/test_api/test_rbac/test_remove_relationship.py b/tests/integration/test_api/test_rbac/test_remove_relationship.py index e50bc3c678..55f5c9713a 100644 --- a/tests/integration/test_api/test_rbac/test_remove_relationship.py +++ b/tests/integration/test_api/test_rbac/test_remove_relationship.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ correctly removed. The 'RBAC' capability allows users accessing the API to be assigned a role that will define the privileges they have. -tier: 0 - -modules: +components: - api -components: +suite: rbac + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -104,6 +96,8 @@ def test_remove_user_role_relationship(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -149,6 +143,8 @@ def test_remove_role_policy_relationship(set_security_resources, get_api_details wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -194,6 +190,8 @@ def test_remove_role_rule_relationship(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture diff --git a/tests/integration/test_api/test_rbac/test_remove_resource.py b/tests/integration/test_api/test_rbac/test_remove_resource.py index 3d67708f80..a031e47ad8 100644 --- a/tests/integration/test_api/test_rbac/test_remove_resource.py +++ b/tests/integration/test_api/test_rbac/test_remove_resource.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ can be correctly removed. The 'RBAC' capability allows users accessing the API to be assigned a role that will define the privileges they have. -tier: 0 - -modules: +components: - api -components: +suite: rbac + +targets: - manager daemons: @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/api/getting-started.html @@ -114,6 +106,8 @@ def test_remove_rule(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -166,6 +160,8 @@ def test_remove_policy(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -218,6 +214,8 @@ def test_remove_user(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture @@ -270,6 +268,8 @@ def test_remove_role(set_security_resources, get_api_details): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_security_resources: type: fixture From cfb762c7939e18970fb82ce5c2c835198aee30aa Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:06:16 +0100 Subject: [PATCH 059/108] doc: Update authd documentation with new schema changes. #2591 --- .../force_options/test_authd_force_options.py | 24 +++++++----------- ...test_authd_force_options_invalid_config.py | 24 +++++++----------- tests/integration/test_authd/test_authd.py | 22 ++++++---------- .../test_authd/test_authd_agents_ctx.py | 24 +++++++----------- .../test_authd/test_authd_key_hash.py | 25 +++++++------------ .../test_authd/test_authd_local.py | 25 +++++++------------ .../test_authd/test_authd_ssl_certs.py | 20 +++++---------- .../test_authd/test_authd_ssl_options.py | 22 ++++++---------- .../test_authd/test_authd_use_password.py | 25 +++++++------------ .../test_authd/test_authd_use_source_ip.py | 25 +++++++------------ .../test_authd/test_authd_valid_name_ip.py | 25 +++++++------------ .../test_authd/test_authd_worker.py | 25 +++++++------------ .../test_authd/test_remote_enrollment.py | 22 ++++++---------- 13 files changed, 108 insertions(+), 200 deletions(-) diff --git a/tests/integration/test_authd/force_options/test_authd_force_options.py b/tests/integration/test_authd/force_options/test_authd_force_options.py index 742ef7ac42..59fff04caa 100644 --- a/tests/integration/test_authd/force_options/test_authd_force_options.py +++ b/tests/integration/test_authd/force_options/test_authd_force_options.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -10,12 +10,12 @@ brief: These tests will check if the 'wazuh-authd' daemon correctly responds to the enrollment requests messages respecting the valid option values used in the force configuration block. -tier: 0 - -modules: +components: - authd -components: +suite: force_options + +targets: - manager daemons: @@ -31,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic tags: - enrollment @@ -111,6 +103,8 @@ def test_authd_force_options(get_current_test_case, configure_local_internal_opt wazuh_min_version: 4.3.0 + tier: 0 + parameters: - get_current_test_case: type: fixture diff --git a/tests/integration/test_authd/force_options/test_authd_force_options_invalid_config.py b/tests/integration/test_authd/force_options/test_authd_force_options_invalid_config.py index 0d8c7217cc..74420ba4fc 100644 --- a/tests/integration/test_authd/force_options/test_authd_force_options_invalid_config.py +++ b/tests/integration/test_authd/force_options/test_authd_force_options_invalid_config.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -10,12 +10,12 @@ brief: These tests will check if a set of wrong configuration option values in the block force are warned in the logs file. -tier: 0 - -modules: +components: - authd -components: +suite: force_options + +targets: - manager daemons: @@ -30,18 +30,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic tags: - enrollment @@ -106,6 +98,8 @@ def test_authd_force_options_invalid_config(get_current_test_case, configure_loc wazuh_min_version: 4.3.0 + tier: 0 + parameters: - get_current_test_case: type: fixture diff --git a/tests/integration/test_authd/test_authd.py b/tests/integration/test_authd/test_authd.py index 81471bb575..bbaa894dd9 100755 --- a/tests/integration/test_authd/test_authd.py +++ b/tests/integration/test_authd/test_authd.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ The 'wazuh-authd' daemon can automatically add a Wazuh agent to a Wazuh manager and provide the key to the agent. It is used along with the 'agent-auth' application. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -34,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-authd.html @@ -116,6 +106,8 @@ def test_ossec_auth_messages(get_configuration, set_up_groups, configure_environ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_authd_agents_ctx.py b/tests/integration/test_authd/test_authd_agents_ctx.py index 1fa308db36..91cc17a750 100644 --- a/tests/integration/test_authd/test_authd_agents_ctx.py +++ b/tests/integration/test_authd/test_authd_agents_ctx.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ add a Wazuh agent to a Wazuh manager and provide the key to the agent. It is used along with the 'agent-auth' application. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -34,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-authd.html @@ -403,6 +393,8 @@ def test_ossec_authd_agents_ctx_main(get_configuration, set_up_groups, configure wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture @@ -464,6 +456,8 @@ def test_ossec_authd_agents_ctx_local(get_configuration, set_up_groups, configur wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_authd_key_hash.py b/tests/integration/test_authd/test_authd_key_hash.py index d348ccd00b..80d615f766 100755 --- a/tests/integration/test_authd/test_authd_key_hash.py +++ b/tests/integration/test_authd/test_authd_key_hash.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -9,12 +9,10 @@ brief: This module verifies the correct behavior of the enrollment daemon 'wazuh-authd' under different messages. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -26,22 +24,15 @@ - linux os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial tags: - enrollment @@ -121,6 +112,8 @@ def test_ossec_auth_messages_with_key_hash(configure_environment, configure_sock wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_environment: type: fixture diff --git a/tests/integration/test_authd/test_authd_local.py b/tests/integration/test_authd/test_authd_local.py index 71ac68fa29..3acebd1a8d 100755 --- a/tests/integration/test_authd/test_authd_local.py +++ b/tests/integration/test_authd/test_authd_local.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -10,12 +10,10 @@ brief: This module verifies the correct behavior of 'wazuh-authd' under different messages in a Cluster scenario (for Master). -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -26,22 +24,15 @@ - linux os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial tags: - enrollment @@ -122,6 +113,8 @@ def test_authd_local_messages(configure_environment, configure_sockets_environme wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_environment: type: fixture diff --git a/tests/integration/test_authd/test_authd_ssl_certs.py b/tests/integration/test_authd/test_authd_ssl_certs.py index 8559453481..a46ad9f75c 100644 --- a/tests/integration/test_authd/test_authd_ssl_certs.py +++ b/tests/integration/test_authd/test_authd_ssl_certs.py @@ -12,12 +12,10 @@ a Wazuh agent to a Wazuh manager and provide the key to the agent. It is used along with the 'agent-auth' application. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -34,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-authd.html @@ -176,6 +166,8 @@ def test_authd_ssl_certs(get_configuration, generate_ca_certificate, tear_down): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_authd_ssl_options.py b/tests/integration/test_authd/test_authd_ssl_options.py index 2795f3ec93..4f87e7dc46 100644 --- a/tests/integration/test_authd/test_authd_ssl_options.py +++ b/tests/integration/test_authd/test_authd_ssl_options.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ automatically add a Wazuh agent to a Wazuh manager and provide the key to the agent. It is used along with the 'agent-auth' application. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -34,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-authd.html @@ -165,6 +155,8 @@ def test_ossec_auth_configurations(get_configuration, configure_environment, con wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_authd_use_password.py b/tests/integration/test_authd/test_authd_use_password.py index f2ddb8a1af..4dde0a8891 100644 --- a/tests/integration/test_authd/test_authd_use_password.py +++ b/tests/integration/test_authd/test_authd_use_password.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -9,12 +9,10 @@ brief: This module verifies the correct behavior of the setting 'use_password'. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -26,22 +24,15 @@ - linux os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial tags: - enrollment @@ -176,6 +167,8 @@ def test_authd_force_options(get_configuration, configure_environment, configure wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_authd_use_source_ip.py b/tests/integration/test_authd/test_authd_use_source_ip.py index 8d16d139b6..d66a4d73a4 100644 --- a/tests/integration/test_authd/test_authd_use_source_ip.py +++ b/tests/integration/test_authd/test_authd_use_source_ip.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -9,12 +9,10 @@ brief: This module verifies the correct behavior of the setting 'use_source_ip'. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -26,22 +24,15 @@ - linux os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial tags: - enrollment @@ -110,6 +101,8 @@ def test_authd_force_options(get_configuration, configure_environment, configure wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_authd_valid_name_ip.py b/tests/integration/test_authd/test_authd_valid_name_ip.py index e0dc6b5fe6..71a53886e5 100644 --- a/tests/integration/test_authd/test_authd_valid_name_ip.py +++ b/tests/integration/test_authd/test_authd_valid_name_ip.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -9,12 +9,10 @@ brief: This module verifies the correct behavior of 'authd' under different name/IP combinations. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -26,22 +24,15 @@ - linux os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial tags: - enrollment @@ -101,6 +92,8 @@ def test_authd_force_options(get_configuration, configure_environment, configure wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_authd_worker.py b/tests/integration/test_authd/test_authd_worker.py index 1b394d810d..92b3931675 100644 --- a/tests/integration/test_authd/test_authd_worker.py +++ b/tests/integration/test_authd/test_authd_worker.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -9,12 +9,10 @@ brief: This module verifies the correct behavior of authd under different messages in a Cluster scenario (for Worker) -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -25,22 +23,15 @@ - linux os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial tags: - enrollment @@ -158,6 +149,8 @@ def test_ossec_auth_messages(get_configuration, set_up_groups, configure_environ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_authd/test_remote_enrollment.py b/tests/integration/test_authd/test_remote_enrollment.py index c5ed95430e..ab1255f38b 100644 --- a/tests/integration/test_authd/test_remote_enrollment.py +++ b/tests/integration/test_authd/test_remote_enrollment.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ a Wazuh agent to a Wazuh manager and provide the key to the agent. It is used along with the 'agent-auth' application. -tier: 0 - -modules: +components: - authd -components: +targets: - manager daemons: @@ -34,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/auth.html#remote-enrollment @@ -133,6 +123,8 @@ def test_remote_enrollment(get_configuration, configure_environment, restart_aut wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture From 1980e75ada03b1c4d24e677f46706f6e6d8f39b0 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:06:56 +0100 Subject: [PATCH 060/108] doc: Update enrollment documentation with new schema changes. #2591 --- .../test_agent_auth_enrollment.py | 61 ++++++++++--------- .../test_enrollment/test_agentd_enrollment.py | 61 ++++++++++--------- 2 files changed, 62 insertions(+), 60 deletions(-) diff --git a/tests/integration/test_enrollment/test_agent_auth_enrollment.py b/tests/integration/test_enrollment/test_agent_auth_enrollment.py index 78e1eca820..a7fd60a4ca 100644 --- a/tests/integration/test_enrollment/test_agent_auth_enrollment.py +++ b/tests/integration/test_enrollment/test_agent_auth_enrollment.py @@ -1,48 +1,43 @@ ''' -copyright: - Copyright (C) 2015-2021, Wazuh Inc. - Created by Wazuh, Inc. . - This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 +copyright: Copyright (C) 2015-2021, Wazuh Inc. + + Created by Wazuh, Inc. . + + This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 + type: integration + brief: This module verifies the correct behavior of the agent-auth enrollment tool under different configurations -tier: - 0 -modules: - - agent-auth + components: + - agentd + +targets: - agent + daemons: - - agent-auth -path: - /tests/integration/test_enrollment/test_agent_auth_enrollment.py -os_platform + - wazuh-authd + +os_platform: - linux - windows + os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial - - Windows 7 - - Windows 8 - Windows 10 - - Windows Server 2003 - - Windows Server 2012 + - Windows Server 2019 - Windows Server 2016 + tags: - - Enrollment + - enrollment ''' import pytest @@ -97,8 +92,11 @@ def test_agent_auth_enrollment(configure_environment, shutdown_agentd, get_curre "Check that different configuration generates the adequate enrollment message or the corresponding error log. Agent-auth will be executed using the different parameters and with different keys and password files scenarios as described in the test cases." - wazuh_min_version: - 4.2 + + wazuh_min_version: 4.2.0 + + tier: 0 + parameters: - configure_environment: type: fixture @@ -130,13 +128,16 @@ def test_agent_auth_enrollment(configure_environment, shutdown_agentd, get_curre - request: type: fixture brief: Provide information of the requesting test function. + assertions: - The enrollment message is sent when the configuration is valid - The enrollment message is generated as expected when the configuration is valid. - The error log is generated as expected when the configuration is invalid. + input_description: Different test cases are contained in an external YAML file (wazuh_enrollment_tests.yaml) which includes the different available enrollment-related configurations. + expected_output: - Enrollment request message on Authd socket - Error logs related to the wrong configuration block diff --git a/tests/integration/test_enrollment/test_agentd_enrollment.py b/tests/integration/test_enrollment/test_agentd_enrollment.py index 4fb936ea74..4fc84a87bd 100644 --- a/tests/integration/test_enrollment/test_agentd_enrollment.py +++ b/tests/integration/test_enrollment/test_agentd_enrollment.py @@ -1,48 +1,43 @@ ''' -copyright: - Copyright (C) 2015-2021, Wazuh Inc. - Created by Wazuh, Inc. . - This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 +copyright: Copyright (C) 2015-2022, Wazuh Inc. + + Created by Wazuh, Inc. . + + This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 + type: integration + brief: This module verifies the correct behavior of Wazuh Agentd during the enrollment under different configurations. -tier: - 0 -modules: - - Agentd + components: + - agentd + +targets: - agent + daemons: - - Agentd -path: - /tests/integration/test_enrollment/test_agentd_enrollment.py -os_platform + - wazuh-agentd + +os_platform: - linux - windows + os_version: - - Amazon Linux 1 - - Amazon Linux 2 - Arch Linux - - CentOS 6 - - CentOS 7 + - Amazon Linux 2 + - Amazon Linux 1 - CentOS 8 + - CentOS 7 - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - - Red Hat 6 - - Red Hat 7 - Red Hat 8 + - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Trusty - - Ubuntu Xenial - - Windows 7 - - Windows 8 - Windows 10 - - Windows Server 2003 - - Windows Server 2012 + - Windows Server 2019 - Windows Server 2016 + tags: - - Enrollment + - enrollment ''' import pytest @@ -113,8 +108,11 @@ def test_agentd_enrollment(configure_environment, override_wazuh_conf, get_curre "Check that different configuration generates the adequate enrollment message or the corresponding error log. The configuration, keys, and password files will be written with the different scenarios described in the test cases. After this, Agentd is started to wait for the expected result." - wazuh_min_version: - 4.2 + + wazuh_min_version: 4.2.0 + + tier: 0 + parameters: - configure_environment: type: fixture @@ -143,13 +141,16 @@ def test_agentd_enrollment(configure_environment, override_wazuh_conf, get_curre - request: type: fixture brief: Provide information of the requesting test function. + assertions: - The enrollment message is sent when the configuration is valid - The enrollment message is generated as expected when the configuration is valid. - The error log is generated as expected when the configuration is invalid. + input_description: Different test cases are contained in an external YAML file (wazuh_enrollment_tests.yaml) which includes the different available enrollment-related configurations. + expected_output: - Enrollment request message on Authd socket - Error logs related to the wrong configuration block From 65c8e99cfd3f447bc81d70c7982fd8798978e54d Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:09:11 +0100 Subject: [PATCH 061/108] doc: Update audit and ambiguous_confs suites documentation from fim with new schema changes. #2591 --- .../test_ambiguous_complex.py | 30 ++++------ .../test_ambiguous_simple.py | 39 ++++++------ .../test_ambiguous_whodata_thread.py | 31 ++++------ .../test_duplicate_entries.py | 35 +++++------ .../test_ignore_works_over_restrict.py | 29 +++------ .../test_whodata_prevails_over_realtime.py | 26 ++++---- .../test_files/test_audit/test_audit.py | 60 ++++++++++--------- .../test_audit_after_initial_scan.py | 30 ++++------ .../test_audit/test_audit_no_dir.py | 28 ++++----- .../test_audit/test_remove_audit.py | 26 ++++---- .../test_audit/test_remove_rule_five_times.py | 28 ++++----- 11 files changed, 151 insertions(+), 211 deletions(-) diff --git a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_complex.py b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_complex.py index 8852371e12..bdef096b59 100644 --- a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_complex.py +++ b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_complex.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_ambiguous_complex + +targets: - agent daemons: @@ -34,26 +34,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP + references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -282,6 +270,8 @@ def test_ambiguous_complex(tags_to_apply, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_simple.py b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_simple.py index a72833e440..89bb32515d 100644 --- a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_simple.py +++ b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_simple.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_ambiguous_complex + +targets: - agent daemons: @@ -37,26 +37,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -207,6 +194,8 @@ def test_ambiguous_restrict(folders, tags_to_apply, get_configuration, configure wazuh_min_version: 4.2.0 + tier: 2 + parameters: - folders: type: list @@ -272,6 +261,8 @@ def test_ambiguous_report(folders, tags_to_apply, get_configuration, configure_e wazuh_min_version: 4.2.0 + tier: 2 + parameters: - folders: type: list @@ -364,6 +355,8 @@ def test_ambiguous_tags(folders, tags_to_apply, get_configuration, configure_env wazuh_min_version: 4.2.0 + tier: 2 + parameters: - folders: type: list @@ -432,6 +425,8 @@ def test_ambiguous_recursion(dirname, recursion_level, tags_to_apply, get_config wazuh_min_version: 4.2.0 + tier: 2 + parameters: - dirname: type: string @@ -507,6 +502,8 @@ def test_ambiguous_recursion_tag(dirnames, recursion_level, triggers_event, tags wazuh_min_version: 4.2.0 + tier: 2 + parameters: - dirnames: type: list @@ -583,6 +580,8 @@ def test_ambiguous_check(dirname, checkers, tags_to_apply, get_configuration, co wazuh_min_version: 4.2.0 + tier: 2 + parameters: - dirname: type: string diff --git a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_whodata_thread.py b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_whodata_thread.py index d0e968615f..52f27a3729 100644 --- a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_whodata_thread.py +++ b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ambiguous_whodata_thread.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_ambiguous_complex + +targets: - manager daemons: @@ -34,26 +34,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/auditing-whodata/who-linux.html @@ -129,6 +116,8 @@ def test_ambiguous_whodata_thread(whodata_enabled, tags_to_apply, get_configurat wazuh_min_version: 4.2.0 + tier: 2 + parameters: - whodata_enabled: type: bool @@ -158,7 +147,7 @@ def test_ambiguous_whodata_thread(whodata_enabled, tags_to_apply, get_configurat - r'File integrity monitoring real-time Whodata engine started' tags: - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_duplicate_entries.py b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_duplicate_entries.py index a9c5beac62..23b0dbe3b5 100644 --- a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_duplicate_entries.py +++ b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_duplicate_entries.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_ambiguous_complex + +targets: - agent daemons: @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -182,6 +169,8 @@ def test_duplicate_entries(get_configuration, configure_environment, restart_sys wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture @@ -249,6 +238,8 @@ def test_duplicate_entries_sregex(get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture @@ -320,6 +311,8 @@ def test_duplicate_entries_report(get_configuration, configure_environment, rest wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture @@ -393,6 +386,8 @@ def test_duplicate_entries_complex(get_configuration, configure_environment, res wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ignore_works_over_restrict.py b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ignore_works_over_restrict.py index d52d298574..da14ee77cf 100644 --- a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ignore_works_over_restrict.py +++ b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_ignore_works_over_restrict.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_ambiguous_complex + +targets: - agent daemons: @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -134,6 +121,8 @@ def test_ignore_works_over_restrict(folder, filename, triggers_event, tags_to_ap wazuh_min_version: 4.2.0 + tier: 2 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_whodata_prevails_over_realtime.py b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_whodata_prevails_over_realtime.py index 59bce2a212..2a5148c66c 100644 --- a/tests/integration/test_fim/test_files/test_ambiguous_confs/test_whodata_prevails_over_realtime.py +++ b/tests/integration/test_fim/test_files/test_ambiguous_confs/test_whodata_prevails_over_realtime.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_ambiguous_complex + +targets: - manager daemons: @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/auditing-whodata/who-linux.html @@ -119,6 +111,8 @@ def test_whodata_prevails_over_realtime(directory, get_configuration, put_env_va wazuh_min_version: 4.2.0 + tier: 2 + parameters: - directory: type: str @@ -152,7 +146,7 @@ def test_whodata_prevails_over_realtime(directory, get_configuration, put_env_va tags: - realtime - - who-data + - who_data ''' filename = "testfile" diff --git a/tests/integration/test_fim/test_files/test_audit/test_audit.py b/tests/integration/test_fim/test_files/test_audit/test_audit.py index ef23c6c1e6..4ed8c18c47 100644 --- a/tests/integration/test_fim/test_files/test_audit/test_audit.py +++ b/tests/integration/test_fim/test_files/test_audit/test_audit.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_audit + +targets: - agent - manager @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://man7.org/linux/man-pages/man8/auditd.8.html @@ -122,6 +114,8 @@ def test_audit_health_check(tags_to_apply, get_configuration, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -148,7 +142,7 @@ def test_audit_health_check(tags_to_apply, get_configuration, - r'Whodata health-check: Success.' tags: - - who-data + - who_data ''' logger.info('Applying the test configuration') check_apply_test(tags_to_apply, get_configuration['tags']) @@ -171,6 +165,8 @@ def test_added_rules(tags_to_apply, get_configuration, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -197,8 +193,8 @@ def test_added_rules(tags_to_apply, get_configuration, - r'.*Added audit rule for monitoring directory' tags: - - audit-rules - - who-data + - audit_rules + - who_data ''' logger.info('Applying the test configuration') check_apply_test(tags_to_apply, get_configuration['tags']) @@ -230,6 +226,8 @@ def test_readded_rules(tags_to_apply, get_configuration, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -256,8 +254,8 @@ def test_readded_rules(tags_to_apply, get_configuration, - r'.*Added audit rule for monitoring directory' tags: - - audit-rules - - who-data + - audit_rules + - who_data ''' logger.info('Applying the test configuration') check_apply_test(tags_to_apply, get_configuration['tags']) @@ -294,6 +292,8 @@ def test_readded_rules_on_restart(tags_to_apply, get_configuration, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -322,8 +322,8 @@ def test_readded_rules_on_restart(tags_to_apply, get_configuration, - r'.*Added audit rule for monitoring directory' tags: - - audit-rules - - who-data + - audit_rules + - who_data ''' logger.info('Applying the test configuration') check_apply_test(tags_to_apply, get_configuration['tags']) @@ -363,6 +363,8 @@ def test_move_rules_realtime(tags_to_apply, get_configuration, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -390,7 +392,7 @@ def test_move_rules_realtime(tags_to_apply, get_configuration, tags: - realtime - - who-data + - who_data ''' logger.info('Applying the test configuration') check_apply_test(tags_to_apply, get_configuration['tags']) @@ -429,6 +431,8 @@ def test_audit_key(audit_key, path, get_configuration, configure_environment, re wazuh_min_version: 4.2.0 + tier: 1 + parameters: - audit_key: type: str @@ -458,8 +462,8 @@ def test_audit_key(audit_key, path, get_configuration, configure_environment, re - r'Match audit_key' ('key="wazuh_hc"' and 'key="wazuh_fim"' must not appear in the event) tags: - - audit-keys - - who-data + - audit_keys + - who_data ''' logger.info('Applying the test configuration') check_apply_test({audit_key}, get_configuration['tags']) @@ -500,6 +504,8 @@ def test_restart_audit(tags_to_apply, should_restart, get_configuration, configu wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -533,8 +539,8 @@ def test_restart_audit(tags_to_apply, should_restart, get_configuration, configu - The creation time of the 'auditd' daemon process. tags: - - audit-keys - - who-data + - audit_keys + - who_data ''' logger.info('Applying the test configuration') check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_audit/test_audit_after_initial_scan.py b/tests/integration/test_fim/test_files/test_audit/test_audit_after_initial_scan.py index cbd93164f3..9588d80347 100644 --- a/tests/integration/test_fim/test_files/test_audit/test_audit_after_initial_scan.py +++ b/tests/integration/test_fim/test_files/test_audit/test_audit_after_initial_scan.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_audit + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://man7.org/linux/man-pages/man8/auditd.8.html @@ -124,6 +116,8 @@ def test_remove_and_read_folder(tags_to_apply, folder, get_configuration, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -159,7 +153,7 @@ def test_remove_and_read_folder(tags_to_apply, folder, get_configuration, - r'.*Added audit rule for monitoring directory' tags: - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) @@ -187,6 +181,8 @@ def test_reconnect_to_audit(tags_to_apply, get_configuration, configure_environm wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -216,7 +212,7 @@ def test_reconnect_to_audit(tags_to_apply, get_configuration, configure_environm - r'Audit: connected' tags: - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_audit/test_audit_no_dir.py b/tests/integration/test_fim/test_files/test_audit/test_audit_no_dir.py index 71ecc37ab5..7c99bc2e89 100644 --- a/tests/integration/test_fim/test_files/test_audit/test_audit_no_dir.py +++ b/tests/integration/test_fim/test_files/test_audit/test_audit_no_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_audit + +targets: - agent - manager @@ -35,18 +35,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://man7.org/linux/man-pages/man8/auditd.8.html @@ -139,6 +131,8 @@ def test_audit_no_dir(tags_to_apply, get_configuration, configure_environment, r wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -167,8 +161,8 @@ def test_audit_no_dir(tags_to_apply, get_configuration, configure_environment, r - r'.*Added audit rule for monitoring directory' tags: - - audit-rules - - who-data + - audit_rules + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_audit/test_remove_audit.py b/tests/integration/test_fim/test_files/test_audit/test_remove_audit.py index 3d4b968641..feab2a50f8 100644 --- a/tests/integration/test_fim/test_files/test_audit/test_remove_audit.py +++ b/tests/integration/test_fim/test_files/test_audit/test_remove_audit.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_audit + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://man7.org/linux/man-pages/man8/auditd.8.html @@ -149,6 +141,8 @@ def test_move_folders_to_realtime(tags_to_apply, get_configuration, uninstall_in wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -180,7 +174,7 @@ def test_move_folders_to_realtime(tags_to_apply, get_configuration, uninstall_in tags: - realtime - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_audit/test_remove_rule_five_times.py b/tests/integration/test_fim/test_files/test_audit/test_remove_rule_five_times.py index 8fe88c8016..1bfc9803fc 100644 --- a/tests/integration/test_fim/test_files/test_audit/test_remove_rule_five_times.py +++ b/tests/integration/test_fim/test_files/test_audit/test_remove_rule_five_times.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_audit + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://man7.org/linux/man-pages/man8/auditd.8.html @@ -120,6 +112,8 @@ def test_remove_rule_five_times(tags_to_apply, folder, audit_key, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -156,8 +150,8 @@ def test_remove_rule_five_times(tags_to_apply, folder, audit_key, - r'.*Deleting Audit rules' tags: - - audit-rules - - who-data + - audit_rules + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) From f2f4ad1fb7a1c733551973b4173826ca10d671c0 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:10:52 +0100 Subject: [PATCH 062/108] doc: Update files_basic_usage suite documentation from fim with new schema changes. #2591 --- .../test_basic_usage_access_opened_files.py | 48 +++++++++---------- .../test_basic_usage_baseline_generation.py | 29 ++++------- .../test_basic_usage_changes.py | 36 +++++--------- ...est_basic_usage_create_after_delete_dir.py | 31 ++++-------- .../test_basic_usage_create_rt_wd.py | 38 ++++++--------- .../test_basic_usage_create_scheduled.py | 36 +++++--------- .../test_basic_usage_currently_open.py | 17 +++---- .../test_basic_usage_db_inode_check.py | 24 ++++------ .../test_basic_usage_delete_folder.py | 29 ++++------- .../test_basic_usage_dir_with_commas.py | 29 ++++------- .../test_basic_usage_disabled.py | 29 ++++------- ...st_basic_usage_entries_match_path_count.py | 36 +++++--------- .../test_basic_usage_move_dir.py | 29 ++++------- .../test_basic_usage_move_file.py | 29 ++++------- .../test_basic_usage_new_dirs.py | 29 ++++------- .../test_basic_usage_no_dir.py | 29 ++++------- .../test_basic_usage_quick_changes.py | 31 ++++-------- .../test_basic_usage_realtime_unsupported.py | 13 +++-- .../test_basic_usage_rename.py | 29 ++++------- .../test_basic_usage_starting_agent.py | 29 ++++------- .../test_basic_usage_wildcards.py | 29 ++++------- .../test_basic_usage_wildcards_runtime.py | 31 ++++-------- 22 files changed, 229 insertions(+), 431 deletions(-) diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_access_opened_files.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_access_opened_files.py index 4dce5e8771..e69526e07f 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_access_opened_files.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_access_opened_files.py @@ -1,5 +1,5 @@ """ -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -10,23 +10,18 @@ brief: Check that files that are being scanned by the syscheckd daemon can modified (renamed/deleted), and that wazuh is not blocking the files. -tier: 1 - -modules: +components: - syscheck -components: +suite: files_basic_usage + +targets: - manager - agent -path: tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_access_opened_files.py - daemons: - wazuh-syscheckd -modes: - - scheduled - os_platform: - linux - windows @@ -39,26 +34,25 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy + - macOS Server + - macOS Catalina - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 + - Windows Server 2019 + - Windows Server 2016 + +pytest_args: + - fim_mode: + scheduled: Implies scans at a determined interval references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/fim-configuration.html - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html - -tags: - - syscheck """ import os @@ -120,7 +114,9 @@ def test_basic_usage_modify_opened_files(tags_to_apply, get_configuration, confi can modified (renamed), and that wazuh is not blocking the files. - wazuh_min_version: 4.2 + wazuh_min_version: 4.2.0 + + tier: 1 parameters: - tags_to_apply: @@ -173,7 +169,9 @@ def test_basic_usage_delete_opened_files(tags_to_apply, get_configuration, confi can deleted, and that wazuh is not blocking the files. - wazuh_min_version: 4.2 + wazuh_min_version: 4.2.0 + + tier: 1 parameters: - tags_to_apply: diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_baseline_generation.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_baseline_generation.py index dfcbbab8d4..e9a91692fc 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_baseline_generation.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_baseline_generation.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -142,6 +129,8 @@ def test_wait_until_baseline(get_configuration, configure_environment, restart_s wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_changes.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_changes.py index 10aee781a7..89110ccf5a 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_changes.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_changes.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -37,29 +37,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy + - macOS Server + - macOS Catalina - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -152,6 +140,8 @@ def test_regular_file_changes(folder, name, encoding, checkers, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_after_delete_dir.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_after_delete_dir.py index 9ec10dfe0a..782cb40cb3 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_after_delete_dir.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_after_delete_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -131,6 +118,8 @@ def test_create_after_delete(tags_to_apply, get_configuration, configure_environ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set @@ -162,7 +151,7 @@ def test_create_after_delete(tags_to_apply, get_configuration, configure_environ tags: - realtime - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_rt_wd.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_rt_wd.py index 51384e448e..cbe6473176 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_rt_wd.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_rt_wd.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -37,29 +37,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy + - macOS Server + - macOS Catalina - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -164,6 +152,8 @@ def test_create_file_realtime_whodata(folder, name, filetype, content, checkers, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - folder: type: str @@ -213,7 +203,7 @@ def test_create_file_realtime_whodata(folder, name, filetype, content, checkers, tags: - realtime - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_scheduled.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_scheduled.py index d8b229deb7..26ccab9917 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_scheduled.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_create_scheduled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -37,29 +37,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy + - macOS Server + - macOS Catalina - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -161,6 +149,8 @@ def test_create_file_scheduled(folder, name, filetype, content, checkers, encodi wazuh_min_version: 4.2.0 + tier: 0 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_currently_open.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_currently_open.py index 521c490dd7..7e3b5bafdc 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_currently_open.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_currently_open.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent daemons: @@ -28,13 +28,8 @@ os_version: - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -103,6 +98,8 @@ def test_file_currently_open(tags_to_apply, get_configuration, configure_environ wazuh_min_version: 4.1.3 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_db_inode_check.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_db_inode_check.py index 65bfab4040..b22e4b815f 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_db_inode_check.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_db_inode_check.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -148,6 +140,8 @@ def test_db_inode_check(test_cases, get_configuration, configure_environment, re wazuh_min_version: 4.2.0 + tier: 0 + parameters: - test_cases: type: int diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_delete_folder.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_delete_folder.py index de14ac1196..88de1c70f8 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_delete_folder.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_delete_folder.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -138,6 +125,8 @@ def test_delete_folder(folder, file_list, filetype, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_dir_with_commas.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_dir_with_commas.py index 5f4c0804d5..8d0dc53f12 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_dir_with_commas.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_dir_with_commas.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -128,6 +115,8 @@ def test_directories_with_commas(directory, get_configuration, put_env_variables wazuh_min_version: 4.2.0 + tier: 2 + parameters: - directory: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_disabled.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_disabled.py index 239ea955e5..4cff834ab4 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_disabled.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_disabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -122,6 +109,8 @@ def test_disabled(get_configuration, configure_environment, restart_syscheckd): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_entries_match_path_count.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_entries_match_path_count.py index f344254187..5fa47ba094 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_entries_match_path_count.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_entries_match_path_count.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -37,29 +37,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -137,6 +125,8 @@ def test_entries_match_path_count(get_configuration, configure_environment, rest wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_dir.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_dir.py index cf2bfd0947..548df1170b 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_dir.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -151,6 +138,8 @@ def test_move_dir(source_folder, target_folder, subdir, tags_to_apply, triggers_ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - source_folder: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_file.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_file.py index 8cfb9ef127..3a10f47d95 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_file.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_move_file.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -140,6 +127,8 @@ def test_move_file(file, file_content, tags_to_apply, source_folder, target_fold wazuh_min_version: 4.2.0 + tier: 0 + parameters: - file: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_new_dirs.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_new_dirs.py index 925a24a17c..564d19b6af 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_new_dirs.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_new_dirs.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -144,6 +131,8 @@ def test_new_directory(tags_to_apply, get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_no_dir.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_no_dir.py index 79c515e29f..92fdb71bb4 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_no_dir.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_no_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -126,6 +113,8 @@ def test_new_directory(tags_to_apply, get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_quick_changes.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_quick_changes.py index c9746a8fc4..1ecadb54ec 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_quick_changes.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_quick_changes.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -134,6 +121,8 @@ def test_regular_file_changes(sleep, tags_to_apply, get_configuration, configure wazuh_min_version: 4.2.0 + tier: 0 + parameters: - sleep: type: float @@ -167,7 +156,7 @@ def test_regular_file_changes(sleep, tags_to_apply, get_configuration, configure tags: - realtime - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_realtime_unsupported.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_realtime_unsupported.py index d3c278aa34..1d592923f2 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_realtime_unsupported.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_realtime_unsupported.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server - Solaris 10 - Solaris 11 @@ -106,6 +107,8 @@ def test_realtime_unsupported(get_configuration, configure_environment, file_mon wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_rename.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_rename.py index dca5f479aa..27a042d54f 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_rename.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_rename.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -147,6 +134,8 @@ def test_rename(folder, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_starting_agent.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_starting_agent.py index 5d0969044d..3a3602ac5e 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_starting_agent.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_starting_agent.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -147,6 +134,8 @@ def test_events_from_existing_files(filename, tags_to_apply, get_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - filename: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards.py index 755bfec594..c3213dd4df 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -136,6 +123,8 @@ def test_basic_usage_wildcards(subfolder_name, file_name, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - subfolder_name: type: str diff --git a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards_runtime.py b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards_runtime.py index 231d9a6df1..853dac3f3b 100644 --- a/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards_runtime.py +++ b/tests/integration/test_fim/test_files/test_basic_usage/test_basic_usage_wildcards_runtime.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: files_basic_usage + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -156,6 +143,8 @@ def test_basic_usage_wildcards_runtime(subfolder_name, file_name, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - subfolder_name: type: str @@ -198,7 +187,7 @@ def test_basic_usage_wildcards_runtime(subfolder_name, file_name, tags_to_apply, tags: - scheduled - - who-data + - who_data ''' check_apply_test(tags_to_apply, get_configuration['tags']) if sys.platform == 'win32': From 03b5f16b156558205bd1861fe465b0355f6b3ddc Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:12:26 +0100 Subject: [PATCH 063/108] doc: Update suites documentation from fim with new schema changes. #2591 The following suites has been updated: - files_checks - files_env_variables - files_file_limit --- .../test_files/test_checks/test_check_all.py | 33 ++++++++----------- .../test_checks/test_check_others.py | 31 +++++++---------- .../test_files/test_checks/test_checksums.py | 31 +++++++---------- .../test_files/test_env_variables/test_dir.py | 29 +++++----------- .../test_env_variables/test_dir_win32.py | 17 ++++------ .../test_env_variables/test_ignore.py | 29 +++++----------- .../test_env_variables/test_nodiff.py | 32 +++++++----------- .../test_file_limit_capacity_alerts.py | 29 +++++----------- .../test_file_limit_default.py | 31 ++++++----------- .../test_file_limit_delete_full.py | 31 ++++++----------- .../test_file_limit/test_file_limit_full.py | 31 ++++++----------- .../test_file_limit_no_limit.py | 14 ++++---- .../test_file_limit/test_file_limit_values.py | 29 +++++----------- 13 files changed, 127 insertions(+), 240 deletions(-) diff --git a/tests/integration/test_fim/test_files/test_checks/test_check_all.py b/tests/integration/test_fim/test_files/test_checks/test_check_all.py index 89f6773574..94127f5d5b 100644 --- a/tests/integration/test_fim/test_files/test_checks/test_check_all.py +++ b/tests/integration/test_fim/test_files/test_checks/test_check_all.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_checks + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -156,6 +143,8 @@ def test_check_all_single(path, checkers, get_configuration, configure_environme wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str @@ -233,6 +222,8 @@ def test_check_all(path, checkers, get_configuration, configure_environment, res wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str @@ -290,6 +281,8 @@ def test_check_all_no(path, checkers, get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str diff --git a/tests/integration/test_fim/test_files/test_checks/test_check_others.py b/tests/integration/test_fim/test_files/test_checks/test_check_others.py index bd1caf13aa..92eb341226 100644 --- a/tests/integration/test_fim/test_files/test_checks/test_check_others.py +++ b/tests/integration/test_fim/test_files/test_checks/test_check_others.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_checks + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -153,6 +140,8 @@ def test_check_others_individually(path, checkers, get_configuration, configure_ wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str @@ -233,6 +222,8 @@ def test_check_others(path, checkers, get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str diff --git a/tests/integration/test_fim/test_files/test_checks/test_checksums.py b/tests/integration/test_fim/test_files/test_checks/test_checksums.py index e5e9abce37..dacbe9ac0b 100644 --- a/tests/integration/test_fim/test_files/test_checks/test_checksums.py +++ b/tests/integration/test_fim/test_files/test_checks/test_checksums.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_checks + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -150,6 +137,8 @@ def test_checksums_checkall(path, checkers, get_configuration, configure_environ wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str @@ -222,6 +211,8 @@ def test_checksums(path, checkers, get_configuration, configure_environment, res wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str diff --git a/tests/integration/test_fim/test_files/test_env_variables/test_dir.py b/tests/integration/test_fim/test_files/test_env_variables/test_dir.py index fbf86e199a..8295f88e9a 100644 --- a/tests/integration/test_fim/test_files/test_env_variables/test_dir.py +++ b/tests/integration/test_fim/test_files/test_env_variables/test_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_env_variables + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -142,6 +129,8 @@ def test_tag_directories(directory, get_configuration, put_env_variables, config wazuh_min_version: 4.2.0 + tier: 2 + parameters: - directory: type: str diff --git a/tests/integration/test_fim/test_files/test_env_variables/test_dir_win32.py b/tests/integration/test_fim/test_files/test_env_variables/test_dir_win32.py index 6af2add470..c71ffec4f2 100644 --- a/tests/integration/test_fim/test_files/test_env_variables/test_dir_win32.py +++ b/tests/integration/test_fim/test_files/test_env_variables/test_dir_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_env_variables + +targets: - agent daemons: @@ -29,13 +29,8 @@ os_version: - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -106,6 +101,8 @@ def test_tag_directories(directory, get_configuration, put_env_variables, config wazuh_min_version: 4.2.0 + tier: 2 + parameters: - directory: type: str diff --git a/tests/integration/test_fim/test_files/test_env_variables/test_ignore.py b/tests/integration/test_fim/test_files/test_env_variables/test_ignore.py index e222294d65..36ec4c8bd5 100644 --- a/tests/integration/test_fim/test_files/test_env_variables/test_ignore.py +++ b/tests/integration/test_fim/test_files/test_env_variables/test_ignore.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_env_variables + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -144,6 +131,8 @@ def test_tag_ignore(directory, event_generated, get_configuration, configure_env wazuh_min_version: 4.2.0 + tier: 2 + parameters: - directory: type: str diff --git a/tests/integration/test_fim/test_files/test_env_variables/test_nodiff.py b/tests/integration/test_fim/test_files/test_env_variables/test_nodiff.py index 239dd181a4..f58dd223b0 100644 --- a/tests/integration/test_fim/test_files/test_env_variables/test_nodiff.py +++ b/tests/integration/test_fim/test_files/test_env_variables/test_nodiff.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_env_variables + +targets: - agent - manager @@ -36,27 +36,15 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -148,6 +136,8 @@ def test_tag_nodiff(directory, filename, hidden_content, get_configuration, put_ wazuh_min_version: 4.2.0 + tier: 2 + parameters: - directory: type: str diff --git a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_capacity_alerts.py b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_capacity_alerts.py index 63963268f7..24cc918594 100644 --- a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_capacity_alerts.py +++ b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_capacity_alerts.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_file_limit + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -139,6 +126,8 @@ def test_file_limit_capacity_alert(percentage, get_configuration, configure_envi wazuh_min_version: 4.2.0 + tier: 1 + parameters: - percentage: type: int diff --git a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_default.py b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_default.py index 13a2e3e2ef..9df545a221 100644 --- a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_default.py +++ b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_default.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_file_limit + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -126,6 +113,8 @@ def test_file_limit_default(get_configuration, configure_environment, restart_sy wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture @@ -151,7 +140,7 @@ def test_file_limit_default(get_configuration, configure_environment, restart_sy tags: - scheduled - realtime - - whodata + - who_data ''' #Check the file limit configured and that it matches expected value (100000) file_limit_value = wazuh_log_monitor.start(timeout=global_parameters.default_timeout, diff --git a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_delete_full.py b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_delete_full.py index 15d7b5c2f5..9913c9f13f 100644 --- a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_delete_full.py +++ b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_delete_full.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_file_limit + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -149,6 +136,8 @@ def test_file_limit_delete_full(folder, file_name, get_configuration, configure_ wazuh_min_version: 4.2.0 + tier: 1 + parameters: - folder: type: str @@ -184,7 +173,7 @@ def test_file_limit_delete_full(folder, file_name, get_configuration, configure_ tags: - realtime - - who-data + - who_data ''' #Check that database is full and assert database usage percentage is 100% database_state = wazuh_log_monitor.start(timeout=global_parameters.default_timeout, diff --git a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_full.py b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_full.py index 4c8a79b2e0..479d0f800b 100644 --- a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_full.py +++ b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_full.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_file_limit + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -144,6 +131,8 @@ def test_file_limit_full( get_configuration, configure_environment, restart_sysc wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -175,7 +164,7 @@ def test_file_limit_full( get_configuration, configure_environment, restart_sysc tags: - scheduled - - whodata + - who_data - realtime ''' #Check that database is full and assert database usage percentage is 100% diff --git a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_no_limit.py b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_no_limit.py index 6b9ae436de..09111633ed 100644 --- a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_no_limit.py +++ b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_no_limit.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_file_limit + +targets: - agent - manager @@ -124,6 +124,8 @@ def test_file_limit_no_limit(get_configuration, configure_environment, restart_s wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture @@ -148,7 +150,7 @@ def test_file_limit_no_limit(get_configuration, configure_environment, restart_s tags: - scheduled - realtime - - whoadata + - who_data ''' wazuh_log_monitor.start(timeout=global_parameters.default_timeout, diff --git a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_values.py b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_values.py index b9e76d9996..cd7ad659b7 100644 --- a/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_values.py +++ b/tests/integration/test_fim/test_files/test_file_limit/test_file_limit_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_file_limit + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -143,6 +130,8 @@ def test_file_limit_values(get_configuration, configure_environment, restart_sys wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture From 76c892788a6b184e4ce06bc434de2b27e5820d80 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:31:56 +0100 Subject: [PATCH 064/108] doc: Update suites documentation from fim with new schema changes. #2591 The following suites has been updated: - files_follow_symbolic_link --- ...t_audit_rules_removed_after_change_link.py | 24 +++++++---------- .../test_change_target.py | 27 ++++++++----------- .../test_change_target_inside_folder.py | 27 ++++++++----------- ...est_change_target_with_nested_directory.py | 27 ++++++++----------- .../test_delete_symlink.py | 27 ++++++++----------- .../test_delete_target.py | 27 ++++++++----------- .../test_follow_symbolic_disabled.py | 27 ++++++++----------- .../test_monitor_symlink.py | 27 ++++++++----------- .../test_not_following_symbolic_link.py | 27 ++++++++----------- .../test_revert_symlink.py | 27 ++++++++----------- .../test_symlink_and_dir.py | 27 ++++++++----------- .../test_symlink_dir_inside_monitored_dir.py | 27 ++++++++----------- .../test_symlink_to_dir_between_scans.py | 27 ++++++++----------- .../test_symlink_within_dir.py | 27 ++++++++----------- 14 files changed, 152 insertions(+), 223 deletions(-) diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_audit_rules_removed_after_change_link.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_audit_rules_removed_after_change_link.py index d6140b2187..4322662767 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_audit_rules_removed_after_change_link.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_audit_rules_removed_after_change_link.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -153,6 +145,8 @@ def test_audit_rules_removed_after_change_link(replaced_target, new_target, file wazuh_min_version: 4.2.0 + tier: 1 + parameters: - replaced_target: type: str diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target.py index 1b2fbe67d2..4662fb160d 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -122,6 +115,8 @@ def test_symbolic_change_target(tags_to_apply, main_folder, aux_folder, get_conf wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_inside_folder.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_inside_folder.py index 709343330b..8f64ab69a8 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_inside_folder.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_inside_folder.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -123,6 +116,8 @@ def test_symbolic_change_target_inside_folder(tags_to_apply, previous_target, ne wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_with_nested_directory.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_with_nested_directory.py index b97fc32035..7b36a6932c 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_with_nested_directory.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_change_target_with_nested_directory.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -125,6 +118,8 @@ def test_symbolic_change_target_inside_folder(tags_to_apply, previous_target, ne wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_symlink.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_symlink.py index e16239a787..2fef6cd44d 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_symlink.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_symlink.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -124,6 +117,8 @@ def test_symbolic_delete_symlink(tags_to_apply, main_folder, aux_folder, get_con wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_target.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_target.py index 000c42c2ce..8ba84ea17a 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_target.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_delete_target.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -126,6 +119,8 @@ def test_symbolic_delete_target(tags_to_apply, main_folder, aux_folder, get_conf wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_follow_symbolic_disabled.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_follow_symbolic_disabled.py index 0d85c70aa8..8cd82d903b 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_follow_symbolic_disabled.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_follow_symbolic_disabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -125,6 +118,8 @@ def test_follow_symbolic_disabled(path, tags_to_apply, get_configuration, config wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_monitor_symlink.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_monitor_symlink.py index e2b55a0bde..172014ef48 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_monitor_symlink.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_monitor_symlink.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -120,6 +113,8 @@ def test_symbolic_monitor_symlink(tags_to_apply, main_folder, get_configuration, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_not_following_symbolic_link.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_not_following_symbolic_link.py index a87d1b830b..3109f4e7c4 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_not_following_symbolic_link.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_not_following_symbolic_link.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -37,21 +37,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -131,6 +124,8 @@ def test_symbolic_monitor_directory_with_symlink(monitored_dir, non_monitored_di wazuh_min_version: 4.2.0 + tier: 1 + parameters: - monitored_dir: type: str diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_revert_symlink.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_revert_symlink.py index 093123d65f..44e1d87422 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_revert_symlink.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_revert_symlink.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -121,6 +114,8 @@ def test_symbolic_revert_symlink(tags_to_apply, get_configuration, configure_env wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_and_dir.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_and_dir.py index 41117defcc..856be29ed1 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_and_dir.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_and_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -141,6 +134,8 @@ def test_symlink_dir_inside_monitored_dir(tags_to_apply, get_configuration, conf wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_dir_inside_monitored_dir.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_dir_inside_monitored_dir.py index f0f1369fa8..8e30b92104 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_dir_inside_monitored_dir.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_dir_inside_monitored_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -37,21 +37,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -142,6 +135,8 @@ def test_symlink_dir_inside_monitored_dir(tags_to_apply, checkers, get_configura wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_to_dir_between_scans.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_to_dir_between_scans.py index 056eaa377a..6914a439f9 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_to_dir_between_scans.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_to_dir_between_scans.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -142,6 +135,8 @@ def test_symlink_to_dir_between_scans(tags_to_apply, get_configuration, configur wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_within_dir.py b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_within_dir.py index 597e0eddf6..20938ed0f8 100644 --- a/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_within_dir.py +++ b/tests/integration/test_fim/test_files/test_follow_symbolic_link/test_symlink_within_dir.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_follow_symbolic_link + +targets: - agent - manager @@ -37,21 +37,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -143,6 +136,8 @@ def test_symlink_within_dir(tags_to_apply, checkers, get_configuration, configur wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set From 25c64856bfee78722b7d2df298cc875c4b8ac13f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:33:31 +0100 Subject: [PATCH 065/108] doc: Update suites documentation from fim with new schema changes. #2591 The following suites has been updated: - files_ignore - files_inotify - files_invalid - files_max_eps - files_max_files_per_second - files_moving_files - files_multiple_dirs - files_nodiff - files_prefilter_cmd - files_process_priority - files_recursion_level --- .../test_ignore/test_ignore_valid.py | 29 +++++---------- .../test_files/test_inotify/test_max_fd_rt.py | 12 ++++--- .../test_inotify/test_num_watches.py | 29 +++++---------- .../test_inotify/test_remove_rename_folder.py | 29 +++++---------- .../test_files/test_invalid/test_invalid.py | 29 +++++---------- .../test_files/test_max_eps/test_max_eps.py | 29 +++++---------- .../test_max_eps_synchronization.py | 30 +++++----------- .../test_max_files_per_second.py | 27 ++++++-------- .../test_moving_files/test_moving_files.py | 29 +++++---------- .../test_multiple_dirs/test_multiple_dirs.py | 29 +++++---------- .../test_multiple_entries.py | 29 +++++---------- .../test_nodiff/test_no_diff_valid.py | 32 ++++++----------- .../test_prefilter_cmd_conf.py | 25 ++++++------- .../test_process_priority.py | 36 +++++++------------ .../test_recursion_level.py | 36 +++++++------------ 15 files changed, 146 insertions(+), 284 deletions(-) diff --git a/tests/integration/test_fim/test_files/test_ignore/test_ignore_valid.py b/tests/integration/test_fim/test_files/test_ignore/test_ignore_valid.py index c137d95ec2..4ca245813d 100644 --- a/tests/integration/test_fim/test_files/test_ignore/test_ignore_valid.py +++ b/tests/integration/test_fim/test_files/test_ignore/test_ignore_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_ignore + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -163,6 +150,8 @@ def test_ignore_subdirectory(folder, filename, content, triggers_event, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - folder: type: set diff --git a/tests/integration/test_fim/test_files/test_inotify/test_max_fd_rt.py b/tests/integration/test_fim/test_files/test_inotify/test_max_fd_rt.py index ed2b40e3db..9f8573a502 100644 --- a/tests/integration/test_fim/test_files/test_inotify/test_max_fd_rt.py +++ b/tests/integration/test_fim/test_files/test_inotify/test_max_fd_rt.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_inotify + +targets: - agent daemons: @@ -124,6 +124,8 @@ def test_max_fd_win_rt(tags_to_apply, get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_inotify/test_num_watches.py b/tests/integration/test_fim/test_files/test_inotify/test_num_watches.py index a600646a60..c4ecac73de 100644 --- a/tests/integration/test_fim/test_files/test_inotify/test_num_watches.py +++ b/tests/integration/test_fim/test_files/test_inotify/test_num_watches.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_inotify + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -171,6 +158,8 @@ def test_num_watches(realtime_enabled, decreases_num_watches, rename_folder, get wazuh_min_version: 4.2.0 + tier: 1 + parameters: - realtime_enabled: type: bool diff --git a/tests/integration/test_fim/test_files/test_inotify/test_remove_rename_folder.py b/tests/integration/test_fim/test_files/test_inotify/test_remove_rename_folder.py index 439c9b5611..05467982a4 100644 --- a/tests/integration/test_fim/test_files/test_inotify/test_remove_rename_folder.py +++ b/tests/integration/test_fim/test_files/test_inotify/test_remove_rename_folder.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_inotify + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -159,6 +146,8 @@ def test_readded_watches(removed, renamed, get_configuration, configure_environm wazuh_min_version: 4.2.0 + tier: 1 + parameters: - removed: type: bool diff --git a/tests/integration/test_fim/test_files/test_invalid/test_invalid.py b/tests/integration/test_fim/test_files/test_invalid/test_invalid.py index b4a7eac17d..b839e3b889 100644 --- a/tests/integration/test_fim/test_files/test_invalid/test_invalid.py +++ b/tests/integration/test_fim/test_files/test_invalid/test_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_invalid + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -126,6 +113,8 @@ def test_invalid(tags_to_apply, get_configuration, configure_environment): wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_max_eps/test_max_eps.py b/tests/integration/test_fim/test_files/test_max_eps/test_max_eps.py index c7103be7ca..9adf4b256c 100644 --- a/tests/integration/test_fim/test_files/test_max_eps/test_max_eps.py +++ b/tests/integration/test_fim/test_files/test_max_eps/test_max_eps.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_max_eps + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -126,6 +113,8 @@ def test_max_eps(get_configuration, configure_environment, restart_syscheckd, wa wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_max_eps/test_max_eps_synchronization.py b/tests/integration/test_fim/test_files/test_max_eps/test_max_eps_synchronization.py index 7c73983652..68739fc4dc 100644 --- a/tests/integration/test_fim/test_files/test_max_eps/test_max_eps_synchronization.py +++ b/tests/integration/test_fim/test_files/test_max_eps/test_max_eps_synchronization.py @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_max_eps + +targets: - agent daemons: @@ -34,26 +34,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -71,7 +58,6 @@ 2: Only level 2 tests are performed, they check advanced functionalities and are slow to perform. tags: - - fim_max_eps - fim_max_eps_sync ''' import os @@ -157,6 +143,8 @@ def test_max_eps_sync_valid_within_range(configure_local_internal_options_module wazuh_min_version: 4.2.0 + tier: 1 + parameters: - configure_local_internal_options_module: type: fixture @@ -192,7 +180,7 @@ def test_max_eps_sync_valid_within_range(configure_local_internal_options_module tags: - scheduled - realtime - - whodata + - who_data ''' try: max_eps = int(get_configuration['metadata']['max_eps']) diff --git a/tests/integration/test_fim/test_files/test_max_files_per_second/test_max_files_per_second.py b/tests/integration/test_fim/test_files/test_max_files_per_second/test_max_files_per_second.py index 28e4cbc5ad..f71df1191f 100644 --- a/tests/integration/test_fim/test_files/test_max_files_per_second/test_max_files_per_second.py +++ b/tests/integration/test_fim/test_files/test_max_files_per_second/test_max_files_per_second.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_max_files_per_second + +targets: - agent - manager @@ -36,21 +36,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -127,6 +120,8 @@ def test_max_files_per_second(inode_collision, get_configuration, configure_envi wazuh_min_version: 4.2.0 + tier: 1 + parameters: - inode_collision: type: bool diff --git a/tests/integration/test_fim/test_files/test_moving_files/test_moving_files.py b/tests/integration/test_fim/test_files/test_moving_files/test_moving_files.py index 21c4459d8f..8f8f5db62a 100644 --- a/tests/integration/test_fim/test_files/test_moving_files/test_moving_files.py +++ b/tests/integration/test_fim/test_files/test_moving_files/test_moving_files.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_moving_files + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -177,6 +164,8 @@ def test_moving_file_to_whodata(dirsrc, dirdst, filename, mod_del_event, mod_add wazuh_min_version: 4.2.0 + tier: 1 + parameters: - dirsrc: type: str diff --git a/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_dirs.py b/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_dirs.py index 12f8e1f8a0..1c8adf50a1 100755 --- a/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_dirs.py +++ b/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_dirs.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_multiple_dirs + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -146,6 +133,8 @@ def test_multiple_dirs(dir_list, tags_to_apply, get_configuration, configure_env wazuh_min_version: 4.2.0 + tier: 1 + parameters: - dir_list: type: list diff --git a/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_entries.py b/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_entries.py index 62fbbeb9e1..4be3b6880d 100755 --- a/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_entries.py +++ b/tests/integration/test_fim/test_files/test_multiple_dirs/test_multiple_entries.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_multiple_dirs + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -165,6 +152,8 @@ def test_cud_multiple_dir_entries(dir_list, tags_to_apply, get_configuration, co wazuh_min_version: 4.2.0 + tier: 1 + parameters: - dir_list: type: list diff --git a/tests/integration/test_fim/test_files/test_nodiff/test_no_diff_valid.py b/tests/integration/test_fim/test_files/test_nodiff/test_no_diff_valid.py index a3cbe2b06d..11f85e4a89 100644 --- a/tests/integration/test_fim/test_files/test_nodiff/test_no_diff_valid.py +++ b/tests/integration/test_fim/test_files/test_nodiff/test_no_diff_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_nodiff + +targets: - agent - manager @@ -36,27 +36,15 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -157,6 +145,8 @@ def test_no_diff_subdirectory(folder, filename, content, hidden_content, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_prefilter_cmd/test_prefilter_cmd_conf.py b/tests/integration/test_fim/test_files/test_prefilter_cmd/test_prefilter_cmd_conf.py index cdc3ce9ac2..4b6aa46cf4 100644 --- a/tests/integration/test_fim/test_files/test_prefilter_cmd/test_prefilter_cmd_conf.py +++ b/tests/integration/test_fim/test_files/test_prefilter_cmd/test_prefilter_cmd_conf.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -11,12 +11,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_prefilter_cmd + +targets: - agent - manager @@ -27,22 +27,15 @@ - linux os_version: + - Arch Linux - Amazon Linux 2 - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -129,6 +122,8 @@ def test_prefilter_cmd_conf(get_configuration, configure_environment, install_pr wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_process_priority/test_process_priority.py b/tests/integration/test_fim/test_files/test_process_priority/test_process_priority.py index db83114f2f..5dacbf1cf0 100644 --- a/tests/integration/test_fim/test_files/test_process_priority/test_process_priority.py +++ b/tests/integration/test_fim/test_files/test_process_priority/test_process_priority.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_process_priority + +targets: - agent - manager @@ -37,29 +37,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -128,6 +116,8 @@ def test_process_priority(get_configuration, configure_environment, restart_sysc wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_recursion_level/test_recursion_level.py b/tests/integration/test_fim/test_files/test_recursion_level/test_recursion_level.py index d25a0cb10d..b2127dbf28 100644 --- a/tests/integration/test_fim/test_files/test_recursion_level/test_recursion_level.py +++ b/tests/integration/test_fim/test_files/test_recursion_level/test_recursion_level.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_recursion_level + +targets: - agent - manager @@ -38,29 +38,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -248,6 +236,8 @@ def test_recursion_level(dirname, subdirname, recursion_level, get_configuration wazuh_min_version: 4.2.0 + tier: 2 + parameters: - dirname: type: str From cb5a4dbeb7f0f39d6f95d15fbe62326fc498320a Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:38:12 +0100 Subject: [PATCH 066/108] doc: Update suites documentation from fim with new schema changes. #2591 The following suites has been updated: - files_report_changes - files_restrict - files_scan --- .../test_diff_size_limit_configured.py | 38 +++++++---------- .../test_diff_size_limit_default.py | 41 +++++++------------ .../test_disk_quota_default.py | 29 ++++--------- .../test_disk_quota_disabled.py | 29 ++++--------- .../test_disk_quota_values.py | 37 ++++++----------- .../test_file_size_default.py | 29 ++++--------- .../test_file_size_disabled.py | 29 ++++--------- .../test_file_size_values.py | 29 ++++--------- .../test_report_changes/test_large_changes.py | 33 ++++++--------- .../test_report_changes_and_diff.py | 33 ++++++--------- .../test_report_deleted_diff.py | 33 ++++++--------- .../test_restrict/test_restrict_valid.py | 29 ++++--------- .../test_files/test_scan/test_scan_day.py | 33 ++++++--------- .../test_scan/test_scan_day_and_time.py | 29 ++++--------- .../test_files/test_scan/test_scan_time.py | 29 ++++--------- 15 files changed, 166 insertions(+), 314 deletions(-) diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_configured.py b/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_configured.py index 4d96f32151..0c4dde18a6 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_configured.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_configured.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -38,29 +38,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -143,6 +131,8 @@ def test_diff_size_limit_configured(configure_local_internal_options_module, get wazuh_min_version: 4.2.0 + tier: 1 + parameters: - configure_local_internal_options_module: type: fixture @@ -173,7 +163,7 @@ def test_diff_size_limit_configured(configure_local_internal_options_module, get - diff - scheduled - realtime - - whodata + - who_data ''' diff_size_value = wazuh_log_monitor.start( diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_default.py b/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_default.py index 3802183bec..2bcbeedca4 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_default.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_diff_size_limit_default.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -30,8 +30,7 @@ - linux - windows - macos - - solaris - + - solaris os_version: - Arch Linux @@ -39,29 +38,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -138,6 +125,8 @@ def test_diff_size_limit_default(configure_local_internal_options_module, get_co wazuh_min_version: 4.2.0 + tier: 1 + parameters: - configure_local_internal_options_module: type: fixture @@ -168,7 +157,7 @@ def test_diff_size_limit_default(configure_local_internal_options_module, get_co - diff - scheduled - realtime - - whodata + - who_data ''' diff_size_value = wazuh_log_monitor.start( diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_default.py b/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_default.py index b8e02b349c..f884a3b378 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_default.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_default.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -128,6 +115,8 @@ def test_disk_quota_default(tags_to_apply, get_configuration, configure_environm wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_disabled.py b/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_disabled.py index 3fd72f6f89..807535d406 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_disabled.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_disabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -138,6 +125,8 @@ def test_disk_quota_disabled(tags_to_apply, filename, folder, size, get_configur wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_values.py b/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_values.py index e3d7ecfca1..4c10298c64 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_values.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_disk_quota_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -38,30 +38,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina - - Solaris 10 - - Solaris 11 - references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/syscheck.html#disk-quota @@ -153,6 +140,8 @@ def test_disk_quota_values(get_configuration, configure_environment, create_spec wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_file_size_default.py b/tests/integration/test_fim/test_files/test_report_changes/test_file_size_default.py index 4217e0d182..7cc0260ae4 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_file_size_default.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_file_size_default.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -152,6 +139,8 @@ def test_file_size_default(tags_to_apply, filename, folder, get_configuration, c wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_file_size_disabled.py b/tests/integration/test_fim/test_files/test_report_changes/test_file_size_disabled.py index dc2cc9f6f9..f4c3341320 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_file_size_disabled.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_file_size_disabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -137,6 +124,8 @@ def test_file_size_disabled(tags_to_apply, filename, folder, size, get_configura wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_file_size_values.py b/tests/integration/test_fim/test_files/test_report_changes/test_file_size_values.py index 9a4e23b9ea..9ea0bbeaf1 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_file_size_values.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_file_size_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -162,6 +149,8 @@ def test_file_size_values(tags_to_apply, filename, folder, get_configuration, co wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_large_changes.py b/tests/integration/test_fim/test_files/test_report_changes/test_large_changes.py index dd60293f17..b6f75fd340 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_large_changes.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_large_changes.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -162,6 +153,8 @@ def test_large_changes(filename, folder, original_size, modified_size, tags_to_a wazuh_min_version: 4.2.0 + tier: 1 + parameters: - filename: type: str diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_report_changes_and_diff.py b/tests/integration/test_fim/test_files/test_report_changes/test_report_changes_and_diff.py index 29bbc70365..fa8d4ba7e9 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_report_changes_and_diff.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_report_changes_and_diff.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -147,6 +138,8 @@ def test_reports_file_and_nodiff(folder, checkers, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_report_changes/test_report_deleted_diff.py b/tests/integration/test_fim/test_files/test_report_changes/test_report_deleted_diff.py index 644e025281..c608ba4026 100644 --- a/tests/integration/test_fim/test_files/test_report_changes/test_report_deleted_diff.py +++ b/tests/integration/test_fim/test_files/test_report_changes/test_report_deleted_diff.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_report_changes + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -220,6 +207,8 @@ def test_report_when_deleted_directories(path, get_configuration, configure_envi wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str @@ -284,6 +273,8 @@ def test_no_report_changes(path, get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - path: type: str @@ -347,6 +338,8 @@ def test_report_changes_after_restart(get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_restrict/test_restrict_valid.py b/tests/integration/test_fim/test_files/test_restrict/test_restrict_valid.py index c8b293cd4b..5e7aad61b6 100644 --- a/tests/integration/test_fim/test_files/test_restrict/test_restrict_valid.py +++ b/tests/integration/test_fim/test_files/test_restrict/test_restrict_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_restrict + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -150,6 +137,8 @@ def test_restrict(folder, filename, mode, content, triggers_event, tags_to_apply wazuh_min_version: 4.2.0 + tier: 1 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_scan/test_scan_day.py b/tests/integration/test_fim/test_files/test_scan/test_scan_day.py index 657e32b364..b26ce926dd 100644 --- a/tests/integration/test_fim/test_files/test_scan/test_scan_day.py +++ b/tests/integration/test_fim/test_files/test_scan/test_scan_day.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_scan + +targets: - agent - manager @@ -35,26 +35,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -129,6 +120,8 @@ def test_scan_day(tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_scan/test_scan_day_and_time.py b/tests/integration/test_fim/test_files/test_scan/test_scan_day_and_time.py index 19f7fb56a1..e04544298b 100644 --- a/tests/integration/test_fim/test_files/test_scan/test_scan_day_and_time.py +++ b/tests/integration/test_fim/test_files/test_scan/test_scan_day_and_time.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_scan + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -165,6 +152,8 @@ def test_scan_day_and_time(tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_files/test_scan/test_scan_time.py b/tests/integration/test_fim/test_files/test_scan/test_scan_time.py index 808ec07269..28542fe911 100644 --- a/tests/integration/test_fim/test_files/test_scan/test_scan_time.py +++ b/tests/integration/test_fim/test_files/test_scan/test_scan_time.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_scan + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -130,6 +117,8 @@ def test_scan_time(tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set From 292f70649cad319b730641d4bc42af5133e100f1 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:50:35 +0100 Subject: [PATCH 067/108] doc: Update suites documentation from fim with new schema changes. #2591 The following suites has been updated: - files_skip - files_tags - files_timezone_changes - files_wildcards_complex - files_windows_audit_interval --- .../test_files/test_skip/test_skip.py | 28 ++++++++++------- .../test_files/test_tags/test_tags.py | 29 ++++++----------- .../test_timezone_changes.py | 29 ++++++----------- .../test_wildcards_complex.py | 29 ++++++----------- .../test_wildcards_complex_runtime.py | 31 ++++++------------- .../test_windows_audit_interval.py | 14 ++++++--- 6 files changed, 62 insertions(+), 98 deletions(-) diff --git a/tests/integration/test_fim/test_files/test_skip/test_skip.py b/tests/integration/test_fim/test_files/test_skip/test_skip.py index a85882d62e..98423c9d5e 100644 --- a/tests/integration/test_fim/test_files/test_skip/test_skip.py +++ b/tests/integration/test_fim/test_files/test_skip/test_skip.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_skip + +targets: - agent - manager @@ -30,19 +30,15 @@ - linux os_version: + - Arch Linux - Amazon Linux 2 - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 + - Debian Buster + - Red Hat 8 - Ubuntu Focal - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -164,6 +160,8 @@ def test_skip_proc(get_configuration, configure_environment, restart_syscheckd, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture @@ -253,6 +251,8 @@ def test_skip_sys(get_configuration, configure_environment, restart_syscheckd, w wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture @@ -329,6 +329,8 @@ def test_skip_dev(modify_inode_mock, directory, tags_to_apply, get_configuration wazuh_min_version: 4.2.0 + tier: 1 + parameters: - modify_inode_mock: type: None @@ -388,6 +390,8 @@ def test_skip_nfs(modify_inode_mock, directory, tags_to_apply, configure_nfs, ge wazuh_min_version: 4.2.0 + tier: 1 + parameters: - modify_inode_mock: type: None diff --git a/tests/integration/test_fim/test_files/test_tags/test_tags.py b/tests/integration/test_fim/test_files/test_tags/test_tags.py index 47824d1563..19e4ca61c0 100644 --- a/tests/integration/test_fim/test_files/test_tags/test_tags.py +++ b/tests/integration/test_fim/test_files/test_tags/test_tags.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_tags + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -140,6 +127,8 @@ def test_tags(folder, name, content, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - folder: type: str diff --git a/tests/integration/test_fim/test_files/test_timezone_changes/test_timezone_changes.py b/tests/integration/test_fim/test_files/test_timezone_changes/test_timezone_changes.py index f617ea38a3..e1ed3b75f9 100644 --- a/tests/integration/test_fim/test_files/test_timezone_changes/test_timezone_changes.py +++ b/tests/integration/test_fim/test_files/test_timezone_changes/test_timezone_changes.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: files_timezone_changes + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -158,6 +145,8 @@ def test_timezone_changes(get_configuration, configure_environment, restart_sysc wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex.py b/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex.py index e014d7e930..b6e358eb16 100644 --- a/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex.py +++ b/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_wildcards_complex + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -146,6 +133,8 @@ def test_wildcards_complex(subfolder, file_name, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - subfolder: type: str diff --git a/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex_runtime.py b/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex_runtime.py index bc744db78e..f1a2b0368c 100644 --- a/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex_runtime.py +++ b/tests/integration/test_fim/test_files/test_wildcards_complex/test_wildcards_complex_runtime.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_wildcards_complex + +targets: - agent - manager @@ -35,26 +35,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -162,6 +149,8 @@ def test_wildcards_complex_runtime(subfolder_name, file_name, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - subfolder_name: type: str @@ -206,7 +195,7 @@ def test_wildcards_complex_runtime(subfolder_name, file_name, tags_to_apply, tags: - scheduled - time_travel - - who-data + - who_data ''' folder = os.path.join(test_folder, subfolder_name) if sys.platform == 'win32': diff --git a/tests/integration/test_fim/test_files/test_windows_audit_interval/test_windows_audit_interval.py b/tests/integration/test_fim/test_files/test_windows_audit_interval/test_windows_audit_interval.py index 71025b3fb8..a7e013e146 100644 --- a/tests/integration/test_fim/test_files/test_windows_audit_interval/test_windows_audit_interval.py +++ b/tests/integration/test_fim/test_files/test_windows_audit_interval/test_windows_audit_interval.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: files_windows_audit_interval + +targets: - agent daemons: @@ -147,6 +147,8 @@ def test_windows_audit_modify_sacl(tags_to_apply, get_configuration, configure_e wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set @@ -215,6 +217,8 @@ def test_windows_audit_restore_sacl(tags_to_apply, get_configuration, configure_ wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set From ecbb14f90c16f231a3da6dc089f1076b4452e8c6 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:53:26 +0100 Subject: [PATCH 068/108] doc: Update suites documentation from fim with new schema changes. #2591 The following suites has been updated: - registry_ambiguous_confs - registry_basic_usage - registry_checks - registry_file_limit - registry_ignore --- .../test_registry_ambiguous_complex.py | 16 +++++++++++----- ...st_registry_ambiguous_duplicated_entries.py | 14 +++++++++----- ...try_ambiguous_ignore_works_over_restrict.py | 14 +++++++++----- .../test_registry_ambiguous_simple.py | 18 +++++++++++++----- .../test_basic_usage_delete_registry.py | 12 +++++++----- ...test_basic_usage_entries_match_key_count.py | 12 +++++++----- ...basic_usage_registry_baseline_generation.py | 12 +++++++----- .../test_basic_usage_registry_changes.py | 12 +++++++----- .../test_basic_usage_registry_new_key.py | 12 +++++++----- .../test_long_registry_path.py | 12 +++++++----- .../test_registry_check_others.py | 12 +++++++----- .../test_registry_checkers.py | 12 +++++++----- .../test_registry_limit_capacity_alerts.py | 12 +++++++----- .../test_registry_limit_full.py | 12 +++++++----- .../test_registry_limit_values.py | 12 +++++++----- .../test_ignore_registry.py | 12 ++++++++---- 16 files changed, 127 insertions(+), 79 deletions(-) diff --git a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_complex.py b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_complex.py index 651d7ae973..6c6b631de4 100644 --- a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_complex.py +++ b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_complex.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: registry_ambiguous_confs + +targets: - agent daemons: @@ -148,6 +148,8 @@ def test_ambiguous_complex_checks(key, subkey, key_checkers, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -216,6 +218,8 @@ def test_ambiguous_report_changes(key, subkey, value_list, report, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -299,6 +303,8 @@ def test_ambiguous_report_tags(key, subkey, tag, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_duplicated_entries.py b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_duplicated_entries.py index b25a32dd4a..d16f64bc63 100644 --- a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_duplicated_entries.py +++ b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_duplicated_entries.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: registry_ambiguous_confs + +targets: - agent daemons: @@ -152,6 +152,8 @@ def test_duplicate_entries(key, subkey, arch, key_list, value_list, checkers, ta wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -232,6 +234,8 @@ def test_duplicate_entries_rc(key, subkey, arch, value_list, tags_to_apply, repo wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_ignore_works_over_restrict.py b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_ignore_works_over_restrict.py index ff15cade1e..c16643b5fc 100644 --- a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_ignore_works_over_restrict.py +++ b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_ignore_works_over_restrict.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: registry_ambiguous_confs + +targets: - agent daemons: @@ -130,6 +130,8 @@ def test_ignore_over_restrict_key(key, subkey, key_name, arch, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -197,6 +199,8 @@ def test_ignore_over_restrict_values(key, subkey, value_name, arch, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_simple.py b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_simple.py index 92ee414667..37a53d9173 100644 --- a/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_simple.py +++ b/tests/integration/test_fim/test_registry/test_registry_ambiguous_confs/test_registry_ambiguous_simple.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: registry_ambiguous_confs + +targets: - agent daemons: @@ -157,6 +157,8 @@ def test_ambiguous_restrict(key, sub_keys, is_key, name, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -227,6 +229,8 @@ def test_ambiguous_tags(key, sub_keys, arch, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -301,6 +305,8 @@ def test_ambiguous_recursion(key, subkey, arch, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -368,6 +374,8 @@ def test_ambiguous_checks(key, subkey, key_checkers, subkey_checkers, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_delete_registry.py b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_delete_registry.py index 778f2fc090..e27ac02123 100644 --- a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_delete_registry.py +++ b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_delete_registry.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: registry_basic_usage + +targets: - agent daemons: @@ -120,6 +120,8 @@ def test_delete_registry(key, subkey, arch, value_list, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_entries_match_key_count.py b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_entries_match_key_count.py index 8af45b7e06..cfd5141b56 100644 --- a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_entries_match_key_count.py +++ b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_entries_match_key_count.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: registry_basic_usage + +targets: - agent daemons: @@ -115,6 +115,8 @@ def test_entries_match_key_count(get_configuration, configure_environment, resta wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_baseline_generation.py b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_baseline_generation.py index e9f3b3f290..b087106ecb 100644 --- a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_baseline_generation.py +++ b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_baseline_generation.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: registry_basic_usage + +targets: - agent daemons: @@ -140,6 +140,8 @@ def test_wait_until_baseline(key, subkey, arch, value_type, content, get_configu wazuh_min_version: 4.2.0 + tier: 0 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_changes.py b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_changes.py index 0306768e81..299ab8a801 100644 --- a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_changes.py +++ b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_changes.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: registry_basic_usage + +targets: - agent daemons: @@ -118,6 +118,8 @@ def test_registry_changes(key, subkey, arch, value_type, get_configuration, conf wazuh_min_version: 4.2.0 + tier: 0 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_new_key.py b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_new_key.py index f83306c718..edab9a49cb 100644 --- a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_new_key.py +++ b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_basic_usage_registry_new_key.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: registry_basic_usage + +targets: - agent daemons: @@ -106,6 +106,8 @@ def test_new_key(get_configuration, configure_environment, restart_syscheckd, wa wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_long_registry_path.py b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_long_registry_path.py index dfe7e4e997..2a2ca8e5bc 100644 --- a/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_long_registry_path.py +++ b/tests/integration/test_fim/test_registry/test_registry_basic_usage/test_long_registry_path.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 0 - -modules: +components: - fim -components: +suite: registry_basic_usage + +targets: - agent daemons: @@ -107,6 +107,8 @@ def test_long_registry_path(get_configuration, configure_environment, restart_sy wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_check_others.py b/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_check_others.py index fb39419444..6baafef14a 100644 --- a/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_check_others.py +++ b/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_check_others.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_checks + +targets: - agent daemons: @@ -147,6 +147,8 @@ def test_check_others(key, subkey, key_attr, value_attr, triggers_key_modificati wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_checkers.py b/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_checkers.py index bd61523e0b..8bade9852e 100644 --- a/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_checkers.py +++ b/tests/integration/test_fim/test_registry/test_registry_checks/test_registry_checkers.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_checks + +targets: - agent daemons: @@ -177,6 +177,8 @@ def test_checkers(key, subkey, arch, key_attrs, value_attrs, tags_to_apply, trig wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_capacity_alerts.py b/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_capacity_alerts.py index adf3788387..718ddbc389 100644 --- a/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_capacity_alerts.py +++ b/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_capacity_alerts.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_file_limit + +targets: - agent daemons: @@ -118,6 +118,8 @@ def test_file_limit_capacity_alert(percentage, get_configuration, configure_envi wazuh_min_version: 4.2.0 + tier: 1 + parameters: - percentage: type: int diff --git a/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_full.py b/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_full.py index e9f777fbf0..ea1e3bd93a 100644 --- a/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_full.py +++ b/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_full.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_file_limit + +targets: - agent daemons: @@ -122,6 +122,8 @@ def test_file_limit_full(get_configuration, configure_environment, restart_sysch wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_values.py b/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_values.py index 567fa65a91..211cc0326e 100644 --- a/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_values.py +++ b/tests/integration/test_fim/test_registry/test_registry_file_limit/test_registry_limit_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_file_limit + +targets: - agent daemons: @@ -119,6 +119,8 @@ def test_file_limit_values(get_configuration, configure_environment, restart_sys wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_registry/test_registry_ignore/test_ignore_registry.py b/tests/integration/test_fim/test_registry/test_registry_ignore/test_ignore_registry.py index f84526c1a2..2a8518c48f 100755 --- a/tests/integration/test_fim/test_registry/test_registry_ignore/test_ignore_registry.py +++ b/tests/integration/test_fim/test_registry/test_registry_ignore/test_ignore_registry.py @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_ignore + +targets: - agent daemons: @@ -133,6 +133,8 @@ def test_ignore_registry_key(root_key, registry, arch, subkey, triggers_event, t wazuh_min_version: 4.2.0 + tier: 1 + parameters: - root_key: type: str @@ -237,6 +239,8 @@ def test_ignore_registry_value(root_key, registry, arch, value, triggers_event, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - root_key: type: str From 31b62d186e08ba76283317679ccb489f4317b04e Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:54:41 +0100 Subject: [PATCH 069/108] doc: Update suites documentation from fim with new schema changes. #2591 The following suites has been updated: - registry_multiple_registries - registry_nodiff - registry_recursion_level - registry_report_changes - registry_report_changes_disk_quota - registry_restrict - registry_tags --- .../test_multiple_keys.py | 12 +++++++----- .../test_multiple_registry_entries.py | 12 +++++++----- .../test_registry_no_diff.py | 14 +++++++++----- .../test_recursion_level_registry.py | 12 +++++++----- ...test_registry_disk_quota_bigger_file_limit.py | 16 +++++++++------- .../test_registry_disk_quota_default.py | 12 +++++++----- .../test_registry_disk_quota_values.py | 16 +++++++++------- .../test_registry_all_limits_disabled.py | 12 +++++++----- .../test_registry_diff_size_limit_values.py | 12 +++++++----- .../test_registry_file_size_default.py | 12 +++++++----- .../test_registry_file_size_values.py | 16 +++++++++------- .../test_registry_report_changes.py | 12 +++++++----- .../test_registry_report_changes_deleted.py | 14 +++++++++----- .../test_registry_report_changes_more_changes.py | 12 +++++++----- .../test_registry_restrict.py | 14 +++++++++----- .../test_registry_tags/test_registry_tags.py | 15 +++++++-------- 16 files changed, 124 insertions(+), 89 deletions(-) diff --git a/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_keys.py b/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_keys.py index e4a7ce78c7..c561ae4a69 100644 --- a/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_keys.py +++ b/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_keys.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_multiple_registries + +targets: - agent daemons: @@ -119,6 +119,8 @@ def test_multiple_keys(tags_to_apply, get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_registry_entries.py b/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_registry_entries.py index cd72340e31..f576754cbc 100644 --- a/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_registry_entries.py +++ b/tests/integration/test_fim/test_registry/test_registry_multiple_registries/test_multiple_registry_entries.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_multiple_registries + +targets: - agent daemons: @@ -119,6 +119,8 @@ def test_multiple_entries(tags_to_apply, get_configuration, configure_environmen wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_registry/test_registry_nodiff/test_registry_no_diff.py b/tests/integration/test_fim/test_registry/test_registry_nodiff/test_registry_no_diff.py index e59d88a0ed..8a2bbb16cc 100644 --- a/tests/integration/test_fim/test_registry/test_registry_nodiff/test_registry_no_diff.py +++ b/tests/integration/test_fim/test_registry/test_registry_nodiff/test_registry_no_diff.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: registry_nodiff + +targets: - agent daemons: @@ -129,6 +129,8 @@ def test_no_diff_str(key, subkey, arch, value_name, truncated, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str @@ -229,6 +231,8 @@ def test_no_diff_regex(key, subkey, arch, value_name, truncated, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_recursion_level/test_recursion_level_registry.py b/tests/integration/test_fim/test_registry/test_registry_recursion_level/test_recursion_level_registry.py index bc580c57e2..64c3c004e3 100644 --- a/tests/integration/test_fim/test_registry/test_registry_recursion_level/test_recursion_level_registry.py +++ b/tests/integration/test_fim/test_registry/test_registry_recursion_level/test_recursion_level_registry.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: registry_recursion_level + +targets: - agent daemons: @@ -167,6 +167,8 @@ def test_recursion_level(root_key, registry, arch, edge_limit, ignored_levels, wazuh_min_version: 4.2.0 + tier: 2 + parameters: - root_key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_bigger_file_limit.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_bigger_file_limit.py index eb5774516f..207126b3ad 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_bigger_file_limit.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_bigger_file_limit.py @@ -1,5 +1,5 @@ """ -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes_disk_quota + +targets: - agent daemons: @@ -122,13 +122,15 @@ def test_disk_quota_values(key, subkey, arch, value_name, size, get_configuratio 'disk_quota' limit, and increase its size on each test case. Finally, the test will verify that the compressed diff file has been created, and the related FIM event includes the 'content_changes' field if the value size does not exceed the specified limit. - - Case 1: File size smaller than size_limit - tests that disk_quota is higher than the one originally + - Case 1, File size smaller than size_limit - tests that disk_quota is higher than the one originally configured. - - Case 2: File size bigger than size_limit - tests that disk_quota does not allow for compressed files + - Case 2, File size bigger than size_limit - tests that disk_quota does not allow for compressed files bigger than size_limit (that is the value actually applied to disk_quota as well). wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_default.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_default.py index 769a3d4f82..27030b5af8 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_default.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_default.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes_disk_quota + +targets: - agent daemons: @@ -129,6 +129,8 @@ def test_disk_quota_default(key, subkey, arch, value_name, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_values.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_values.py index 266b52ef97..22c9c306fe 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_values.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_disk_quota/test_registry_disk_quota_values.py @@ -1,5 +1,5 @@ """ -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes_disk_quota + +targets: - agent daemons: @@ -120,13 +120,15 @@ def test_disk_quota_values(key, subkey, arch, value_name, size, get_configuratio limit, and increase its size on each test case. Finally, the test will verify that the compressed file has been created, and the related FIM event includes the 'content_changes' field if the value size does not exceed the specified limit and viceversa. - - Case 1: small file - when compressed it will be less than the disk_quota. The file is generated + - Case 1, small file - when compressed it will be less than the disk_quota. The file is generated and the logs have content_changes data. - - Case 2: big size - when compressed the file would be bigger than the disk_quota. The file is not + - Case 2, big size - when compressed the file would be bigger than the disk_quota. The file is not generated and the logs should not have content_changes data. wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_all_limits_disabled.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_all_limits_disabled.py index 3b0dcc2649..c66437fbf2 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_all_limits_disabled.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_all_limits_disabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes + +targets: - agent daemons: @@ -119,6 +119,8 @@ def test_all_limits_disabled(key, subkey, arch, value_name, get_configuration, c wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_diff_size_limit_values.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_diff_size_limit_values.py index a04c54d95e..943a16ba2e 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_diff_size_limit_values.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_diff_size_limit_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes + +targets: - agent daemons: @@ -118,6 +118,8 @@ def test_diff_size_limit_values(key, subkey, arch, value_name, size, get_configu wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_default.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_default.py index 66f2d553a7..0e27a86353 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_default.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_default.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes + +targets: - agent daemons: @@ -130,6 +130,8 @@ def test_file_size_default(key, subkey, arch, value_name, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_values.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_values.py index 210c139e45..ea41ef7b0e 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_values.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_file_size_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes + +targets: - agent daemons: @@ -115,13 +115,15 @@ def test_file_size_values(key, subkey, arch, value_name, size, get_configuration its size on each test case. Finally, the test will verify that the compressed 'diff' file has been created, and the related FIM event includes the 'content_changes' field if the value size does not exceed the specified limit and vice versa. - - Case 1: small size - The file is smaller than the file_limit configured, the diff_file is + - Case 1, small size - The file is smaller than the file_limit configured, the diff_file is generated and there is content_changes information - - Case 2: big size - The file is smaller than the file_limit configured,sp the diff_file is + - Case 2, big size - The file is smaller than the file_limit configured,sp the diff_file is not generated and the logs should not have content_changes data. wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes.py index 1d8711e6ed..c00e5c2273 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes + +targets: - agent daemons: @@ -116,6 +116,8 @@ def test_report_changes(key, subkey, arch, value_name, tags_to_apply, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_deleted.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_deleted.py index 42ac054493..9b08b6dc7d 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_deleted.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_deleted.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes + +targets: - agent daemons: @@ -157,6 +157,8 @@ def test_report_when_deleted_key(key, subkey, arch, value_name, enabled, tags_to wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str @@ -256,6 +258,8 @@ def test_report_changes_after_restart(get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_more_changes.py b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_more_changes.py index ef2b3a2d6c..a4f5519fb3 100644 --- a/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_more_changes.py +++ b/tests/integration/test_fim/test_registry/test_registry_report_changes/test_registry_report_changes_more_changes.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_report_changes + +targets: - agent daemons: @@ -121,6 +121,8 @@ def test_report_changes_more_changes(key, subkey, arch, value_name, tags_to_appl wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_restrict/test_registry_restrict.py b/tests/integration/test_fim/test_registry/test_registry_restrict/test_registry_restrict.py index 3f06a537a7..69d97e2989 100644 --- a/tests/integration/test_fim/test_registry/test_registry_restrict/test_registry_restrict.py +++ b/tests/integration/test_fim/test_registry/test_registry_restrict/test_registry_restrict.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_restrict + +targets: - agent daemons: @@ -125,6 +125,8 @@ def test_restrict_value(key, subkey, arch, value_name, triggers_event, tags_to_a wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str @@ -251,6 +253,8 @@ def test_restrict_key(key, subkey, test_subkey, arch, triggers_event, tags_to_ap wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str diff --git a/tests/integration/test_fim/test_registry/test_registry_tags/test_registry_tags.py b/tests/integration/test_fim/test_registry/test_registry_tags/test_registry_tags.py index 968beea463..7fb51a1bf3 100644 --- a/tests/integration/test_fim/test_registry/test_registry_tags/test_registry_tags.py +++ b/tests/integration/test_fim/test_registry/test_registry_tags/test_registry_tags.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: registry_tags + +targets: - agent daemons: @@ -49,9 +49,6 @@ 0: Only level 0 tests are performed, they check basic functionalities and are quick to perform. 1: Only level 1 tests are performed, they check functionalities of medium complexity. 2: Only level 2 tests are performed, they check advanced functionalities and are slow to perform. - -tags: - - fim_registry_tags ''' import os @@ -108,6 +105,8 @@ def test_tags(key, subkey, arch, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key: type: str From 44be5676b50704b25134cf600cd7aa25cb325120 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 3 Mar 2022 18:55:57 +0100 Subject: [PATCH 070/108] doc: Update synchronization suite documentation from fim with new schema changes. #2591 --- .../test_invalid_sync_response.py | 24 +++++++------------ .../test_registry_responses_win32.py | 12 ++++++---- .../test_sync_disabled.py | 24 +++++++------------ .../test_sync_disabled_win32.py | 12 ++++++---- .../test_sync_enabled_win32.py | 18 ++++++++++---- .../test_sync_interval.py | 24 +++++++------------ .../test_sync_interval_win32.py | 12 ++++++---- .../test_sync_registry_disabled_win32.py | 12 ++++++---- .../test_sync_registry_enabled_win32.py | 12 ++++++---- .../test_synchronize_integrity_scan.py | 24 +++++++------------ .../test_synchronize_integrity_win32.py | 12 ++++++---- 11 files changed, 91 insertions(+), 95 deletions(-) diff --git a/tests/integration/test_fim/test_synchronization/test_invalid_sync_response.py b/tests/integration/test_fim/test_synchronization/test_invalid_sync_response.py index 132e0d6802..0d206683c3 100644 --- a/tests/integration/test_fim/test_synchronization/test_invalid_sync_response.py +++ b/tests/integration/test_fim/test_synchronization/test_invalid_sync_response.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent - manager @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -108,6 +100,8 @@ def test_invalid_sync_response(get_configuration, configure_environment, restart wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_synchronization/test_registry_responses_win32.py b/tests/integration/test_fim/test_synchronization/test_registry_responses_win32.py index 0e8bc20126..fb59cc68de 100644 --- a/tests/integration/test_fim/test_synchronization/test_registry_responses_win32.py +++ b/tests/integration/test_fim/test_synchronization/test_registry_responses_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent daemons: @@ -113,6 +113,8 @@ def test_registry_sync_after_restart(key_name, value_name, configure_local_inter wazuh_min_version: 4.2.0 + tier: 1 + parameters: - key_name: type: str diff --git a/tests/integration/test_fim/test_synchronization/test_sync_disabled.py b/tests/integration/test_fim/test_synchronization/test_sync_disabled.py index 73e06268f3..3ee4205612 100644 --- a/tests/integration/test_fim/test_synchronization/test_sync_disabled.py +++ b/tests/integration/test_fim/test_synchronization/test_sync_disabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent - manager @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -111,6 +103,8 @@ def test_sync_disabled(get_configuration, configure_environment, restart_syschec wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_synchronization/test_sync_disabled_win32.py b/tests/integration/test_fim/test_synchronization/test_sync_disabled_win32.py index cc76a9035d..d56281980b 100644 --- a/tests/integration/test_fim/test_synchronization/test_sync_disabled_win32.py +++ b/tests/integration/test_fim/test_synchronization/test_sync_disabled_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent daemons: @@ -113,6 +113,8 @@ def test_sync_disabled(get_configuration, configure_environment, restart_syschec wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_synchronization/test_sync_enabled_win32.py b/tests/integration/test_fim/test_synchronization/test_sync_enabled_win32.py index f41b29e0dc..5d25c9f10b 100644 --- a/tests/integration/test_fim/test_synchronization/test_sync_enabled_win32.py +++ b/tests/integration/test_fim/test_synchronization/test_sync_enabled_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent daemons: @@ -110,7 +110,11 @@ def test_sync_disabled(get_configuration, configure_environment, restart_syschec the file/registry synchronization. For this purpose, the test will monitor a directory/key. Finally, it will verify that the FIM 'integrity' event generated corresponds with a file or a registry when the synchronization is enabled, depending on the test case. + wazuh_min_version: 4.2.0 + + tier: 1 + parameters: - get_configuration: type: fixture @@ -124,14 +128,18 @@ def test_sync_disabled(get_configuration, configure_environment, restart_syschec - wait_for_fim_start_sync_disabled: type: fixture brief: Wait for end of initial FIM scan. + assertions: - Verify that FIM 'integrity' events generated correspond to a file/registry depending on the value of the 'enabled' and the 'registry_enabled' tags (synchronization enabled). + input_description: Different test cases are contained in external YAML file (wazuh_sync_conf_win32.yaml) which includes configuration settings for the 'wazuh-syscheckd' daemon. That is combined with the testing directory/key to be monitored defined in this module. + expected_output: - r'.*Sending integrity control message' + tags: - scheduled - time_travel diff --git a/tests/integration/test_fim/test_synchronization/test_sync_interval.py b/tests/integration/test_fim/test_synchronization/test_sync_interval.py index cad3f738e7..a3a1b92c8e 100644 --- a/tests/integration/test_fim/test_synchronization/test_sync_interval.py +++ b/tests/integration/test_fim/test_synchronization/test_sync_interval.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent - manager @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -113,6 +105,8 @@ def test_sync_interval(get_configuration, configure_environment, restart_syschec wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_synchronization/test_sync_interval_win32.py b/tests/integration/test_fim/test_synchronization/test_sync_interval_win32.py index 952127bfb6..60ce6ff030 100644 --- a/tests/integration/test_fim/test_synchronization/test_sync_interval_win32.py +++ b/tests/integration/test_fim/test_synchronization/test_sync_interval_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 2 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent daemons: @@ -107,6 +107,8 @@ def test_sync_interval(get_configuration, configure_environment, restart_syschec wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_synchronization/test_sync_registry_disabled_win32.py b/tests/integration/test_fim/test_synchronization/test_sync_registry_disabled_win32.py index e755116bdc..b084a6c574 100644 --- a/tests/integration/test_fim/test_synchronization/test_sync_registry_disabled_win32.py +++ b/tests/integration/test_fim/test_synchronization/test_sync_registry_disabled_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent daemons: @@ -115,6 +115,8 @@ def test_sync_disabled(get_configuration, configure_environment, restart_syschec wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_synchronization/test_sync_registry_enabled_win32.py b/tests/integration/test_fim/test_synchronization/test_sync_registry_enabled_win32.py index 8bc1587dbb..49c33e52d5 100644 --- a/tests/integration/test_fim/test_synchronization/test_sync_registry_enabled_win32.py +++ b/tests/integration/test_fim/test_synchronization/test_sync_registry_enabled_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent daemons: @@ -114,6 +114,8 @@ def test_sync_disabled(get_configuration, configure_environment, restart_syschec wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_scan.py b/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_scan.py index 3d080fd298..676ac6fce3 100644 --- a/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_scan.py +++ b/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_scan.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent - manager @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/file-integrity/index.html @@ -141,6 +133,8 @@ def test_events_while_integrity_scan(tags_to_apply, get_configuration, configure wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_win32.py b/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_win32.py index a181ccbd0d..e7e4064337 100644 --- a/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_win32.py +++ b/tests/integration/test_fim/test_synchronization/test_synchronize_integrity_win32.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ The FIM capability is managed by the 'wazuh-syscheckd' daemon, which checks configured files for changes to the checksums, permissions, and ownership. -tier: 1 - -modules: +components: - fim -components: +suite: synchronization + +targets: - agent daemons: @@ -141,6 +141,8 @@ def test_events_while_integrity_scan(tags_to_apply, get_configuration, configure wazuh_min_version: 4.2.0 + tier: 1 + parameters: - tags_to_apply: type: set From e53aa82f076e701b5becc3a141959fd4f7c11369 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:27:10 +0100 Subject: [PATCH 071/108] doc: Update suites documentation from gcloud with new schema changes. #2591 The following suites has been updated: - configuration - functionality --- .../test_configuration/test_invalid.py | 24 +++++++---------- .../test_remote_configuration.py | 24 +++++++---------- .../test_configuration/test_schedule.py | 24 +++++++---------- .../test_functionality/test_day_wday.py | 26 ++++++++----------- .../test_functionality/test_interval.py | 24 +++++++---------- .../test_functionality/test_logging.py | 24 +++++++---------- .../test_functionality/test_max_messages.py | 24 +++++++---------- .../test_functionality/test_pull_on_start.py | 24 +++++++---------- .../test_functionality/test_rules.py | 24 +++++++---------- 9 files changed, 83 insertions(+), 135 deletions(-) diff --git a/tests/integration/test_gcloud/test_configuration/test_invalid.py b/tests/integration/test_gcloud/test_configuration/test_invalid.py index cca63054d7..cdcee3a31a 100644 --- a/tests/integration/test_gcloud/test_configuration/test_invalid.py +++ b/tests/integration/test_gcloud/test_configuration/test_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ will check if that module detects invalid configurations and indicates the location of the errors detected. -tier: 1 - -modules: +components: - gcloud -components: +suite: configuration + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html @@ -112,6 +104,8 @@ def test_invalid(get_configuration, configure_environment, reset_ossec_log, daem wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_gcloud/test_configuration/test_remote_configuration.py b/tests/integration/test_gcloud/test_configuration/test_remote_configuration.py index f247bceb81..8f296a5efa 100644 --- a/tests/integration/test_gcloud/test_configuration/test_remote_configuration.py +++ b/tests/integration/test_gcloud/test_configuration/test_remote_configuration.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ will check if the remote configuration used by GCP matches the local one set in the 'ossec.conf' file. -tier: 1 - -modules: +components: - gcloud -components: +suite: configuration + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html @@ -158,6 +150,8 @@ def test_remote_configuration(get_configuration, configure_environment, reset_os wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_gcloud/test_configuration/test_schedule.py b/tests/integration/test_gcloud/test_configuration/test_schedule.py index cfce9c785d..4849be435b 100644 --- a/tests/integration/test_gcloud/test_configuration/test_schedule.py +++ b/tests/integration/test_gcloud/test_configuration/test_schedule.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ will check if the 'gcp-pubsub' module executes at the periods set in the 'interval' tag. -tier: 1 - -modules: +components: - gcloud -components: +suite: configuration + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html#interval @@ -115,6 +107,8 @@ def test_schedule(get_configuration, configure_environment, reset_ossec_log, dae wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_gcloud/test_functionality/test_day_wday.py b/tests/integration/test_gcloud/test_functionality/test_day_wday.py index 724021a41b..5fdd0b154a 100644 --- a/tests/integration/test_gcloud/test_functionality/test_day_wday.py +++ b/tests/integration/test_gcloud/test_functionality/test_day_wday.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ will check if the 'gcp-pubsub' module gets the GCP logs at the date-time specified in the configuration and sleeps up to it. -tier: 0 - -modules: +components: - gcloud -components: +suite: functionality + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html#day @@ -144,6 +136,8 @@ def test_day_wday(tags_to_apply, get_configuration, configure_environment, reset wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set @@ -216,6 +210,8 @@ def test_day_wday_multiple(tags_to_apply, get_configuration, configure_environme wazuh_min_version: 4.2.0 + tier: 0 + parameters: - tags_to_apply: type: set diff --git a/tests/integration/test_gcloud/test_functionality/test_interval.py b/tests/integration/test_gcloud/test_functionality/test_interval.py index f7b588a480..a4a8890fea 100644 --- a/tests/integration/test_gcloud/test_functionality/test_interval.py +++ b/tests/integration/test_gcloud/test_functionality/test_interval.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ will check if the 'gcp-pubsub' module gets the GCP logs at the intervals specified in the configuration and sleeps up to them. -tier: 0 - -modules: +components: - gcloud -components: +suite: functionality + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html#interval @@ -126,6 +118,8 @@ def test_interval(get_configuration, configure_environment, reset_ossec_log, dae wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_gcloud/test_functionality/test_logging.py b/tests/integration/test_gcloud/test_functionality/test_logging.py index c90a9684dc..212ffc9150 100644 --- a/tests/integration/test_gcloud/test_functionality/test_logging.py +++ b/tests/integration/test_gcloud/test_functionality/test_logging.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ will check if the 'gcp-pubsub' module gets only the GCP events whose logging level matches the one specified in the 'logging' tag. -tier: 0 - -modules: +components: - gcloud -components: +suite: functionality + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html#logging @@ -123,6 +115,8 @@ def test_logging(get_configuration, configure_environment, reset_ossec_log, publ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_gcloud/test_functionality/test_max_messages.py b/tests/integration/test_gcloud/test_functionality/test_max_messages.py index 3283e94915..c24afcb216 100644 --- a/tests/integration/test_gcloud/test_functionality/test_max_messages.py +++ b/tests/integration/test_gcloud/test_functionality/test_max_messages.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ set in the 'max_messages' tag on the same operation when the number of them exceeds that limit. -tier: 0 - -modules: +components: - gcloud -components: +suite: functionality + +targets: - agent - manager @@ -38,18 +38,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html#max-messages @@ -135,6 +127,8 @@ def test_max_messages(get_configuration, configure_environment, reset_ossec_log, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_gcloud/test_functionality/test_pull_on_start.py b/tests/integration/test_gcloud/test_functionality/test_pull_on_start.py index 181a6400ee..8beb50588b 100644 --- a/tests/integration/test_gcloud/test_functionality/test_pull_on_start.py +++ b/tests/integration/test_gcloud/test_functionality/test_pull_on_start.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ will check if the 'gcp-pubsub' module gets GCP messages when it starts if the 'pull_on_start' tag is set to 'yes', and sleeps otherwise. -tier: 0 - -modules: +components: - gcloud -components: +suite: functionality + +targets: - agent - manager @@ -37,18 +37,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html#pull-on-start @@ -123,6 +115,8 @@ def test_pull_on_start(get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_gcloud/test_functionality/test_rules.py b/tests/integration/test_gcloud/test_functionality/test_rules.py index 72bed075fd..64489c5c1a 100644 --- a/tests/integration/test_gcloud/test_functionality/test_rules.py +++ b/tests/integration/test_gcloud/test_functionality/test_rules.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ if the module pulls messages that match the specified GCP rules and the generated alerts contain the expected rule ID. -tier: 0 - -modules: +components: - gcloud -components: +suite: functionality + +targets: - manager daemons: @@ -36,18 +36,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/gcp-pubsub.html @@ -125,6 +117,8 @@ def test_rules(get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture From 842a0045ea4f1cff19213ff44348f55a48f9a6a2 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:34:09 +0100 Subject: [PATCH 072/108] doc: Update suites documentation from github and logcollector with new schema changes. #2591 The following github suites has been updated: - configuration The following logcollector suites has been updated: - age - command_monitoring - configuration --- .../test_configuration/test_invalid.py | 24 +++---- .../test_age/test_age_datetime_changed.py | 33 ++++----- .../test_command_execution.py | 27 +++----- .../test_command_execution_dbg.py | 68 +++++++++++-------- .../test_command_execution_freq.py | 27 +++----- .../test_basic_configuration_age.py | 30 +++----- .../test_basic_configuration_alias.py | 29 +++----- .../test_basic_configuration_command.py | 29 +++----- .../test_basic_configuration_exclude.py | 29 +++----- .../test_basic_configuration_frequency.py | 29 +++----- ...est_basic_configuration_ignore_binaries.py | 29 +++----- .../test_basic_configuration_label.py | 29 +++----- .../test_basic_configuration_location.py | 29 +++----- .../test_basic_configuration_log_format.py | 32 +++------ ..._basic_configuration_only_future_events.py | 32 +++------ .../test_basic_configuration_out_format.py | 29 +++----- .../test_basic_configuration_query.py | 20 +++--- ...test_basic_configuration_reconnect_time.py | 12 ++-- .../test_basic_configuration_target.py | 27 +++----- 19 files changed, 213 insertions(+), 351 deletions(-) diff --git a/tests/integration/test_github/test_configuration/test_invalid.py b/tests/integration/test_github/test_configuration/test_invalid.py index 9b56334837..81774ca0f6 100644 --- a/tests/integration/test_github/test_configuration/test_invalid.py +++ b/tests/integration/test_github/test_configuration/test_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the actions performed by members of your organization. It includes details such as who performed the action, what the action was, and when it was performed. -tier: 0 - -modules: +components: - github -components: +suite: configuration + +targets: - agent - manager @@ -36,18 +36,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://github.com/wazuh/wazuh-documentation/blob/develop/source/github/monitoring-github-activity.rst @@ -260,6 +252,8 @@ def test_invalid(get_local_internal_options, configure_local_internal_options, wazuh_min_version: 4.3.0 + tier: 0 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_age/test_age_datetime_changed.py b/tests/integration/test_logcollector/test_age/test_age_datetime_changed.py index 6416c45c1a..ccd3b4e693 100644 --- a/tests/integration/test_logcollector/test_age/test_age_datetime_changed.py +++ b/tests/integration/test_logcollector/test_age/test_age_datetime_changed.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: age + +targets: - agent - manager @@ -38,26 +38,17 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Solaris 10 + - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -158,6 +149,8 @@ def test_configuration_age_datetime(get_configuration, configure_environment, co wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution.py b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution.py index 15473c8cf8..c97ffecdfa 100644 --- a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution.py +++ b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: command_monitoring + +targets: - agent - manager @@ -39,21 +39,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -168,6 +161,8 @@ def test_command_execution(configure_local_internal_options_module, get_configur wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py index 3b4a50c78d..ff22802d1e 100644 --- a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py +++ b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py @@ -1,8 +1,10 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 + type: integration + brief: The 'wazuh-logcollector' daemon monitors configured files and commands for new log messages. Specifically, these tests will check if commands with different characteristics are executed correctly by the logcollector. They will also check if the 'info' and 'debug' lines are @@ -11,44 +13,45 @@ servers or devices. This component can receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 -modules: - - logcollector + components: + - logcollector + +suite: command_monitoring + +targets: - agent - manager + daemons: - wazuh-logcollector + os_platform: - linux - macos - solaris + os_version: - Arch Linux - Amazon Linux 2 - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic + references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html#command - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html#alias - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html#log-format + tags: - logcollector_cmd_exec ''' @@ -193,18 +196,22 @@ def get_files_list(): def test_command_execution_dbg(get_files_list, create_file_structure_module, configure_local_internal_options_module, get_configuration, file_monitoring, configure_environment, restart_logcollector): - ''' + ''' description: Check if the 'wazuh-logcollector' daemon generates debug logs when running commands with - special characteristics. For this purpose, the test will configure the logcollector to run - a command, setting it in the 'command' tag and using the 'command' and 'full_command' log - formats. The properties of that command can be, for example, a non-existent command or one - that includes special characters. Once the logcollector has started, it will wait for the - 'running' event that indicates that the command has been executed. Finally, the test - will verify that the debug 'read N lines' event is generated, this event indicates the number - of lines read from the command run. Depending on test case, the test also will verify that - the debug event 'reading command' is generated, this event includes the output of the command - run, and its alias if it is set in the 'alias' tag. + special characteristics. For this purpose, the test will configure the logcollector to run + a command, setting it in the 'command' tag and using the 'command' and 'full_command' log + formats. The properties of that command can be, for example, a non-existent command or one + that includes special characters. Once the logcollector has started, it will wait for the + 'running' event that indicates that the command has been executed. Finally, the test + will verify that the debug 'read N lines' event is generated, this event indicates the number + of lines read from the command run. Depending on test case, the test also will verify that + the debug event 'reading command' is generated, this event includes the output of the command + run, and its alias if it is set in the 'alias' tag. + wazuh_min_version: 4.2.0 + + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture @@ -224,22 +231,25 @@ def test_command_execution_dbg(get_files_list, create_file_structure_module, con - restart_logcollector: type: fixture brief: Clear the 'ossec.log' file and start a new monitor. + assertions: - Verify that the debug 'running' event is generated when running the command set in the 'command' tag. - Verify that the debug 'reading command' event is generated when running the related command. - Verify that the debug 'lines' event is generated when running the related command. + input_description: A configuration template (test_command_execution) is contained in an external - YAML file (wazuh_command_conf.yaml), which includes configuration settings for - the 'wazuh-logcollector' daemon and, it is combined with the test cases - (log formats and commands to run) defined in the module. + YAML file (wazuh_command_conf.yaml), which includes configuration settings for + the 'wazuh-logcollector' daemon and, it is combined with the test cases + (log formats and commands to run) defined in the module. + expected_output: - r'DEBUG: Running .*' - r'DEBUG: Reading command message.*' - r'lines from command .*' + tags: - logs ''' - config = get_configuration['metadata'] # Check log line "DEBUG: Running command ''" diff --git a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_freq.py b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_freq.py index 6385585e63..1f39596af3 100644 --- a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_freq.py +++ b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_freq.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: command_monitoring + +targets: - agent - manager @@ -38,21 +38,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -126,6 +119,8 @@ def test_command_execution_freq(configure_local_internal_options_module, get_con wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_age.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_age.py index b9e010056e..3d50c065f5 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_age.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_age.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -38,27 +38,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html#age @@ -207,6 +193,8 @@ def test_configuration_age(get_configuration, configure_environment): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_alias.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_alias.py index 29ad49aafe..3869e049b7 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_alias.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_alias.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -39,26 +39,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -134,6 +121,8 @@ def test_configuration_alias(configure_local_internal_options_module, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_command.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_command.py index c1e6ebfdb3..46ca188480 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_command.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_command.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -39,26 +39,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -139,6 +126,8 @@ def test_configuration_command(configure_local_internal_options_module, get_conf wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_exclude.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_exclude.py index 7d1f6abc05..4a3ed34e6a 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_exclude.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_exclude.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -39,26 +39,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -146,6 +133,8 @@ def test_configuration_exclude(get_configuration, configure_environment, file_mo wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_frequency.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_frequency.py index d4a76cde12..1c1c7c88ea 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_frequency.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_frequency.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -38,26 +38,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -230,6 +217,8 @@ def test_configuration_frequency(configure_local_internal_options_module, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_ignore_binaries.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_ignore_binaries.py index 368e1064c5..bd571b6eef 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_ignore_binaries.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_ignore_binaries.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -38,26 +38,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -207,6 +194,8 @@ def test_ignore_binaries(get_configuration, configure_environment): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_label.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_label.py index 2876ab2d33..179c9cd005 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_label.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_label.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -39,26 +39,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -137,6 +124,8 @@ def test_configuration_label(get_configuration, configure_environment, restart_l wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_location.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_location.py index 26db770914..fe7dd97770 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_location.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_location.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -39,26 +39,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -137,6 +124,8 @@ def test_configuration_location(get_configuration, configure_environment, restar wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_log_format.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_log_format.py index f8091d2934..854ead4c99 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_log_format.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_log_format.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -16,12 +16,12 @@ text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -40,27 +40,15 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -312,6 +300,8 @@ def test_log_format(configure_local_internal_options_module, get_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_only_future_events.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_only_future_events.py index 2f9902a930..e693b76b40 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_only_future_events.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_only_future_events.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -38,27 +38,15 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -263,6 +251,8 @@ def test_only_future_events(get_configuration, configure_environment, generate_m wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_out_format.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_out_format.py index fb70e6ff55..e2c4ec5b45 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_out_format.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_out_format.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -38,26 +38,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -223,6 +210,8 @@ def test_configuration_out_format(get_configuration, configure_environment, conf wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_query.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_query.py index 371afdfd63..ea0b747d54 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_query.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_query.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent daemons: @@ -31,15 +31,11 @@ - windows os_version: + - macOS Catalina + - macOS Server - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP - - macOS Catalina references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -132,6 +128,8 @@ def test_configuration_query_valid(get_configuration, configure_environment, res wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_reconnect_time.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_reconnect_time.py index 7afe05a5e8..cded8fa59a 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_reconnect_time.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_reconnect_time.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022 Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent daemons: @@ -156,6 +156,8 @@ def test_configuration_reconnect_time(get_configuration, configure_environment): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_target.py b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_target.py index 3f07bc8f4c..7dedf802c2 100644 --- a/tests/integration/test_logcollector/test_configuration/test_basic_configuration_target.py +++ b/tests/integration/test_logcollector/test_configuration/test_basic_configuration_target.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: configuration + +targets: - agent - manager @@ -38,21 +38,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -172,6 +165,8 @@ def test_configuration_target(get_configuration, configure_environment, configur wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture From fcd97479fd971abdb779d74b55ebd8fe3a74e527 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:36:32 +0100 Subject: [PATCH 073/108] doc: Update suites documentation from logcollector with new schema changes. #2591 The following suites has been updated: - age - keep_running - location - log_format - macos - only_future_events - options - reconnect_time - statistics --- .../test_age/test_age_basic.py | 29 ++++++------------- .../test_keep_running/test_keep_running.py | 27 +++++++---------- .../test_location/test_location.py | 29 ++++++------------- .../test_location/test_location_exclude.py | 29 ++++++------------- .../test_location_custom_sockets.py | 29 +++++++------------ .../test_log_format/test_log_format_values.py | 29 ++++++------------- .../test_macos_file_status_basic.py | 13 +++++---- .../test_macos_file_status_predicate.py | 13 +++++---- .../test_macos_file_status_when_no_macos.py | 13 +++++---- .../test_macos/test_macos_format_basic.py | 13 +++++---- .../test_macos_format_only_future_events.py | 13 +++++---- .../test_macos/test_macos_format_query.py | 13 +++++---- .../test_macos/test_macos_log_process.py | 16 ++++++---- .../test_macos/test_macos_multiline_values.py | 13 +++++---- .../test_only_future_events.py | 27 +++++++---------- .../test_options_state_interval.py | 29 ++++++------------- .../test_options_state_interval_no_file.py | 24 ++++++--------- .../test_reconnect_time.py | 17 +++++------ .../test_statistics/test_statistics_macos.py | 13 +++++---- 19 files changed, 169 insertions(+), 220 deletions(-) diff --git a/tests/integration/test_logcollector/test_age/test_age_basic.py b/tests/integration/test_logcollector/test_age/test_age_basic.py index a962ad78fd..3855ebe3b0 100644 --- a/tests/integration/test_logcollector/test_age/test_age_basic.py +++ b/tests/integration/test_logcollector/test_age/test_age_basic.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: age + +targets: - agent - manager @@ -37,26 +37,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -171,6 +158,8 @@ def test_configuration_age_basic(configure_local_internal_options_module, get_fi wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_keep_running/test_keep_running.py b/tests/integration/test_logcollector/test_keep_running/test_keep_running.py index f8220697e5..fc9be1d0c8 100644 --- a/tests/integration/test_logcollector/test_keep_running/test_keep_running.py +++ b/tests/integration/test_logcollector/test_keep_running/test_keep_running.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: keep_running + +targets: - agent - manager @@ -37,21 +37,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -137,6 +130,8 @@ def test_keep_running(configure_local_internal_options_module, get_configuration wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_location/test_location.py b/tests/integration/test_logcollector/test_location/test_location.py index abad357d7d..d50e5f30ec 100644 --- a/tests/integration/test_logcollector/test_location/test_location.py +++ b/tests/integration/test_logcollector/test_location/test_location.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: location + +targets: - agent - manager @@ -37,26 +37,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -227,6 +214,8 @@ def test_location(get_files_list, create_file_structure_module, get_configuratio wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_files_list: type: fixture diff --git a/tests/integration/test_logcollector/test_location/test_location_exclude.py b/tests/integration/test_logcollector/test_location/test_location_exclude.py index 035761cba3..2e075f94de 100644 --- a/tests/integration/test_logcollector/test_location/test_location_exclude.py +++ b/tests/integration/test_logcollector/test_location/test_location_exclude.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: location + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -226,6 +213,8 @@ def test_location_exclude(get_files_list, create_file_structure_module, get_conf wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_files_list: type: fixture diff --git a/tests/integration/test_logcollector/test_location_custom_sockets/test_location_custom_sockets.py b/tests/integration/test_logcollector/test_location_custom_sockets/test_location_custom_sockets.py index b59d620d41..c8a1d4221f 100644 --- a/tests/integration/test_logcollector/test_location_custom_sockets/test_location_custom_sockets.py +++ b/tests/integration/test_logcollector/test_location_custom_sockets/test_location_custom_sockets.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 1 - -modules: +components: - logcollector -components: +suite: location_custom_sockets + +targets: - agent - manager @@ -36,26 +36,15 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html#location - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/localfile.html#target - -tags: - - logcollector_location_cust_sockets ''' import pytest from os import path, unlink @@ -192,6 +181,8 @@ def test_location_custom_sockets(get_local_internal_options, configure_local_int wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_local_internal_options: type: fixture @@ -310,6 +301,8 @@ def test_location_custom_sockets_offline(get_local_internal_options, configure_l wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_log_format/test_log_format_values.py b/tests/integration/test_logcollector/test_log_format/test_log_format_values.py index 6b24b8ee53..d6021f2a70 100644 --- a/tests/integration/test_logcollector/test_log_format/test_log_format_values.py +++ b/tests/integration/test_logcollector/test_log_format/test_log_format_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: log_format + +targets: - agent - manager @@ -37,26 +37,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -454,6 +441,8 @@ def test_log_format(configure_local_internal_options_module, get_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_file_status_basic.py b/tests/integration/test_logcollector/test_macos/test_macos_file_status_basic.py index 33029df4aa..c823af513e 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_file_status_basic.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_file_status_basic.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -31,6 +31,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -105,6 +106,8 @@ def test_macos_file_status_basic(restart_logcollector_required_daemons_package, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_logcollector_required_daemons_package: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_file_status_predicate.py b/tests/integration/test_logcollector/test_macos/test_macos_file_status_predicate.py index d7e935c581..204fa1aa8a 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_file_status_predicate.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_file_status_predicate.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ This component can receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -99,6 +100,8 @@ def test_macos_file_status_predicate(restart_logcollector_required_daemons_packa wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_logcollector_required_daemons_package: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_file_status_when_no_macos.py b/tests/integration/test_logcollector/test_macos/test_macos_file_status_when_no_macos.py index b828c54321..f360726463 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_file_status_when_no_macos.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_file_status_when_no_macos.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ This component can receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -111,6 +112,8 @@ def test_macos_file_status_when_no_macos(restart_logcollector_required_daemons_p wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_logcollector_required_daemons_package: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_format_basic.py b/tests/integration/test_logcollector/test_macos/test_macos_format_basic.py index b35ffac7cc..abfb5d20ce 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_format_basic.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_format_basic.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -111,6 +112,8 @@ def test_macos_format_basic(restart_logcollector_required_daemons_package, get_c wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_logcollector_required_daemons_package: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_format_only_future_events.py b/tests/integration/test_logcollector/test_macos/test_macos_format_only_future_events.py index 43c94cdc74..d9551432f2 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_format_only_future_events.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_format_only_future_events.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ This component can receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -112,6 +113,8 @@ def test_macos_format_only_future_events(restart_logcollector_required_daemons_p wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_logcollector_required_daemons_package: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_format_query.py b/tests/integration/test_logcollector/test_macos/test_macos_format_query.py index e0305ace2e..0f2c971532 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_format_query.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_format_query.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 1 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -363,6 +364,8 @@ def test_macos_format_query(configure_local_internal_options_module, restart_log wazuh_min_version: 4.2.0 + tier: 1 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_log_process.py b/tests/integration/test_logcollector/test_macos/test_macos_log_process.py index 9af5342eea..4e9a5cb737 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_log_process.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_log_process.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -115,6 +115,8 @@ def test_independent_log_process(get_configuration, configure_environment, file_ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture @@ -186,6 +188,8 @@ def test_macos_log_process_stop(get_configuration, configure_environment, file_m wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture @@ -252,6 +256,8 @@ def test_macos_log_process_stop_suddenly_warning(get_configuration, configure_en wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logcollector/test_macos/test_macos_multiline_values.py b/tests/integration/test_logcollector/test_macos/test_macos_multiline_values.py index d5e4311695..e6e531faa4 100644 --- a/tests/integration/test_logcollector/test_macos/test_macos_multiline_values.py +++ b/tests/integration/test_logcollector/test_macos/test_macos_multiline_values.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ or devices. This component can receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: macos + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -96,6 +97,8 @@ def test_macos_multiline_values(configure_local_internal_options_module, restart wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_only_future_events/test_only_future_events.py b/tests/integration/test_logcollector/test_only_future_events/test_only_future_events.py index 2884246602..026f4f6e7a 100644 --- a/tests/integration/test_logcollector/test_only_future_events/test_only_future_events.py +++ b/tests/integration/test_logcollector/test_only_future_events/test_only_future_events.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: only_future_events + +targets: - agent - manager @@ -37,21 +37,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 - - macOS Catalina - Solaris 10 - Solaris 11 + - macOS Catalina + - macOS Server + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -152,6 +145,8 @@ def test_only_future_events(configure_local_internal_options_module, get_configu wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_options/test_options_state_interval.py b/tests/integration/test_logcollector/test_options/test_options_state_interval.py index 7013070bed..6d8e5c9f12 100644 --- a/tests/integration/test_logcollector/test_options/test_options_state_interval.py +++ b/tests/integration/test_logcollector/test_options/test_options_state_interval.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ This component can receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 1 - -modules: +components: - logcollector -components: +suite: options + +targets: - agent - manager @@ -36,26 +36,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -118,6 +105,8 @@ def test_options_state_interval(get_local_internal_options, file_monitoring): wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_options/test_options_state_interval_no_file.py b/tests/integration/test_logcollector/test_options/test_options_state_interval_no_file.py index b995c06d6a..e219664e99 100644 --- a/tests/integration/test_logcollector/test_options/test_options_state_interval_no_file.py +++ b/tests/integration/test_logcollector/test_options/test_options_state_interval_no_file.py @@ -1,5 +1,5 @@ """ -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 1 - -modules: +components: - logcollector -components: +suite: options + +targets: - manager daemons: @@ -34,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -167,6 +159,8 @@ def test_options_state_interval_no_file(get_local_internal_options_function, con wazuh_min_version: 4.2.0 + tier: 1 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logcollector/test_reconnect_time/test_reconnect_time.py b/tests/integration/test_logcollector/test_reconnect_time/test_reconnect_time.py index c0a515bfe6..802837cb93 100644 --- a/tests/integration/test_logcollector/test_reconnect_time/test_reconnect_time.py +++ b/tests/integration/test_logcollector/test_reconnect_time/test_reconnect_time.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -15,12 +15,12 @@ It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 0 - -modules: +components: - logcollector -components: +suite: reconnect_time + +targets: - agent daemons: @@ -31,13 +31,8 @@ os_version: - Windows 10 - - Windows 8 - - Windows 7 - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 - - Windows XP references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -137,6 +132,8 @@ def test_reconnect_time(start_eventlog_process, get_local_internal_options, conf wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_logcollector/test_statistics/test_statistics_macos.py b/tests/integration/test_logcollector/test_statistics/test_statistics_macos.py index 479f5cc2b2..bbc672cea4 100644 --- a/tests/integration/test_logcollector/test_statistics/test_statistics_macos.py +++ b/tests/integration/test_logcollector/test_statistics/test_statistics_macos.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -14,12 +14,12 @@ receive logs through text files or Windows event logs. It can also directly receive logs via remote syslog which is useful for firewalls and other such devices. -tier: 1 - -modules: +components: - logcollector -components: +suite: statistics + +targets: - agent daemons: @@ -30,6 +30,7 @@ os_version: - macOS Catalina + - macOS Server references: - https://documentation.wazuh.com/current/user-manual/capabilities/log-data-collection/index.html @@ -92,6 +93,8 @@ def test_options_state_interval_no_file(configure_local_internal_options_module, wazuh_min_version: 4.2.0 + tier: 1 + parameters: - configure_local_internal_options_module: type: fixture From 711be256e3dc12b393fb54611baf819491ef6f0a Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:39:22 +0100 Subject: [PATCH 074/108] doc: Update suites documentation from logtest with new schema changes. #2591 The following suites has been updated: - configuration - invalid_rule_decoders_syntax - invalid_socket_input - invalid_token - log_process_option - remove_old_sessions - remove_session - rules_decoders_load - ruleset_refresh --- .../test_configuration_file.py | 24 +++++++------------ .../test_get_configuration_sock.py | 24 +++++++------------ .../test_invalid_decoder_syntax.py | 24 +++++++------------ .../test_invalid_rules_syntax.py | 24 +++++++------------ .../test_invalid_socket_input.py | 24 +++++++------------ .../test_invalid_session_token.py | 24 +++++++------------ .../test_rules_verbose.py | 24 +++++++------------ .../test_remove_old_session_for_inactivity.py | 24 +++++++------------ .../test_remove_old_sessions.py | 24 +++++++------------ .../test_remove_session.py | 24 +++++++------------ .../test_load_rules_decoders.py | 24 +++++++------------ .../test_ruleset_refresh/test_alert_labels.py | 24 +++++++------------ .../test_ruleset_refresh/test_cdb_labels.py | 24 +++++++------------ .../test_decoder_labels.py | 24 +++++++------------ .../test_ruleset_refresh/test_rule_labels.py | 24 +++++++------------ 15 files changed, 135 insertions(+), 225 deletions(-) diff --git a/tests/integration/test_logtest/test_configuration/test_configuration_file.py b/tests/integration/test_logtest/test_configuration/test_configuration_file.py index 0966c88924..47b8a54741 100644 --- a/tests/integration/test_logtest/test_configuration/test_configuration_file.py +++ b/tests/integration/test_logtest/test_configuration/test_configuration_file.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: configuration + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -91,6 +83,8 @@ def test_configuration_file(get_configuration, configure_environment, restart_wa wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logtest/test_configuration/test_get_configuration_sock.py b/tests/integration/test_logtest/test_configuration/test_get_configuration_sock.py index 132e776021..6eba03bff5 100644 --- a/tests/integration/test_logtest/test_configuration/test_get_configuration_sock.py +++ b/tests/integration/test_logtest/test_configuration/test_get_configuration_sock.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: configuration + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -94,6 +86,8 @@ def test_get_configuration_sock(get_configuration, configure_environment, restar wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_decoder_syntax.py b/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_decoder_syntax.py index c20800c855..fb5bde6996 100644 --- a/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_decoder_syntax.py +++ b/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_decoder_syntax.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: invalid_rule_decoders_syntax + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -115,6 +107,8 @@ def test_invalid_decoder_syntax(get_configuration, configure_local_decoders, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_rules_syntax.py b/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_rules_syntax.py index a95e0dfd7e..261a0fd5b5 100644 --- a/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_rules_syntax.py +++ b/tests/integration/test_logtest/test_invalid_rule_decoders_syntax/test_invalid_rules_syntax.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: invalid_rule_decoders_syntax + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -115,6 +107,8 @@ def test_invalid_rule_syntax(get_configuration, configure_local_rules, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logtest/test_invalid_socket_input/test_invalid_socket_input.py b/tests/integration/test_logtest/test_invalid_socket_input/test_invalid_socket_input.py index aa4b6ea242..0e217957e0 100644 --- a/tests/integration/test_logtest/test_invalid_socket_input/test_invalid_socket_input.py +++ b/tests/integration/test_logtest/test_invalid_socket_input/test_invalid_socket_input.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: invalid_socket_input + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -91,6 +83,8 @@ def test_invalid_socket_input(restart_required_logtest_daemons, wait_for_logtest wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture diff --git a/tests/integration/test_logtest/test_invalid_token/test_invalid_session_token.py b/tests/integration/test_logtest/test_invalid_token/test_invalid_session_token.py index acef5787ad..a6b5e843da 100644 --- a/tests/integration/test_logtest/test_invalid_token/test_invalid_session_token.py +++ b/tests/integration/test_logtest/test_invalid_token/test_invalid_session_token.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: invalid_token + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -103,6 +95,8 @@ def test_invalid_session_token(restart_required_logtest_daemons, wait_for_logtes wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture diff --git a/tests/integration/test_logtest/test_log_process_options/test_rules_verbose.py b/tests/integration/test_logtest/test_log_process_options/test_rules_verbose.py index 3007a29c43..bfe5efec88 100644 --- a/tests/integration/test_logtest/test_log_process_options/test_rules_verbose.py +++ b/tests/integration/test_logtest/test_log_process_options/test_rules_verbose.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: log_process_option + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -153,6 +145,8 @@ def test_rules_verbose(get_configuration, restart_required_logtest_daemons, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_session_for_inactivity.py b/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_session_for_inactivity.py index 60b00e1b6f..f1e759d2bf 100644 --- a/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_session_for_inactivity.py +++ b/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_session_for_inactivity.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: remove_old_sessions + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -110,6 +102,8 @@ def test_remove_old_session_for_inactivity(configure_local_internal_options_modu wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_sessions.py b/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_sessions.py index 492e1cbf72..275a4b9301 100644 --- a/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_sessions.py +++ b/tests/integration/test_logtest/test_remove_old_sessions/test_remove_old_sessions.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: remove_old_sessions + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -114,6 +106,8 @@ def test_remove_old_session(configure_local_internal_options_module, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configure_local_internal_options_module: type: fixture diff --git a/tests/integration/test_logtest/test_remove_session/test_remove_session.py b/tests/integration/test_logtest/test_remove_session/test_remove_session.py index 486a257102..26f89e194e 100644 --- a/tests/integration/test_logtest/test_remove_session/test_remove_session.py +++ b/tests/integration/test_logtest/test_remove_session/test_remove_session.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: remove_session + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -112,6 +104,8 @@ def test_remove_session(restart_required_logtest_daemons, wait_for_logtest_start wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture diff --git a/tests/integration/test_logtest/test_rules_decoders_load/test_load_rules_decoders.py b/tests/integration/test_logtest/test_rules_decoders_load/test_load_rules_decoders.py index 106e81846b..b77ef3523d 100644 --- a/tests/integration/test_logtest/test_rules_decoders_load/test_load_rules_decoders.py +++ b/tests/integration/test_logtest/test_rules_decoders_load/test_load_rules_decoders.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: rules_decoders_load + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -119,6 +111,8 @@ def test_load_rules_decoders(restart_required_logtest_daemons, wait_for_logtest_ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture diff --git a/tests/integration/test_logtest/test_ruleset_refresh/test_alert_labels.py b/tests/integration/test_logtest/test_ruleset_refresh/test_alert_labels.py index 23c2b699c3..e9c7572f87 100644 --- a/tests/integration/test_logtest/test_ruleset_refresh/test_alert_labels.py +++ b/tests/integration/test_logtest/test_ruleset_refresh/test_alert_labels.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: ruleset_refresh + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -123,6 +115,8 @@ def test_rule_list(restart_required_logtest_daemons, get_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture diff --git a/tests/integration/test_logtest/test_ruleset_refresh/test_cdb_labels.py b/tests/integration/test_logtest/test_ruleset_refresh/test_cdb_labels.py index 09716d9f14..360e2d8fb9 100644 --- a/tests/integration/test_logtest/test_ruleset_refresh/test_cdb_labels.py +++ b/tests/integration/test_logtest/test_ruleset_refresh/test_cdb_labels.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: ruleset_refresh + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -136,6 +128,8 @@ def test_cdb_list(restart_required_logtest_daemons, get_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture diff --git a/tests/integration/test_logtest/test_ruleset_refresh/test_decoder_labels.py b/tests/integration/test_logtest/test_ruleset_refresh/test_decoder_labels.py index fe020cf71a..8ae87cf1f3 100644 --- a/tests/integration/test_logtest/test_ruleset_refresh/test_decoder_labels.py +++ b/tests/integration/test_logtest/test_ruleset_refresh/test_decoder_labels.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: ruleset_refresh + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -123,6 +115,8 @@ def test_rules_verbose(restart_required_logtest_daemons, get_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture diff --git a/tests/integration/test_logtest/test_ruleset_refresh/test_rule_labels.py b/tests/integration/test_logtest/test_ruleset_refresh/test_rule_labels.py index f9a0a229f2..6ef6cb1827 100644 --- a/tests/integration/test_logtest/test_ruleset_refresh/test_rule_labels.py +++ b/tests/integration/test_logtest/test_ruleset_refresh/test_rule_labels.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ the 'wazuh-logtest' tool or by making requests via RESTful API. These tests will check if the logtest configuration is valid. Also checks rules, decoders, decoders, alerts matching logs correctly. -tier: 0 - -modules: +components: - logtest -components: +suite: ruleset_refresh + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html @@ -122,6 +114,8 @@ def test_rule_list(restart_required_logtest_daemons, get_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_required_logtest_daemons: type: fixture From 5c1a7fcf96fb934d0bf42f1d1049747c67e40b90 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:41:34 +0100 Subject: [PATCH 075/108] doc: Update suites documentation from office365 and remoted with new schema changes. #2591 The following office365 suites has been updated: - configuration The following remoted suites has been updated: - active_response - agent_communication --- .../test_configuration/test_invalid.py | 27 +++++++------------ .../test_active_response_send_ar.py | 24 +++++++---------- ...on_shared_configuration_startup_message.py | 26 +++++++----------- .../test_agents_switching_protocols.py | 26 +++++++----------- .../test_invalid_protocol_communication.py | 26 +++++++----------- ...est_multi_agent_protocols_communication.py | 24 +++++++---------- .../test_multi_agent_status.py | 26 +++++++----------- .../test_protocols_communication.py | 26 +++++++----------- .../test_request_agent_info.py | 26 +++++++----------- .../test_shared_configuration.py | 26 +++++++----------- 10 files changed, 97 insertions(+), 160 deletions(-) diff --git a/tests/integration/test_office365/test_configuration/test_invalid.py b/tests/integration/test_office365/test_configuration/test_invalid.py index fc67e01cb9..6c196ff525 100644 --- a/tests/integration/test_office365/test_configuration/test_invalid.py +++ b/tests/integration/test_office365/test_configuration/test_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,12 @@ and events into tenant-specific content blobs, which are classified by the type and source of the content they contain. -tier: 0 - -modules: +components: - office365 -components: +suite: configuration + +targets: - manager daemons: @@ -35,25 +35,14 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://github.com/wazuh/wazuh-documentation/blob/develop/source/office365/index.rst - https://github.com/wazuh/wazuh-documentation/blob/develop/source/office365/monitoring-office365-activity.rst - -tags: - - office365_configuration ''' import os import sys @@ -260,6 +249,8 @@ def test_invalid(get_local_internal_options, configure_local_internal_options, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_local_internal_options: type: fixture diff --git a/tests/integration/test_remoted/test_active_response/test_active_response_send_ar.py b/tests/integration/test_remoted/test_active_response/test_active_response_send_ar.py index a63aca1f49..1c7ed57c98 100644 --- a/tests/integration/test_remoted/test_active_response/test_active_response_send_ar.py +++ b/tests/integration/test_remoted/test_active_response/test_active_response_send_ar.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -10,12 +10,12 @@ criteria are met. These tests will check if an active response command is sent correctly to the Wazuh agent by `wazuh-remoted` daemon. -tier: 1 - -modules: +components: - remoted -components: +suite: active_response + +targets: - manager daemons: @@ -31,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -113,6 +105,8 @@ def test_active_response_ar_sending(get_configuration, configure_environment, re wazuh_min_version: 4.2.0 + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_agent_communication/test_agent_version_shared_configuration_startup_message.py b/tests/integration/test_remoted/test_agent_communication/test_agent_version_shared_configuration_startup_message.py index ecad418cbf..f699887e4e 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_agent_version_shared_configuration_startup_message.py +++ b/tests/integration/test_remoted/test_agent_communication/test_agent_version_shared_configuration_startup_message.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -11,12 +11,12 @@ Agent's status should change from 'disconnected' to 'active' status after the manager receives the agents' keep-alive message. -tier: 2 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -31,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -115,7 +107,9 @@ def test_agent_remote_configuration(agent_name, get_configuration, configure_env ensuring the agent version is correct. wazuh_min_version: 4.2.0 - + + tier: 2 + parameters: - agent_name: type: dict_keys diff --git a/tests/integration/test_remoted/test_agent_communication/test_agents_switching_protocols.py b/tests/integration/test_remoted/test_agent_communication/test_agents_switching_protocols.py index 96f92aaffe..2a5d5092c8 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_agents_switching_protocols.py +++ b/tests/integration/test_remoted/test_agent_communication/test_agents_switching_protocols.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, these tests will check that the agent can connect to the manager switching their protocol after being disconnected. -tier: 2 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -126,7 +118,9 @@ def test_agents_switching_protocols(get_configuration, configure_environment, re connect the agents switching their protocol. wazuh_min_version: 4.2.0 - + + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_agent_communication/test_invalid_protocol_communication.py b/tests/integration/test_remoted/test_agent_communication/test_invalid_protocol_communication.py index f395879216..a665a36590 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_invalid_protocol_communication.py +++ b/tests/integration/test_remoted/test_agent_communication/test_invalid_protocol_communication.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, these tests will check that the manager receives an event from a protocol that is not allowed. -tier: 0 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -169,7 +161,9 @@ def test_invalid_protocol_communication(get_configuration, configure_environment error based in the protocol used. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_agent_communication/test_multi_agent_protocols_communication.py b/tests/integration/test_remoted/test_agent_communication/test_multi_agent_protocols_communication.py index 60c8b6b77f..2f1f4e2a35 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_multi_agent_protocols_communication.py +++ b/tests/integration/test_remoted/test_agent_communication/test_multi_agent_protocols_communication.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, these tests will check that the manager communicates with several agents simultaneously with different protocols. -tier: 2 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -187,6 +179,8 @@ def test_multi_agents_protocols_communication(get_configuration, configure_envir wazuh_min_version: 4.2.0 + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_agent_communication/test_multi_agent_status.py b/tests/integration/test_remoted/test_agent_communication/test_multi_agent_status.py index 79e441f582..4da91751f9 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_multi_agent_status.py +++ b/tests/integration/test_remoted/test_agent_communication/test_multi_agent_status.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, these tests will check that the status of multiple agents is active after sending start-up and keep-alive events to each of them. -tier: 2 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -179,7 +171,9 @@ def test_protocols_communication(get_configuration, configure_environment, resta sends keep-alives messages causing the agent to never being in active status. wazuh_min_version: 4.2.0 - + + tier: 2 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_agent_communication/test_protocols_communication.py b/tests/integration/test_remoted/test_agent_communication/test_protocols_communication.py index a3c6942fa5..38ceba0a36 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_protocols_communication.py +++ b/tests/integration/test_remoted/test_agent_communication/test_protocols_communication.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, these tests will check the agent-manager communication with different protocols. Two threads are using, one for sending the message and other for monitoring the queue socket. -tier: 0 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -156,7 +148,9 @@ def test_protocols_communication(get_configuration, configure_environment, resta Then, after the sender ends, the socket connection is closed. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_agent_communication/test_request_agent_info.py b/tests/integration/test_remoted/test_agent_communication/test_request_agent_info.py index cc2e6bceb3..988ee633ed 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_request_agent_info.py +++ b/tests/integration/test_remoted/test_agent_communication/test_request_agent_info.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, these tests will check that the manager can communicate correctly with the agent to ask for its information. -tier: 0 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -114,7 +106,9 @@ def test_request(get_configuration, configure_environment, remove_shared_files, from default agent group to reduce the time required by the test to make the checks. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_agent_communication/test_shared_configuration.py b/tests/integration/test_remoted/test_agent_communication/test_shared_configuration.py index d2e294ffa4..3f26fd44d2 100644 --- a/tests/integration/test_remoted/test_agent_communication/test_shared_configuration.py +++ b/tests/integration/test_remoted/test_agent_communication/test_shared_configuration.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, these tests will send the shared configuration to the agent and check if the configuration is completely pushed. -tier: 1 - -modules: +components: - remoted -components: +suite: agent_communication + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html @@ -110,7 +102,9 @@ def test_push_shared_config(get_configuration, configure_environment, remove_sha from default agent group to reduce the time required by the test to make the checks. wazuh_min_version: 4.2.0 - + + tier: 1 + parameters: - get_configuration: type: fixture From 1dd9ba7a27ae6d454657dc8f8c88257a9cdc08f5 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:43:13 +0100 Subject: [PATCH 076/108] doc: Update suites documentation from remoted with new schema changes. #2591 The following suites has been updated: - configuration --- ...iguration_connection_invalid_connection.py | 26 +++++++------------ ...c_configuration_connection_invalid_port.py | 26 +++++++------------ ...nfiguration_connection_invalid_protocol.py | 25 +++++++----------- ...st_basic_configuration_connection_valid.py | 24 +++++++---------- .../test_basic_configuration_ipv6.py | 26 +++++++------------ ...st_basic_configuration_local_ip_invalid.py | 26 +++++++------------ ...test_basic_configuration_local_ip_valid.py | 26 +++++++------------ ...t_basic_configuration_queue_size_syslog.py | 26 +++++++------------ ..._basic_configuration_queue_size_too_big.py | 23 +++++++--------- ...st_basic_configuration_queue_size_valid.py | 26 +++++++------------ ...configuration_rids_closing_time_invalid.py | 26 +++++++------------ ...c_configuration_rids_closing_time_valid.py | 26 +++++++------------ ...uration_syslog_allowed_denied_ips_valid.py | 24 +++++++---------- ...onfiguration_syslog_allowed_ips_invalid.py | 26 +++++++------------ ...t_basic_configuration_syslog_denied_ips.py | 24 +++++++---------- ...configuration_syslog_denied_ips_invalid.py | 26 +++++++------------ ...sic_configuration_syslog_no_allowed_ips.py | 26 +++++++------------ 17 files changed, 166 insertions(+), 266 deletions(-) diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_connection.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_connection.py index 12a895443a..312f97ab03 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_connection.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_connection.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that the expected error message is produced when invalid 'connection' values are used in the configuration. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -92,7 +84,9 @@ def test_invalid_connection(get_configuration, configure_environment, restart_re check if is correct using a FileMonitor catching the errors. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_port.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_port.py index 54bdc7fb5e..bbfa8f8b0a 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_port.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_port.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that the expected error message is produced when invalid 'port' values are used in the configuration. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -93,7 +85,9 @@ def test_invalid_port(get_configuration, configure_environment, restart_remoted) check if is correct using a FileMonitor catching the errors. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_protocol.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_protocol.py index 15c0885381..34394c6eca 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_protocol.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_invalid_protocol.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that in case a protocol is invalid only the valid one is used. In addition, if none protocol is valid, TCP should be used. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,11 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic + references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -112,6 +105,8 @@ def test_invalid_protocol(get_configuration, configure_environment, restart_remo wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_valid.py index 19198cc8ab..2efc4eac29 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_connection_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that 'connection' can be configured as 'secure' or 'syslog' properly. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -110,6 +102,8 @@ def test_connection_valid(get_configuration, configure_environment, restart_remo wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py index 646dcd47fc..bbb1afecf4 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that remoted starts correctly configuring an IPv6 address. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -96,7 +88,9 @@ def test_ipv6_secure(get_configuration, configure_environment, restart_remoted, used instead), checks if the configuration is the same as the API reponse. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_invalid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_invalid.py index dfd8444dda..c494fed94b 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_invalid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that remoted fails when 'local_ip' is configured with an invalid value, searching the error message produced. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -98,7 +90,9 @@ def test_local_ip_invalid(get_configuration, configure_environment, restart_remo to find the error message produced. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py index 37c904aca9..98f192310b 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that remoted starts correctly when setting 'local_ip' with different IPs values. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -106,7 +98,9 @@ def test_local_ip_valid(get_configuration, configure_environment, restart_remote with the API response. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_syslog.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_syslog.py index e5be50c37b..23a771c3ae 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_syslog.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_syslog.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check if 'wazuh-remoted' fails when 'queue_size' tag is used at the same time as a syslog connection. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -93,7 +85,9 @@ def test_queue_size_syslog(get_configuration, configure_environment, restart_rem For this purpose, it uses the configuration from test cases and check if the error has ben logged. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_too_big.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_too_big.py index 5badbeb622..31ff8f6a35 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_too_big.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_too_big.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -8,12 +8,13 @@ brief: The 'wazuh-remoted' program is the server side daemon that communicates with the agents. Specifically, this test will check that a warning message is produced when 'wazuh-remoted' sets the queue size too big (greater than 262144) -tier: 0 -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -28,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -98,6 +91,8 @@ def test_big_queue_size(get_configuration, configure_environment, restart_remote wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py index ee0c9cd108..cf6efa205f 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that 'wazuh-remoted' starts correctly when queue size is set with a valid value. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -98,7 +90,9 @@ def test_queue_size_valid(get_configuration, configure_environment, restart_remo response. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_invalid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_invalid.py index d4edb18339..24c5e5943c 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_invalid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check if 'wazuh-remoted' produces an error message when an invalid 'rids_closing_time' value is set. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -94,7 +86,9 @@ def test_rids_closing_time_invalid(get_configuration, configure_environment, res it uses the configuration from test cases and check if the warning has been logged. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py index 83a34b0b27..4d485615b6 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-20212, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check if 'wazuh-remoted' starts correclty when a valid 'rids_closing_time' value is set. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -107,7 +99,9 @@ def test_rids_closing_time_valid(get_configuration, configure_environment, resta it uses the configuration from test cases and check if the selected cfg matches with the API response. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_denied_ips_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_denied_ips_valid.py index fc93dacba3..60b3dbc009 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_denied_ips_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_denied_ips_valid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that syslog is allowing the specified IPs in 'allowed-ips' when the values are valid. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -104,6 +96,8 @@ def test_allowed_denied_ips_syslog(get_configuration, configure_environment, res wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_ips_invalid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_ips_invalid.py index dde8376123..7624371daa 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_ips_invalid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_allowed_ips_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that 'wazuh-remoted' doesn't start and produces an error message when 'allowed-ips' values are invalid. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -100,7 +92,9 @@ def test_allowed_ips_invalid(get_configuration, configure_environment, restart_r logged correctly. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips.py index bce488a8db..121f88a036 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that specified 'denied-ips' connection is denied and syslog produces a 'not allowed' message. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -95,6 +87,8 @@ def test_denied_ips_syslog(get_configuration, configure_environment, restart_rem wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips_invalid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips_invalid.py index 2bb289b84f..efac992a7f 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips_invalid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_denied_ips_invalid.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that 'wazuh-remoted' doesn't start and produces an error message when 'denied-ips' values are invalid. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -98,7 +90,9 @@ def test_denied_ips_syslog_invalid(get_configuration, configure_environment, res logged correctly. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_no_allowed_ips.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_no_allowed_ips.py index 4699bb101e..090aad6892 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_no_allowed_ips.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_syslog_no_allowed_ips.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that 'wazuh-remoted' fails when syslog connection is used but there aren't any 'allowed-ips' specified. -tier: 0 - -modules: +components: - remoted -components: +suite: configuration + +targets: - manager daemons: @@ -29,18 +29,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -89,7 +81,9 @@ def test_allowed_denied_ips_syslog(get_configuration, configure_environment, res logged in 'ossec.log'. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture From 6b2a0d128e2ca0d42d3c184facc6473692766a1a Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:46:44 +0100 Subject: [PATCH 077/108] doc: Update suites documentation from remoted, rids, and rootcheck with new schema changes. #2591 The following remoted suites has been updated: - manager_messages - socket_communication The rids and rootcheck modules have no suites inside. --- .../test_manager_messages/test_manager_ack.py | 31 +++++++------------ .../test_ping_pong_message.py | 31 +++++++------------ .../test_syslog_message.py | 31 +++++++------------ tests/integration/test_rids/test_rids.py | 22 +++++-------- tests/integration/test_rids/test_rids_conf.py | 22 +++++-------- .../test_rootcheck/test_rootcheck.py | 30 +++++++++--------- 6 files changed, 63 insertions(+), 104 deletions(-) diff --git a/tests/integration/test_remoted/test_manager_messages/test_manager_ack.py b/tests/integration/test_remoted/test_manager_messages/test_manager_ack.py index 87a3c3a1ef..20072bfb10 100644 --- a/tests/integration/test_remoted/test_manager_messages/test_manager_ack.py +++ b/tests/integration/test_remoted/test_manager_messages/test_manager_ack.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check that the manager sends the ACK message after receiving the start-up message from the agent. -tier: 0 - -modules: +components: - remoted -components: +suite: manager_messages + +targets: - manager daemons: @@ -30,24 +30,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 + - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -155,7 +144,9 @@ def test_manager_ack(get_configuration, configure_environment, restart_remoted): the start-up message from the agent. wazuh_min_version: 4.2.0 - + + tier: 1 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_socket_communication/test_ping_pong_message.py b/tests/integration/test_remoted/test_socket_communication/test_ping_pong_message.py index af094b520a..e67be01f19 100644 --- a/tests/integration/test_remoted/test_socket_communication/test_ping_pong_message.py +++ b/tests/integration/test_remoted/test_socket_communication/test_ping_pong_message.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -8,12 +8,12 @@ brief: The 'wazuh-remoted' program is the server side daemon that communicates with the agents. Specifically, this test will check if 'wazuh-remoted' sends the #pong message. -tier: 0 - -modules: +components: - remoted -components: +suite: socket_communication + +targets: - manager daemons: @@ -29,24 +29,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 + - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -139,7 +128,9 @@ def test_ping_pong_message(get_configuration, configure_environment, restart_rem description: Check if 'wazuh-remoted' sends the #pong message wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_socket_communication/test_syslog_message.py b/tests/integration/test_remoted/test_socket_communication/test_syslog_message.py index 6ae9d5e405..3ac7668a4e 100644 --- a/tests/integration/test_remoted/test_socket_communication/test_syslog_message.py +++ b/tests/integration/test_remoted/test_socket_communication/test_syslog_message.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 @@ -9,12 +9,12 @@ Specifically, this test will check if 'wazuh-remoted' can receive syslog messages through the socket. -tier: 0 - -modules: +components: - remoted -components: +suite: socket_communication + +targets: - manager daemons: @@ -30,24 +30,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 + - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html @@ -124,7 +113,9 @@ def test_syslog_message(message, get_configuration, configure_environment, resta description: Check if 'wazuh-remoted' can receive syslog messages through the socket. wazuh_min_version: 4.2.0 - + + tier: 0 + parameters: - message: type: fixture diff --git a/tests/integration/test_rids/test_rids.py b/tests/integration/test_rids/test_rids.py index 578b03269f..e8e552f741 100644 --- a/tests/integration/test_rids/test_rids.py +++ b/tests/integration/test_rids/test_rids.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ This functionality has a closing time value, which allows removing an agent's file handler when it does not send a message during a period of time(five minutes by default). -tier: 0 - -modules: +components: - rids -components: +targets: - manager daemons: @@ -33,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://github.com/wazuh/wazuh/blob/master/src/os_crypto/shared/msgs.c @@ -165,6 +155,8 @@ def test_rids(get_configuration, configure_environment, restart_service): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_rids/test_rids_conf.py b/tests/integration/test_rids/test_rids_conf.py index a2b69a71cd..aacd2370eb 100644 --- a/tests/integration/test_rids/test_rids_conf.py +++ b/tests/integration/test_rids/test_rids_conf.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ This functionality has a closing time value, which allows removing an agent's file handler when it does not send a message during a period of time(five minutes by default). -tier: 0 - -modules: +components: - rids -components: +targets: - manager daemons: @@ -33,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://github.com/wazuh/wazuh/blob/master/src/os_crypto/shared/msgs.c @@ -129,6 +119,8 @@ def test_rids_conf(get_configuration, configure_environment): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_rootcheck/test_rootcheck.py b/tests/integration/test_rootcheck/test_rootcheck.py index b7117eb401..97f055f886 100644 --- a/tests/integration/test_rootcheck/test_rootcheck.py +++ b/tests/integration/test_rootcheck/test_rootcheck.py @@ -1,42 +1,42 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 + type: integration + brief: The 'rootcheck' tool allows to define policies in order to check if the agents meet the requirement specified. The rootcheck engine can check if a process is running, if a file is present and if the content of a file contains a pattern, or if a Windows registry key contains a string or is simply present. -tier: 0 -modules: - - rootcheck + components: + - rootcheck + +targets: - manager + daemons: - wazuh-analysisd + os_platform: - linux + os_version: - Arch Linux - Amazon Linux 2 - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic + references: - https://documentation.wazuh.com/current/user-manual/capabilities/policy-monitoring/rootcheck - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-analysisd.html + tags: - rootcheck ''' @@ -172,6 +172,8 @@ def test_rootcheck(get_configuration, configure_environment, restart_service, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture From 8b5b6ab1fea5080b5072cb6f0859ee257ec05f2f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:49:53 +0100 Subject: [PATCH 078/108] doc: Update some vulnerability_detector suites documentation with new schema changes. #2591 The following suites has been updated: - general_settings - providers The remaining suites will be updated when the refactor had been completed. --- .../test_general_settings/test_enabled.py | 26 +++++++-------- .../test_general_settings/test_interval.py | 24 ++++++-------- .../test_min_full_scan_interval.py | 24 ++++++-------- .../test_retry_interval.py | 4 +++ .../test_run_on_start.py | 24 ++++++-------- .../test_providers/test_enabled.py | 30 ++++++++--------- .../test_providers/test_missing_os.py | 26 +++++++-------- .../test_multiple_provider_feeds.py | 26 +++++++-------- .../test_providers/test_os.py | 32 ++++++++----------- .../test_providers/test_update_from_year.py | 26 +++++++-------- .../test_providers/test_update_interval.py | 24 ++++++-------- 11 files changed, 113 insertions(+), 153 deletions(-) diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py index dc004b4498..ed715cb353 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ is working correctly. This option is located in its corresponding section of the `ossec.conf` file and allows enabling or disabling this module. -tier: 0 - -modules: +components: - vulnerability_detector -components: +suite: general_settings + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -98,6 +90,8 @@ def test_enabled(configuration, metadata, set_wazuh_configuration, truncate_log_ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict @@ -139,6 +133,8 @@ def test_disabled(configuration, metadata, set_wazuh_configuration, truncate_log wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py index bbb8bdd8cd..651f5b66ec 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ is working correctly. This option is located in its corresponding section of the `ossec.conf` file and allows to define the time between scans. -tier: 0 - -modules: +components: - vulnerability_detector -components: +suite: general_settings + +targets: - manager daemons: @@ -31,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -105,6 +97,8 @@ def test_interval(get_configuration, configure_environment, restart_modulesd): wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py index 115d06bb32..1393e23fab 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,12 @@ and allows to define the minimum time before performing a full scan even if the feed was updated. The extended behavior also checks that the full scan is performed as expected. -tier: 0 - -modules: +components: - vulnerability_detector -components: +suite: general_settings + +targets: - manager daemons: @@ -32,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -125,6 +117,8 @@ def test_min_full_scan_interval(configuration, metadata, set_wazuh_configuration wazuh_min_version: 4.3.0 + tier: 0 + parameters: - configuration: type: dict diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py index 5ab6ca1a45..94f3591251 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py @@ -49,6 +49,8 @@ def test_retry_interval(configuration, metadata, set_wazuh_configuration, trunca wazuh_min_version: 4.3 + tier: 0 + parameters: - configuration: type: dict @@ -117,6 +119,8 @@ def test_retry_interval_max_retries(configuration, metadata, set_wazuh_configura wazuh_min_version: 4.3 + tier: 0 + parameters: - configuration: type: dict diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py index 7db2185354..cf8448543a 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ is working correctly. This option is located in its corresponding section of the `ossec.conf` file and allows to define if Vulnerability Detector must run a scan as soon as it is started. -tier: 0 - -modules: +components: - vulnerability_detector -components: +suite: general_settings + +targets: - manager daemons: @@ -31,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -105,6 +97,8 @@ def test_run_on_start(get_configuration, configure_environment, restart_modulesd wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py b/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py index 56bd1c6aac..3e79c94bb4 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -tier: 0 - -modules: +components: - vulnerability_detector -components: +suite: providers + +targets: - manager daemons: @@ -32,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -111,6 +103,8 @@ def test_enabled(configuration, metadata, set_wazuh_configuration, truncate_log_ wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict @@ -150,6 +144,8 @@ def test_disabled(configuration, metadata, set_wazuh_configuration, truncate_log wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict @@ -194,6 +190,8 @@ def test_enabled_extended(configuration, metadata, set_wazuh_configuration, trun wazuh_min_version: 4.2.0 + tier: 5 + parameters: - configuration: type: dict @@ -250,6 +248,8 @@ def test_disabled_extended(configuration, metadata, set_wazuh_configuration, tru wazuh_min_version: 4.2.0 + tier: 5 + parameters: - configuration: type: dict diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py b/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py index 3ea538afcb..8f7f07b019 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -tier: 1 - -modules: +components: - vulnerability_detector -components: +suite: providers + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -103,6 +95,8 @@ def test_providers_missing_os(configuration, metadata, set_wazuh_configuration, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict @@ -162,6 +156,8 @@ def test_providers_missing_os_extended(configuration, metadata, set_wazuh_config wazuh_min_version: 4.2.0 + tier: 5 + parameters: - configuration: type: dict diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_multiple_provider_feeds.py b/tests/integration/test_vulnerability_detector/test_providers/test_multiple_provider_feeds.py index 28453a75fb..012456f8b1 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_multiple_provider_feeds.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_multiple_provider_feeds.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -tier: 0 - -modules: +components: - vulnerability_detector -components: +suite: providers + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -137,6 +129,8 @@ def test_check_log_multiple_provider_feeds(configuration, metadata, set_wazuh_co wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict @@ -188,6 +182,8 @@ def test_check_db_multiple_provider_feeds(configuration, metadata, set_wazuh_con wazuh_min_version: 4.2.0 + tier: 5 + parameters: - configuration: type: dict diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_os.py b/tests/integration/test_vulnerability_detector/test_providers/test_os.py index 7cffcbc394..8228a650dc 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_os.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_os.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -tier: 1 - -modules: +components: - vulnerability_detector -components: +suite: providers + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -101,6 +93,8 @@ def test_providers_os(configuration, metadata, set_wazuh_configuration, truncate wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict @@ -129,8 +123,8 @@ def test_providers_os(configuration, metadata, set_wazuh_configuration, truncate - The `test_os.yaml` file provides the module configuration for this test. expected_output: - - r'Invalid option 'os' for '{provider_name}' provider.*' - - 'Starting '{provider_name}' database update' + - rf'Invalid option 'os' for '{provider_name}' provider.*' + - f'Starting '{provider_name}' database update' ''' provider_name = metadata['provider_name'] operating_system = metadata['os'] @@ -159,6 +153,8 @@ def test_providers_os_extended(configuration, metadata, set_wazuh_configuration, wazuh_min_version: 4.2.0 + tier: 5 + parameters: - configuration: type: dict @@ -189,7 +185,7 @@ def test_providers_os_extended(configuration, metadata, set_wazuh_configuration, expected_output: - r'Invalid option 'os' for '{provider_name}' provider.*' - - 'Starting '{provider_name}' database update' + - f'Starting '{provider_name}' database update' - 'The update of the feed finished' ''' provider_name = metadata['provider_name'] diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_update_from_year.py b/tests/integration/test_vulnerability_detector/test_providers/test_update_from_year.py index 30536e6642..49e163a57e 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_update_from_year.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_update_from_year.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -tier: 1 - -modules: +components: - vulnerability_detector -components: +suite: providers + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -97,6 +89,8 @@ def test_update_from_year(configuration, metadata, set_wazuh_configuration, trun wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict @@ -150,6 +144,8 @@ def test_update_from_year_extended(configuration, metadata, set_wazuh_configurat wazuh_min_version: 4.2.0 + tier: 5 + parameters: - configuration: type: dict diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_update_interval.py b/tests/integration/test_vulnerability_detector/test_providers/test_update_interval.py index 11d2ec10f1..7eb69405f6 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_update_interval.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_update_interval.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -11,12 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -tier: 1 - -modules: +components: - vulnerability_detector -components: +suite: providers + +targets: - manager daemons: @@ -33,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html @@ -91,6 +83,8 @@ def test_update_interval(configuration, metadata, set_wazuh_configuration, trunc wazuh_min_version: 4.2.0 + tier: 0 + parameters: - configuration: type: dict From d47c1d7ba01de68fdf71dd9793a517d9aa788718 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 10:50:39 +0100 Subject: [PATCH 079/108] doc: Update wazuh_db and wpk documentation with new schema changes. #2591 --- .../test_wazuh_db/test_wazuh_db.py | 28 +++++++++---------- tests/integration/test_wpk/test_wpk_agent.py | 27 ++++++------------ .../integration/test_wpk/test_wpk_manager.py | 25 +++++++---------- .../test_wpk/test_wpk_manager_task_states.py | 22 +++++---------- 4 files changed, 38 insertions(+), 64 deletions(-) diff --git a/tests/integration/test_wazuh_db/test_wazuh_db.py b/tests/integration/test_wazuh_db/test_wazuh_db.py index 1d6e0dd63b..7cb1d704be 100644 --- a/tests/integration/test_wazuh_db/test_wazuh_db.py +++ b/tests/integration/test_wazuh_db/test_wazuh_db.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,10 @@ Wazuh-db confirms that is able to save, update and erase the necessary information into the corresponding databases, using the proper commands and response strings. -tier: 0 - -modules: +components: - wazuh_db -components: +targets: - manager daemons: @@ -33,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-db.html @@ -338,6 +328,8 @@ def test_wazuh_db_messages_agent(restart_wazuh, clean_registered_agents, configu wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_wazuh: type: fixture @@ -408,6 +400,8 @@ def test_wazuh_db_messages_global(connect_to_sockets_module, restart_wazuh, test wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_wazuh: type: fixture @@ -461,6 +455,8 @@ def test_wazuh_db_chunks(restart_wazuh, configure_sockets_environment, clean_reg wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_wazuh: type: fixture @@ -519,6 +515,8 @@ def test_wazuh_db_range_checksum(restart_wazuh, configure_sockets_environment, c wazuh_min_version: 4.2.0 + tier: 0 + parameters: - restart_wazuh: type: fixture diff --git a/tests/integration/test_wpk/test_wpk_agent.py b/tests/integration/test_wpk/test_wpk_agent.py index 9605a5cfb6..97aa68fc18 100644 --- a/tests/integration/test_wpk/test_wpk_agent.py +++ b/tests/integration/test_wpk/test_wpk_agent.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ needed to upgrade the agent to the new version. These tests ensure, on the agent side, that the WPK upgrade works correctly. -tier: 0 - -modules: +components: - wpk -components: +targets: - agent daemons: @@ -34,24 +32,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic - Windows 10 - - Windows 8 - - Windows 7 + - Windows Server 2019 - Windows Server 2016 - - Windows Server 2012 - - Windows Server 2003 references: - https://documentation.wazuh.com/current/user-manual/agents/remote-upgrading/upgrading-agent.html @@ -425,6 +412,8 @@ def test_wpk_agent(get_configuration, prepare_agent_version, download_wpk, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_wpk/test_wpk_manager.py b/tests/integration/test_wpk/test_wpk_manager.py index b74d15cdaa..c36369e4d7 100644 --- a/tests/integration/test_wpk/test_wpk_manager.py +++ b/tests/integration/test_wpk/test_wpk_manager.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -12,12 +12,10 @@ needed to upgrade the agent to the new version. These tests ensure, on the manager side, that the WPK upgrade works correctly. -tier: 0 - -modules: +components: - wpk -components: +targets: - manager daemons: @@ -36,18 +34,13 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic + - Windows 10 + - Windows Server 2019 + - Windows Server 2016 references: - https://documentation.wazuh.com/current/user-manual/agents/remote-upgrading/upgrading-agent.html @@ -939,6 +932,8 @@ def test_wpk_manager(remove_current_wpk, set_debug_mode, get_configuration, conf wazuh_min_version: 4.2.0 + tier: 0 + parameters: - set_debug_mode: type: fixture diff --git a/tests/integration/test_wpk/test_wpk_manager_task_states.py b/tests/integration/test_wpk/test_wpk_manager_task_states.py index dc8f139afb..28f2fdcf6d 100644 --- a/tests/integration/test_wpk/test_wpk_manager_task_states.py +++ b/tests/integration/test_wpk/test_wpk_manager_task_states.py @@ -1,5 +1,5 @@ ''' -copyright: Copyright (C) 2015-2021, Wazuh Inc. +copyright: Copyright (C) 2015-2022, Wazuh Inc. Created by Wazuh, Inc. . @@ -13,12 +13,10 @@ the WPK upgrade on the manager side, in case of the manager stopped before finishing the upgrade. -tier: 0 - -modules: +components: - wpk -components: +targets: - manager daemons: @@ -36,18 +34,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/agents/remote-upgrading/upgrading-agent.html @@ -270,6 +260,8 @@ def test_wpk_manager_task_states(get_configuration, configure_environment, wazuh_min_version: 4.2.0 + tier: 0 + parameters: - get_configuration: type: fixture From 31765313dd6e4d4e93661737725292d5c976c319 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 11:17:02 +0100 Subject: [PATCH 080/108] refac: Update qa-docs schema.yaml #2591 --- .../wazuh_testing/qa_docs/schema.yaml | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index 98b920b7ff..6e407b4852 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -4,13 +4,13 @@ output_fields: - copyright - type - brief - - tier - - modules - - daemons - components + - targets + - daemons - os_platform - os_version optional: + - suite - references - pytest_args - tags @@ -20,11 +20,13 @@ output_fields: mandatory: - description - wazuh_min_version + - tier - parameters - assertions - input_description - - expected_output optional: + - test_phases + - expected_output - inputs - tags @@ -33,8 +35,8 @@ test_cases_field: test_cases predefined_values: module_fields: - type - - modules - components + - targets - daemons - os_platform - os_version @@ -47,7 +49,7 @@ predefined_values: - performance - system - unit - modules: + components: - active_response - agentd - analysisd @@ -63,6 +65,7 @@ predefined_values: - remoted - rids - rootcheck + - syscheck - vulnerability_detector - wazuh_db - wpk @@ -116,7 +119,7 @@ predefined_values: - Windows Server 2012 - Windows Server 2016 - Windows Server 2019 - components: + targets: - agent - manager daemons: @@ -170,8 +173,10 @@ predefined_values: - 3.13.0 - 4.0.0 - 4.1.0 + - 4.1.3 - 4.2.0 - 4.3.0 + - 4.4.0 tags: - active_response - agentd @@ -224,6 +229,7 @@ predefined_values: - fim_inotify - fim_invalid - fim_max_eps + - fim_max_eps_sync - fim_max_files_per_second - fim_moving_files - fim_multiple_dirs @@ -307,7 +313,7 @@ predefined_values: - msu_feeds - nvd - office365 - - on start + - on_start - oval - prelink - providers From 65a8ce57b97f6ef6670e53faae8c8e1355b6e393 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Fri, 4 Mar 2022 11:58:04 +0100 Subject: [PATCH 081/108] refac: Update qa-docs behavior with news parameters and schema. #2591 - Add new parameters retrictions - Update existing parameters restrictions - Add method to obtain the path - Change the -m behavior, now it looks for the module recursively --- .../wazuh_testing/qa_docs/doc_generator.py | 7 +- .../wazuh_testing/qa_docs/lib/code_parser.py | 19 ++--- .../wazuh_testing/qa_docs/lib/config.py | 18 +++-- .../wazuh_testing/qa_docs/lib/utils.py | 20 +++++ .../wazuh_testing/scripts/qa_docs.py | 81 ++++++++++++------- 5 files changed, 100 insertions(+), 45 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index 902c9d7096..d9260130f5 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -222,8 +222,7 @@ def create_module(self, path, group_id, module_name=None): doc_path = self.get_module_doc_path(path) self.dump_output(tests, doc_path) - DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' " - f"was created with ID:{self.__id_counter}") + DocGenerator.LOGGER.debug(f"New documentation file '{doc_path}' was created with ID:{self.__id_counter}") return self.__id_counter else: DocGenerator.LOGGER.error(f"Content for {path} is empty, ignoring it") @@ -335,9 +334,11 @@ def run(self): qa-docs -I ../../tests/ -m test_cache -o /tmp -> It would be running as `single module mode` creating `/tmp/test_cache.json` """ - if self.conf.mode == Mode.DEFAULT: + if not self.conf.check_doc: DocGenerator.LOGGER.debug(f"Cleaning doc folder located in {self.conf.documentation_path}") clean_folder(self.conf.documentation_path) + + if self.conf.mode == Mode.DEFAULT: for path in self.conf.include_paths: self.scan_path = path DocGenerator.LOGGER.debug(f"Going to parse files on '{path}'") diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 87708fa093..974b993464 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -225,15 +225,16 @@ def parse_module(self, path, id, group_id): function_doc['inputs'] = test_cases[function.name] # ES throwing errors because of the expected_output format in some cases # -> Inserting the raw string and its comment between double quotes fixes it - new_expected_output = [] - for string in function_doc['expected_output']: - if isinstance(string, dict): - for key, value in string.items(): - # example: r'.*Sending: FIM event (.+)$' ('added', 'modified' events) - new_expected_output.append(f"{key}: {value}") - else: - new_expected_output.append(f"{string}") - function_doc['expected_output'] = new_expected_output + if 'expected_output' in function_doc: + new_expected_output = [] + for string in function_doc['expected_output']: + if isinstance(string, dict): + for key, value in string.items(): + # example: r'.*Sending: FIM event (.+)$' ('added', 'modified' events) + new_expected_output.append(f"{key}: {value}") + else: + new_expected_output.append(f"{string}") + function_doc['expected_output'] = new_expected_output functions_doc.append(function_doc) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py index 31e8575ae0..0c5c8d998d 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py @@ -10,6 +10,7 @@ from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging from wazuh_testing.tools.exceptions import QAValueError +from wazuh_testing.qa_docs.lib.utils import get_file_path_recursively class Config(): @@ -115,22 +116,29 @@ def __get_include_paths(self): for type in self.test_types: subset_tests = os.path.join(self.project_path, type) - if self.test_components: if self.test_suites: if self.test_modules: for component in self.test_components: for suite in self.test_suites: for module in self.test_modules: - self.include_paths.append(os.path.join(subset_tests, component, suite, - f"{module}.py")) + module_path = get_file_path_recursively(f"{module}.py", + os.path.join(subset_tests, component, + suite)) + self.include_paths.append(module_path) else: for component in self.test_components: for suite in self.test_suites: self.include_paths.append(os.path.join(subset_tests, component, suite)) else: - for component in self.test_components: - self.include_paths.append(os.path.join(subset_tests, component)) + if self.test_modules: + for module in self.test_modules: + module_path = get_file_path_recursively(f"{module}.py", os.path.join(subset_tests, + self.test_components[0])) + self.include_paths.append(module_path) + else: + for component in self.test_components: + self.include_paths.append(os.path.join(subset_tests, component)) else: for name in os.listdir(subset_tests): if os.path.isdir(os.path.join(subset_tests, name)) and dir_regex.match(name): diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 1d16b9a0d6..5187f8c534 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -218,6 +218,26 @@ def clean_folder(folder): utils_logger.error(f"Failed to delete {file_path}. Reason: {e}") +def get_file_path_recursively(file_to_find, path): + """Get the given file path. + + Args: + file_to_find (str): Filename to search. + path (str): Root path where the file is searched. + Returns: + path (str): File path if exists within the given path, None otherwise. + """ + (root, folders, files) = next(os.walk(path)) + for file in files: + if file == file_to_find: + return os.path.join(root, file) + + for folder in folders: + path = get_file_path_recursively(file_to_find, os.path.join(root, folder)) + if path is not None: + return path + + def run_local_command(command): """Run local commands without getting the output, but validating the result code. diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 54b9cdeb9a..5668109d11 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -15,7 +15,7 @@ from wazuh_testing.qa_docs.lib.config import Config from wazuh_testing.qa_docs.lib.index_data import IndexData from wazuh_testing.qa_docs.lib.sanity import Sanity -from wazuh_testing.qa_docs.lib.utils import run_local_command, qa_docs_docker_run, get_qa_docs_run_options +from wazuh_testing.qa_docs.lib import utils from wazuh_testing.qa_docs.doc_generator import DocGenerator from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging @@ -42,6 +42,7 @@ def set_qadocs_logger_level(logging_level): else: qadocs_logger.set_level(logging_level) + def set_parameters(args): # Set the qa-docs logger level if args.debug_level: @@ -51,6 +52,7 @@ def set_parameters(args): if args.no_logging: set_qadocs_logger_level(None) + def set_parameters(args): """Set the QADOCS parameters. @@ -194,8 +196,8 @@ def check_incompatible_parameters(parameters): if parameters.test_components: if parameters.tests_path is None and not parameters.run_with_docker: - raise QAValueError('The --components option needs the path to the tests to be parsed. You must specify it by ' - 'using --tests-path', + raise QAValueError('The --components option needs the path to the tests to be parsed. You must specify it ' + 'by using --tests-path', qadocs_logger.error) if parameters.test_exist: @@ -205,12 +207,12 @@ def check_incompatible_parameters(parameters): if parameters.test_suites: if not parameters.test_components: raise QAValueError('The --suites option needs the suite module to be parsed. You must specify it ' - 'using --components', - qadocs_logger.error) + 'using --components', + qadocs_logger.error) if parameters.test_exist: - raise QAValueError('The --suites option is not compatible with -e(--exist)', - qadocs_logger.error) + raise QAValueError('The --suites option is not compatible with -e(--exist)', + qadocs_logger.error) if parameters.test_modules: if parameters.tests_path is None and not parameters.run_with_docker: @@ -323,39 +325,55 @@ def validate_parameters(parameters, parser): if parameters.test_types: for type in parameters.test_types: if type not in os.listdir(parameters.tests_path): - raise QAValueError(f"The given type: {type}, not found in {parameters.tests_path}", + raise QAValueError(f"The given type: {type} has not been found in {parameters.tests_path}", qadocs_logger.error) # Check that components selection is done within a test type if parameters.test_components: if len(parameters.test_types) != 1: - raise QAValueError('The --components option work when is only parsing a single test type. Use --types with' - ' just one type if you want to parse some components within a test type.', + raise QAValueError('The --components option works when is only parsing a single test type. Use --types ' + 'with just one type if you want to parse some components within a test type.', qadocs_logger.error) if parameters.test_suites: if len(parameters.test_components) != 1: - raise QAValueError('The --suites option work when is only parsing a single test module. Use ' - '--components with just one type if you want to parse some components within a test ' - 'type.', qadocs_logger.error) + raise QAValueError('The --suites option works when is only parsing a single test module. Use ' + '--components with just one type if you want to parse some components within a ' + 'test type.', qadocs_logger.error) + + if parameters.test_modules: + # If at least one module is specified + if len(parameters.test_components) != 1: + raise QAValueError('The --modules option work swhen is only parsing a single test component. Use ' + '--components with just one component if you want to parse some modules within a ' + 'test component.', qadocs_logger.error) + + if parameters.test_suites: + if len(parameters.test_suites) != 1: + raise QAValueError('The --modules option works when is only parsing a single test suite. Use ' + '--suites with just one type if you want to parse some modules within a ' + 'test suite.', qadocs_logger.error) for component in parameters.test_components: type_path = os.path.join(parameters.tests_path, parameters.test_types[0]) + component_path = os.path.join(type_path, component) if component not in os.listdir(type_path): - raise QAValueError(f"The given component: {component}, not found in {type_path}", + raise QAValueError(f"The given component: {component} has not been found in {type_path}", qadocs_logger.error) - + for suite in parameters.test_suites: - component_path = os.path.join(type_path, component) if suite not in os.listdir(component_path): - raise QAValueError(f"The given suite: {suite}, not found in {component_path}", + raise QAValueError(f"The given suite: {suite} has not been found in {component_path}", qadocs_logger.error) - for module in parameters.test_modules: - suite_path = os.path.join(component_path, suite) - module_file = f"{module}.py" - if module_file not in os.listdir(suite_path): - raise QAValueError(f"The given module: {module_file}, not found in {suite_path}", + suite_path = '' if not parameters.test_suites else parameters.test_suites[0] + + for module in parameters.test_modules: + suite_path = os.path.join(component_path, suite_path) + module_file = f"{module}.py" + if module_file not in os.listdir(suite_path): + if utils.get_file_path_recursively(module_file, suite_path) is None: + raise QAValueError(f"The given module: {module_file} has not been found in {suite_path}", qadocs_logger.error) qadocs_logger.debug('Input parameters validation completed') @@ -366,7 +384,7 @@ def install_searchui_deps(): os.chdir(SEARCH_UI_PATH) if not os.path.exists(os.path.join(SEARCH_UI_PATH, 'node_components')): qadocs_logger.info('Installing SearchUI dependencies') - run_local_command("npm install") + utils.run_local_command("npm install") def run_searchui(index): @@ -374,7 +392,7 @@ def run_searchui(index): install_searchui_deps() qadocs_logger.debug('Running SearchUI') - run_local_command(f"npm --ELASTICHOST=http://localhost:9200 --INDEX={index} start") + utils.run_local_command(f"npm --ELASTICHOST=http://localhost:9200 --INDEX={index} start") def parse_data(args): @@ -400,15 +418,22 @@ def parse_data(args): # Parse specified modules docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, - args.test_components, args.test_suites, args.test_modules), OUTPUT_FORMAT) + args.test_components, args.test_suites, args.test_modules), + OUTPUT_FORMAT) else: # Parse specified suites docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, args.test_components, args.test_suites), OUTPUT_FORMAT) else: + if args.test_modules: + qadocs_logger.info(f"Parsing the following modules(s): {args.test_modules}") + test_modules_values = args.test_modules + else: + test_modules_values = None + # Parse specified components docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, - args.test_components), OUTPUT_FORMAT) + args.test_components, test_modules=test_modules_values), OUTPUT_FORMAT) else: # Parse all type of tests @@ -458,9 +483,9 @@ def main(): return 0 if args.run_with_docker: - command = get_qa_docs_run_options(args) + command = utils.get_qa_docs_run_options(args) qadocs_logger.info(f"Running {command} in a docker container.") - qa_docs_docker_run(args.qa_branch, command, OUTPUT_PATH) + utils.qa_docs_docker_run(args.qa_branch, command, OUTPUT_PATH) elif args.version: with open(VERSION_PATH, 'r') as version_file: version_data = version_file.read() From 366ce037685e5116559fd8a1b27fecbe50f6b3b0 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 11:45:44 +0100 Subject: [PATCH 082/108] refac: Update qa-docs -e option with new changes. #2589 It searches the specified module using the type, component and suite. --- .../wazuh_testing/qa_docs/doc_generator.py | 13 +++-- .../wazuh_testing/qa_docs/lib/utils.py | 7 ++- .../wazuh_testing/scripts/qa_docs.py | 48 +++++++++---------- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index d9260130f5..52643ebc9b 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -13,6 +13,7 @@ from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging from wazuh_testing.tools.exceptions import QAValueError +from wazuh_testing.qa_docs.lib.utils import get_file_path_recursively class DocGenerator: @@ -277,12 +278,14 @@ def locate_module(self, module_name): complete_module_name = f"{module_name}.py" DocGenerator.LOGGER.info(f"Looking for {complete_module_name}") - for root, dirnames, filenames in os.walk(self.conf.project_path, topdown=True): - for filename in filenames: - if filename == complete_module_name: - return os.path.join(root, complete_module_name) + if self.conf.test_types: + path_where_looks_for = os.path.join(self.conf.project_path, self.conf.test_types[0]) + if self.conf.test_components: + path_where_looks_for = os.path.join(path_where_looks_for, self.conf.test_components[0]) + if self.conf.test_suites: + path_where_looks_for = os.path.join(path_where_looks_for, self.conf.test_suites[0]) - return None + return get_file_path_recursively(complete_module_name, path_where_looks_for) def check_module_exists(self, path): """Check that a module exists within the modules path input. diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 5187f8c534..5485077176 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -227,7 +227,12 @@ def get_file_path_recursively(file_to_find, path): Returns: path (str): File path if exists within the given path, None otherwise. """ - (root, folders, files) = next(os.walk(path)) + try: + (root, folders, files) = next(os.walk(path)) + except StopIteration: + # When iterates over it even after it has been exhausted + return + for file in files: if file == file_to_find: return os.path.join(root, file) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 5668109d11..258fbf0ae0 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -190,30 +190,18 @@ def check_incompatible_parameters(parameters): 'using --tests-path', qadocs_logger.error) - if parameters.test_exist: - raise QAValueError('The --types option is not compatible with -e(--exist)', - qadocs_logger.error) - if parameters.test_components: if parameters.tests_path is None and not parameters.run_with_docker: raise QAValueError('The --components option needs the path to the tests to be parsed. You must specify it ' 'by using --tests-path', qadocs_logger.error) - if parameters.test_exist: - raise QAValueError('The --components option is not compatible with -e(--exist)', - qadocs_logger.error) - if parameters.test_suites: if not parameters.test_components: raise QAValueError('The --suites option needs the suite module to be parsed. You must specify it ' 'using --components', qadocs_logger.error) - if parameters.test_exist: - raise QAValueError('The --suites option is not compatible with -e(--exist)', - qadocs_logger.error) - if parameters.test_modules: if parameters.tests_path is None and not parameters.run_with_docker: raise QAValueError('The -m(--modules) option needs the path to the tests to be parsed. You must specify it ' @@ -341,7 +329,7 @@ def validate_parameters(parameters, parser): '--components with just one type if you want to parse some components within a ' 'test type.', qadocs_logger.error) - if parameters.test_modules: + if parameters.test_modules or parameters.test_exist: # If at least one module is specified if len(parameters.test_components) != 1: raise QAValueError('The --modules option work swhen is only parsing a single test component. Use ' @@ -366,15 +354,16 @@ def validate_parameters(parameters, parser): raise QAValueError(f"The given suite: {suite} has not been found in {component_path}", qadocs_logger.error) - suite_path = '' if not parameters.test_suites else parameters.test_suites[0] - - for module in parameters.test_modules: - suite_path = os.path.join(component_path, suite_path) - module_file = f"{module}.py" - if module_file not in os.listdir(suite_path): - if utils.get_file_path_recursively(module_file, suite_path) is None: - raise QAValueError(f"The given module: {module_file} has not been found in {suite_path}", - qadocs_logger.error) + if parameters.test_modules: + suite_path = '' if not parameters.test_suites else parameters.test_suites[0] + + for module in parameters.test_modules: + suite_path = os.path.join(component_path, suite_path) + module_file = f"{module}.py" + if module_file not in os.listdir(suite_path): + if utils.get_file_path_recursively(module_file, suite_path) is None: + raise QAValueError(f"The given module: {module_file} has not been found in {suite_path}", + qadocs_logger.error) qadocs_logger.debug('Input parameters validation completed') @@ -398,7 +387,18 @@ def run_searchui(index): def parse_data(args): """Parse the tests and collect the data.""" if args.test_exist: - doc_check = DocGenerator(Config(SCHEMA_PATH, args.tests_path, '', test_modules=args.test_exist)) + + if args.test_suites: + + # Looking for specified modules + doc_check = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, + args.test_components, args.test_suites, args.test_exist), + OUTPUT_FORMAT) + else: + + # Parse specified components + doc_check = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH, args.test_types, + args.test_components, test_modules=args.test_exist), OUTPUT_FORMAT) doc_check.check_module_exists(args.tests_path) @@ -446,7 +446,7 @@ def parse_data(args): docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH), OUTPUT_FORMAT) docs.run() - if args.test_types or args.test_components or args.test_modules and not args.check_doc: + if (args.test_types or args.test_components or args.test_modules) and not (args.check_doc or args.test_exist): qadocs_logger.info('Running QADOCS') docs.run() elif args.test_modules and args.check_doc: From 1328622947f01e75c17fbde8b758741811a967a3 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 11:47:39 +0100 Subject: [PATCH 083/108] refac: Update how qa-ctl uses qa-docs. #2589 Change the parameters that qa-docs uses after the new changes, specifying the components, suites, and modules. --- .../qa_ctl/configuration/config_generator.py | 38 ++++--- .../wazuh_testing/scripts/qa_ctl.py | 104 +++++++++++++----- 2 files changed, 95 insertions(+), 47 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py b/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py index 43ee9ae91f..6961178eb1 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py @@ -131,9 +131,9 @@ class QACTLConfigGenerator: } } - def __init__(self, tests=None, wazuh_version=None, qa_branch='master', + def __init__(self, modules_data=None, wazuh_version=None, qa_branch='master', qa_files_path=join(gettempdir(), 'wazuh_qa_ctl', 'wazuh-qa'), systems=None): - self.tests = tests + self.modules_data = modules_data self.wazuh_version = wazuh_version self.systems = systems self.qactl_used_ips_file = join(gettempdir(), 'wazuh_qa_ctl', 'qactl_used_ips.txt') @@ -146,7 +146,7 @@ def __init__(self, tests=None, wazuh_version=None, qa_branch='master', # Create qa-ctl temporarily files path file.recursive_directory_creation(join(gettempdir(), 'wazuh_qa_ctl')) - def __get_test_info(self, test_name): + def __get_module_info(self, type, component, suite, module): """Get information from a documented test. Args: @@ -155,9 +155,9 @@ def __get_test_info(self, test_name): Returns: dict : return the info of the named test in dict format. """ - qa_docs_command = f"qa-docs -t {test_name} -o {join(gettempdir(), 'wazuh_qa_ctl')} -I " \ - f"{join(self.qa_files_path, 'tests')} --no-logging" - test_data_file_path = f"{join(gettempdir(), 'wazuh_qa_ctl', test_name)}.json" + qa_docs_command = f"qa-docs -p {join(self.qa_files_path, 'tests')} -o {join(gettempdir(), 'wazuh_qa_ctl')} " \ + f"-t {type} -c {component} -s {suite} -m {module} --no-logging" + test_data_file_path = f"{join(gettempdir(), 'wazuh_qa_ctl', 'output', module)}.json" run_local_command_returning_output(qa_docs_command) @@ -170,7 +170,7 @@ def __get_test_info(self, test_name): QACTLConfigGenerator.LOGGER.error, QACTL_LOGGER) # Add test name extra info - info['test_name'] = test_name + info['test_name'] = module # Delete test data file file.delete_file(test_data_file_path) @@ -183,7 +183,10 @@ def __get_all_tests_info(self): Returns: dict object : dict containing all the information of the tests given from their documentation. """ - tests_info = [self.__get_test_info(test) for test in self.tests] + tests_info = [] + for type, component, suite, module in zip(self.modules_data['types'], self.modules_data['components'], + self.modules_data['suites'], self.modules_data['modules']): + tests_info.append(self.__get_module_info(type, component, suite, module)) return tests_info @@ -343,13 +346,13 @@ def __get_package_url(self, instance): return package_url - def __add_deployment_config_block(self, test_name, os_version, components, os_platform): + def __add_deployment_config_block(self, test_name, os_version, targets, os_platform): """Add a configuration block to deploy a test environment in qa-ctl. Args: test_name (string): Test name. os_version (string): Host vendor to deploy (e.g: CentOS 8). - components (string): Test target (manager or agent). + targets (string): Test target (manager or agent). os_platform (string): host system (e.g: linux). """ # Process deployment data @@ -357,11 +360,11 @@ def __add_deployment_config_block(self, test_name, os_version, components, os_pl vm_name = f"{test_name}_{get_current_timestamp()}".replace('.', '_') self.config['deployment'][f"host_{host_number}"] = { 'provider': { - 'vagrant': self.__add_instance(os_version, vm_name, components, os_platform) + 'vagrant': self.__add_instance(os_version, vm_name, targets, os_platform) } } # Add manager if the target is an agent - if components == 'agent': + if targets == 'agent': host_number += 1 self.config['deployment'][f"host_{host_number}"] = { 'provider': { @@ -397,10 +400,10 @@ def __process_deployment_data(self, tests_info): raise QAValueError(f"No valid system was found for {test['name']} test", QACTLConfigGenerator.LOGGER.error, QACTL_LOGGER) - components = 'manager' if 'manager' in test['components'] else 'agent' + targets = 'manager' if 'manager' in test['targets'] else 'agent' os_platform = 'windows' if 'Windows' in os_version else 'linux' - self.__add_deployment_config_block(test['test_name'], os_version, components, os_platform) + self.__add_deployment_config_block(test['test_name'], os_version, targets, os_platform) # If system parameter is specified and have values elif isinstance(self.systems, list) and len(self.systems) > 0: @@ -409,9 +412,9 @@ def __process_deployment_data(self, tests_info): if self.__validate_test_info(test): version = self.SYSTEMS[system]['os_version'] platform = self.SYSTEMS[system]['os_platform'] - component = 'manager' if 'manager' in test['components'] and platform == 'linux' else 'agent' + targets = 'manager' if 'manager' in test['targets'] and platform == 'linux' else 'agent' - self.__add_deployment_config_block(test['test_name'], version, component, platform) + self.__add_deployment_config_block(test['test_name'], version, targets, platform) else: raise QAValueError('Unable to process systems in the automatically generated configuration', QACTLConfigGenerator.LOGGER.error, QACTL_LOGGER) @@ -521,9 +524,8 @@ def __set_testing_config(self, tests_info): system = QACTLConfigGenerator.BOX_INFO[vm_box]['system'] system = 'linux' if system == 'deb' or system == 'rpm' else system - modules = copy.deepcopy(test['modules']) + modules = copy.deepcopy(test['components']) component = self.config['provision']['hosts'][instance]['wazuh_deployment']['target'] - # Cut out the full path, and convert it to relative path (tests/integration....) test_path = re.sub(r".*wazuh-qa.*(tests.*)", r"\1", test['path']) # Convert test path string to the corresponding according to the system diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index 773568647f..a82f26531c 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -155,7 +155,7 @@ def set_environment(parameters): # Create the wazuh_qa_ctl temporary folder recursive_directory_creation(os.path.join(gettempdir(), 'wazuh_qa_ctl')) - if parameters.run_test: + if parameters.run: # Download wazuh-qa repository locally to run qa-docs tool and get the tests info local_actions.download_local_wazuh_qa_repository(branch=parameters.qa_branch, path=os.path.join(gettempdir(), 'wazuh_qa_ctl')) @@ -172,10 +172,12 @@ def validate_parameters(parameters): has not been released, or wazuh QA branch does not exist (calculated from wazuh_version). """ def _validate_tests_os(parameters): - for test in parameters.run_test: + for type, component, suite, module in zip(parameters.test_types, parameters.test_components, + parameters.test_suites, parameters.test_modules): tests_path = os.path.join(WAZUH_QA_FILES, 'tests') - test_documentation_command = f"qa-docs -I {tests_path} -t {test} -o {gettempdir()} --no-logging" - test_documentation_file_path = os.path.join(gettempdir(), f"{test}.json") + test_documentation_command = f"qa-docs -p {tests_path} -t {type} -c {component} -s {suite} -m {module} " \ + f"-o {gettempdir()} --no-logging" + test_documentation_file_path = os.path.join(gettempdir(), f"{module}.json") local_actions.run_local_command_returning_output(test_documentation_command) test_data = json.loads(file.read_file(test_documentation_file_path)) @@ -185,27 +187,39 @@ def _validate_tests_os(parameters): platform = QACTLConfigGenerator.SYSTEMS[op_system]['os_platform'] if op_system in \ QACTLConfigGenerator.SYSTEMS.keys() else op_system if platform not in test_data['os_platform']: - raise QAValueError(f"The {test} test does not support the {op_system} system. Allowed platforms: " - f"{test_data['os_platform']} (ubuntu and centos are from linux platform)") + raise QAValueError(f"The {module} module does not support the {op_system} system. Allowed platforms:" + f" {test_data['os_platform']} (ubuntu and centos are from linux platform)") # Check os version if len([os_version.lower() for os_version in test_data['os_version'] if op_system in os_version]) > 0: - raise QAValueError(f"The {test} test does not support the {op_system} system. Allowed operating " - f"system versions: {test_data['os_version']}") + raise QAValueError(f"The {module} module does not support the {op_system} system. Allowed operating" + f" system versions: {test_data['os_version']}") # Clean the temporary files for extension in ['.json', '.yaml']: - file.remove_file(os.path.join(gettempdir(), f"{test}{extension}")) + file.remove_file(os.path.join(gettempdir(), f"{module}{extension}")) qactl_logger.info('Validating input parameters') # Check incompatible parameters - if parameters.config and parameters.run_test: + if parameters.config and parameters.run: raise QAValueError('The --run parameter is incompatible with --config. --run will autogenerate the ' 'configuration', qactl_logger.error, QACTL_LOGGER) - if parameters.user_version and parameters.run_test is None: + if parameters.run and not (parameters.test_components and parameters.test_suites and parameters.test_modules): + raise QAValueError('The --run parameter needs the component, suite and module to run a test. You can specify ' + 'them with --test-components, --test-suites and --test-modules.', + qactl_logger.error, QACTL_LOGGER) + + if len(parameters.test_types) != len(parameters.test_components) or \ + len(parameters.test_types) != len(parameters.test_suites) or \ + len(parameters.test_types) != len(parameters.test_modules): + raise QAValueError('The parameters that specify the modules, suites, components, and types must have the same ' + 'length: --test-types, --test-components, --test-suites and --test_modules.', + qactl_logger.error, QACTL_LOGGER) + + if parameters.user_version and parameters.run is None: raise QAValueError('The -v, --version parameter can only be used with -r, --run', qactl_logger.error) - if parameters.dry_run and parameters.run_test is None: + if parameters.dry_run and parameters.run is None: raise QAValueError('The --dry-run parameter can only be used with -r, --run', qactl_logger.error, QACTL_LOGGER) if (parameters.skip_deployment or parameters.skip_provisioning or parameters.skip_testing) \ @@ -229,23 +243,25 @@ def _validate_tests_os(parameters): qactl_logger.error, QACTL_LOGGER) # Check if specified tests exist. Wazuh-qa repository needs to be downloaded locally before. - if parameters.run_test: - for test in parameters.run_test: + if parameters.run: + # cambiar el for para iterar sobre los 4 arrays + for type, component, suite, module in zip(parameters.test_types, parameters.test_components, + parameters.test_suites, parameters.test_modules): tests_path = os.path.join(WAZUH_QA_FILES, 'tests') # Validate if the specified tests exist - check_test_exist = local_actions.run_local_command_returning_output(f"qa-docs -e {test} -I {tests_path} " - '--no-logging') - if f"{test} exists" not in check_test_exist: - raise QAValueError(f"{test} does not exist in {tests_path}", qactl_logger.error, QACTL_LOGGER) + exist_cmd = f"qa-docs -p {tests_path} -t {type} -c {component} -s {suite} -e {module} --no-logging" + check_test_exist = local_actions.run_local_command_returning_output(exist_cmd) + if f"{module} exists" not in check_test_exist: + raise QAValueError(f"{module} does not exist in {tests_path}", qactl_logger.error, QACTL_LOGGER) # Validate if the selected tests are documented - test_documentation_check = local_actions.run_local_command_returning_output(f"qa-docs -t {test} -I " - f"{tests_path} " - '--check-documentation ' - '--no-logging') - if f'{test} is not documented' in test_documentation_check: - raise QAValueError(f"{test} is not documented using qa-docs current schema", qactl_logger.error, + check_doc_cmd = f"qa-docs -p {tests_path} -t {type} -c {component} -s {suite} -m {module} --no-logging " \ + '--check-documentation' + test_documentation_check = local_actions.run_local_command_returning_output(check_doc_cmd) + if f'{module} is not documented' in test_documentation_check: + raise QAValueError(f"{module} is not documented using qa-docs current schema", qactl_logger.error, QACTL_LOGGER) + # Validate the tests operating system compatibility if specified if parameters.operating_systems: _validate_tests_os(parameters) @@ -282,7 +298,26 @@ def get_script_parameters(): help='Config generation mode. The test data will be processed and the configuration will be ' 'generated without running anything.') - parser.add_argument('--run', '-r', type=str, action='store', required=False, nargs='+', dest='run_test', + # parser.add_argument('--run', '-r', type=str, action='store', required=False, nargs='+', dest='run_test', + # help='Independent run method. Specify a test or a list of tests to be run.') + + parser.add_argument('--run', '-r', action='store_true', + help='Independent run method. The tests that the use specified will be run.') + + parser.add_argument('--test-types', type=str, action='store', required=False, nargs='+', dest='test_types', + default=['integration'], + help='Independent run method. Specify a test or a list of tests to be run.') + + parser.add_argument('--test-components', type=str, action='store', required=False, nargs='+', + dest='test_components', default=[], + help='Independent run method. Specify a test or a list of tests to be run.') + + parser.add_argument('--test-suites', type=str, action='store', required=False, nargs='+', dest='test_suites', + default=[], + help='Independent run method. Specify a test or a list of tests to be run.') + + parser.add_argument('--test-modules', type=str, action='store', required=False, nargs='+', dest='test_modules', + default=[], help='Independent run method. Specify a test or a list of tests to be run.') parser.add_argument('--version', '-v', type=str, action='store', required=False, dest='version', @@ -334,12 +369,23 @@ def main(): if not arguments.no_validation: validate_parameters(arguments) - qa_ctl_mode = AUTOMATIC_MODE if arguments.run_test else MANUAL_MODE + qa_ctl_mode = AUTOMATIC_MODE if arguments.run else MANUAL_MODE # Generate or get the qactl configuration file if qa_ctl_mode == AUTOMATIC_MODE: qactl_logger.debug('Generating configuration file') - config_generator = QACTLConfigGenerator(arguments.run_test, arguments.version, arguments.qa_branch, + # cambiar run_test de config generator + # args = ['types', 'components', 'suites', 'modules'] + modules_data = {'types': [], 'components': [], 'suites': [], 'modules': []} + # modules_data = dict(zip(args,[[] for x in range(0,len(args))])) + for type, component, suite, module in zip(arguments.test_types, arguments.test_components, + arguments.test_suites, arguments.test_modules): + modules_data['types'].append(type) + modules_data['components'].append(component) + modules_data['suites'].append(suite) + modules_data['modules'].append(module) + + config_generator = QACTLConfigGenerator(modules_data, arguments.version, arguments.qa_branch, WAZUH_QA_FILES, arguments.operating_systems) config_generator.run() launched['config_generator'] = True @@ -406,10 +452,10 @@ def main(): if TEST_KEY in configuration_data and launched['test_runner']: tests_runner.destroy() - if arguments.run_test and launched['config_generator']: + if arguments.run and launched['config_generator']: config_generator.destroy() else: - if not RUNNING_ON_DOCKER_CONTAINER and arguments.run_test: + if not RUNNING_ON_DOCKER_CONTAINER and arguments.run: qactl_logger.info(f"Configuration file saved in {config_generator.config_file_path}") From 7b03878fd1e9c8b077c2bd96228b2c9cfdc52c5c Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 12:47:02 +0100 Subject: [PATCH 084/108] fix: Care about having the same length only when `-r` flag is activated. #2589 Default type would raise an error. --- deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index a82f26531c..951f4300ab 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -209,12 +209,13 @@ def _validate_tests_os(parameters): 'them with --test-components, --test-suites and --test-modules.', qactl_logger.error, QACTL_LOGGER) - if len(parameters.test_types) != len(parameters.test_components) or \ - len(parameters.test_types) != len(parameters.test_suites) or \ - len(parameters.test_types) != len(parameters.test_modules): - raise QAValueError('The parameters that specify the modules, suites, components, and types must have the same ' - 'length: --test-types, --test-components, --test-suites and --test_modules.', - qactl_logger.error, QACTL_LOGGER) + if parameters.run: + if len(parameters.test_types) != len(parameters.test_components) or \ + len(parameters.test_types) != len(parameters.test_suites) or \ + len(parameters.test_types) != len(parameters.test_modules): + raise QAValueError('The parameters that specify the modules, suites, components, and types must have the ' + 'same length: --test-types, --test-components, --test-suites and --test_modules.', + qactl_logger.error, QACTL_LOGGER) if parameters.user_version and parameters.run is None: raise QAValueError('The -v, --version parameter can only be used with -r, --run', qactl_logger.error) From 0b78c51e9c05a3bab2f7f19429f7c387e0099a95 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 15:29:03 +0100 Subject: [PATCH 085/108] refac: Update docker behavior and fix modules path issue. #2600 - The path generation for modules has been fixed - The entrypoint has been updated with new qa-docs parameters - The output path variable has been refactorized --- .../qa_docs/dockerfiles/entrypoint.sh | 6 ++--- .../wazuh_testing/qa_docs/lib/utils.py | 10 +++----- .../wazuh_testing/scripts/qa_docs.py | 25 ++++--------------- 3 files changed, 12 insertions(+), 29 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh index 093f5f105d..8b4d7da07c 100755 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/entrypoint.sh @@ -18,7 +18,7 @@ then exit 1 fi -/usr/local/bin/qa-docs --tests-path /tests/wazuh-qa/tests --validate-parameters ${CMD} +/usr/local/bin/qa-docs -p /tests/wazuh-qa/tests --validate-parameters ${CMD} # get run status status=$? @@ -37,8 +37,8 @@ fi service wazuh-manager start # Run qa-docs with the given args -echo "Running /usr/local/bin/qa-docs -I /tests/wazuh-qa/tests ${CMD}" -/usr/local/bin/qa-docs --tests-path /tests/wazuh-qa/tests ${CMD} +echo "Running /usr/local/bin/qa-docs -p /tests/wazuh-qa/tests ${CMD}" +/usr/local/bin/qa-docs -p /tests/wazuh-qa/tests ${CMD} # Move the documentation parsed to the shared dir echo "Moving qa-docs output to shared directory: ${SHARED_VOL}/output" diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index 5187f8c534..d86977da22 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -7,10 +7,9 @@ import sys import shutil -from tempfile import gettempdir - from wazuh_testing.qa_docs import QADOCS_LOGGER from wazuh_testing.tools.logging import Logging +from wazuh_testing.tools.exceptions import QAValueError utils_logger = Logging.get_logger(QADOCS_LOGGER) @@ -258,9 +257,8 @@ def run_local_command(command): result_code = run.returncode if result_code != 0: - print("error") - # raise QAValueError(f"The command {command} returned {result_code} as result code.", utils_logger.LOGGER.error, - # QADOCS_LOGGER) + raise QAValueError(f"The command {command} returned {result_code} as result code.", utils_logger.error, + QADOCS_LOGGER) def run_local_command_with_output(command): @@ -291,7 +289,7 @@ def qa_docs_docker_run(qa_branch, command, output_path): """ docker_args = f"{qa_branch} {output_path} {command}" docker_image_name = 'wazuh/qa-docs' - docker_image_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'dockerfiles') + docker_image_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'dockerfiles') utils_logger.info(f"Building qa-docs docker image") run_local_command_with_output(f"cd {docker_image_path} && docker build -q -t {docker_image_name} .") diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 5668109d11..afe6a681ea 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -43,16 +43,6 @@ def set_qadocs_logger_level(logging_level): qadocs_logger.set_level(logging_level) -def set_parameters(args): - # Set the qa-docs logger level - if args.debug_level: - set_qadocs_logger_level('DEBUG') - - # Deactivate the qa-docs logger if necessary. - if args.no_logging: - set_qadocs_logger_level(None) - - def set_parameters(args): """Set the QADOCS parameters. @@ -70,16 +60,12 @@ def set_parameters(args): if args.no_logging: set_qadocs_logger_level(None) - if args.run_with_docker: + if args.output_path: global OUTPUT_PATH - OUTPUT_PATH = os.path.join(gettempdir(), 'qa_docs') - - if args.output_path and not args.run_with_docker: OUTPUT_PATH = os.path.join(args.output_path, 'output') - if args.output_format: - global OUTPUT_FORMAT - OUTPUT_FORMAT = args.output_format + if args.run_with_docker: + OUTPUT_PATH = args.output_path if args.output_path else os.path.join(gettempdir(), 'qa_docs') def get_parameters(): @@ -366,10 +352,9 @@ def validate_parameters(parameters, parser): raise QAValueError(f"The given suite: {suite} has not been found in {component_path}", qadocs_logger.error) - suite_path = '' if not parameters.test_suites else parameters.test_suites[0] - + suite = '' if not parameters.test_suites else parameters.test_suites[0] + suite_path = os.path.join(component_path, suite) for module in parameters.test_modules: - suite_path = os.path.join(component_path, suite_path) module_file = f"{module}.py" if module_file not in os.listdir(suite_path): if utils.get_file_path_recursively(module_file, suite_path) is None: From e11af13c60c0dc7ac13bf5abe06d84315fbb4224 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 15:57:37 +0100 Subject: [PATCH 086/108] refac: Update incompatible parameters. #2600 The error message printed without this two was not fully descriptive. These messages improve that. --- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index afe6a681ea..5c96b93b15 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -186,6 +186,11 @@ def check_incompatible_parameters(parameters): 'by using --tests-path', qadocs_logger.error) + if not parameters.test_types: + raise QAValueError('The --components option needs the component type to be parsed. You must specify it ' + 'using --types', + qadocs_logger.error) + if parameters.test_exist: raise QAValueError('The --components option is not compatible with -e(--exist)', qadocs_logger.error) @@ -206,6 +211,11 @@ def check_incompatible_parameters(parameters): 'using --tests-path', qadocs_logger.error) + if not parameters.test_suites: + raise QAValueError('The --modules option needs the module suite to be parsed. You must specify it ' + 'using --suites', + qadocs_logger.error) + if parameters.index_name: raise QAValueError('The -m(--modules) option is not compatible with -i option', qadocs_logger.error) @@ -330,7 +340,7 @@ def validate_parameters(parameters, parser): if parameters.test_modules: # If at least one module is specified if len(parameters.test_components) != 1: - raise QAValueError('The --modules option work swhen is only parsing a single test component. Use ' + raise QAValueError('The --modules option works when is only parsing a single test component. Use ' '--components with just one component if you want to parse some modules within a ' 'test component.', qadocs_logger.error) From 41617b16155ef28ac460cd9290968b6aec4096f5 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 16:48:07 +0100 Subject: [PATCH 087/108] refac: Update copyright, changelog and readme. #2600 Also, revert one incompatible parameter check. --- .../wazuh_testing/qa_docs/CHANGELOG.md | 7 +- .../wazuh_testing/qa_docs/README.md | 71 +++++++++++++------ .../wazuh_testing/qa_docs/doc_generator.py | 2 +- .../wazuh_testing/qa_docs/lib/code_parser.py | 2 +- .../wazuh_testing/qa_docs/lib/config.py | 2 +- .../wazuh_testing/qa_docs/lib/index_data.py | 2 +- .../wazuh_testing/qa_docs/lib/pytest_wrap.py | 2 +- .../wazuh_testing/qa_docs/lib/sanity.py | 2 +- .../wazuh_testing/qa_docs/lib/utils.py | 2 +- .../wazuh_testing/scripts/qa_docs.py | 8 +-- 10 files changed, 65 insertions(+), 35 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md b/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md index 900ddad08e..1b677d2309 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md @@ -18,4 +18,9 @@ - Added custom qa-docs logger. ([#1896])(https://github.com/wazuh/wazuh-qa/pull/1896) - Created qa-docs code documentation. ([#1907])(https://github.com/wazuh/wazuh-qa/pull/1907) - Automatized the SearchUI dependencies installation if necessary. ([#1968])(https://github.com/wazuh/wazuh-qa/pull/1968) - - Added qa-docs docker deployment. ([#1983])(https://github.com/wazuh/wazuh-qa/pull/1983) \ No newline at end of file + - Added qa-docs docker deployment. ([#1983])(https://github.com/wazuh/wazuh-qa/pull/1983) + +### Changed + +- Adapt the tool to some framework changes. ([#2605])(https://github.com/wazuh/wazuh-qa/pull/2605) +- Change the schema since framework changes. ([#2590])(https://github.com/wazuh/wazuh-qa/issues/2590) \ No newline at end of file diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md index d228621ea4..1ad1823103 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md @@ -82,7 +82,6 @@ documentation content into the App UI. | ├── search_ui | search-ui module directory | ├── __init__.py | ├── CHANGELOG.md | Record of all notable changes made - | ├── deploy_qa_docs.sh | Script that builds the qa-docs image and runs it using a specific branch | ├── doc_generator.py | The main module and the entry point of the tool execution | ├── requirements.txt | Contains the modules that qa-docs needs | ├── README.MD @@ -96,7 +95,7 @@ documentation content into the App UI. ## Schema The schema file of the tool is located at **qa-docs/schema.yaml**. -The schema fields are specified in the qa-docs documenting test [wiki](https://github.com/wazuh/wazuh-qa/wiki/QADOCS-tool-How-to-document-a-test). +The schema fields are specified in the qa-docs documenting test [wiki](https://github.com/wazuh/wazuh-qa/wiki/QA-Documentation---How-to-document-a-test-using-Schema-2.0). ## Installation @@ -191,36 +190,46 @@ Also, you can visit the `qa-docs` tool [use guide](https://github.com/wazuh/wazu #### Complete run qa-docs --tests-path /path-to-tests-to-parse/ -Using just the `--tests-path` flag, the tool will load the schema file and run a complete parse of the paths in the +Using just the `-p, --tests-path` flag, the tool will load the schema file and run a complete parse of the paths in the configuration to dump the content into the output folder located in the `qa-docs` build directory. e.g: `qa-docs --tests-path /wazuh-qa/tests/` #### Parse specific type(s) qa-docs --tests-path /path-to-tests-to-parse/ --types -Using `--type` flag you can parse only the tests inside the type(s) folder(s) you want. +Using `-t, --types` flag you can parse only the tests inside the type(s) folder(s) you want. -#### Parse specific module(s) - qa-docs --tests-path /path-to-tests-to-parse/ --types --modules +#### Parse specific component(s) + qa-docs --tests-path /path-to-tests-to-parse/ --types --components + +Using `-c, --components` flag you can parse only the tests inside the component(s) folder(s) you want. It also needs the type of tests where the tests are located. -Using `--modules` flag you can parse only the tests inside the modules(s) folder(s) you want. It also needs the type of tests where the tests are located. +#### Parse specific suite(s) + qa-docs --tests-path /path-to-tests-to-parse/ --types --components --suites -#### Parse specific test(s) - qa-docs --tests-path /path-to-tests-to-parse/ -t(--test) TEST_NAME1 TEST_NAME2 +Using `-s, --suites` flag you can parse only the tests inside the modules(s) folder(s) you want. It also needs the type of tests where the tests are located. -Using `-t, --test` flag you can parse only the tests that you want. The documentation parsed will be printed, if you want to save it you have to use the `-o` -flag and specify the output directory. e.g: `qa-docs --tests-path /wazuh-qa/tests/ -t test_cache test_cors -o /tmp`. +#### Parse specific module(s) + qa-docs --tests-path /path-to-tests-to-parse/ --types --components --suites -m(--modules) MODULE_NAME1 MODULE_NAME2 + +Using `-m, --modules` flag you can parse only the modules that you want. The documentation parsed will be printed, if you want to save it you have to use the `-o` +flag and specify the output directory. To parse modules you need to specify their type, component and suite. e.g: `qa-docs -p /wazuh-qa/tests/ --types integration --components test_api -s test_config -t test_cache test_cors -o /tmp`. This option is not compatible with API-related options, because the output is printed or saved with `-o` in a custom directory. #### Check if test(s) exist - qa-docs --tests-path /path-to-tests-to-parse/ -e(--exist) TEST_NAME1 TEST_NAME2 + qa-docs --tests-path /path-to-tests-to-parse/ --types --components --suites --modules -e(--exist) TEST_NAME1 TEST_NAME2 With this option the tool prints if test(s) do(es) exist. +#### Check if module(s) are documented following qa-docs current schema + qa-docs -p /path-to-tests-to-parse/ -t -c -s -m TEST_NAME1 TEST_NAME2 --check-documentation + +With this option the tool prints if test(s) has the expected documentation blocks following the qa-docs schema. + #### Sanity Check - qa-docs --tests-path /path-to-tests-to-parse/ -s + qa-docs --tests-path /path-to-tests-to-parse/ --sanity-check -Using `-s`, the tool will run a sanity check of the content in the output folder. +Using `--sanity-check`, the tool will run a sanity check of the content in the output folder. It will check the coverage of the already parsed files in the **output path** comparing it with the tests found within the **tests path**. @@ -274,7 +283,7 @@ Using `-l` option, the tool launches the application with a previously generated #### Index output data and launch the api qa-docs -il -Using `-il` option, the tool indexes the content of each file output as a document into ElasticSearch and then launches the API. The name of the index must be provided as a parameter. e.g: `qa-docs -I /wazuh-qa/tests/ -il qa-tests`. A previous run must be performed, e.g.`qa-docs -I /wazuh-qa/tests/` so the output data is previously generated. +Using `-il` option, the tool indexes the content of each file output as a document into ElasticSearch and then launches the API. The name of the index must be provided as a parameter. e.g: `qa-docs -p /wazuh-qa/tests/ -il qa-tests`. A previous run must be performed, e.g.`qa-docs -p /wazuh-qa/tests/` so the output data is previously generated. ### Sample executions @@ -283,9 +292,24 @@ Using `-il` option, the tool indexes the content of each file output as a docume qa-docs --tests-path /path-to-tests/ ``` -- Parse `fim` module +- Parse `fim` component +``` +qa-docs --tests-path /path-to-tests/ --type integration --components test_fim +``` + +- Parse api `config` and `rbac` suites ``` -qa-docs --tests-path /path-to-tests/ --type integration --modules test_fim +qa-docs --tests-path /path-to-tests/ --type integration --components test_api --suites test_config test_rbac +``` + +- Parse some `logtest` modules +``` +qa-docs --tests-path /path-to-tests/ --type integration --components test_logtest --suites test_invalid_token --modules test_invalid_session_token +``` + +- Check if some `logtest` modules has documentation blocks +``` +qa-docs -p /path-to-tests/ --type integration --components test_logtest --suites test_configuration --modules test_configuration_file test_get_configuration_sock --check-documentation ``` - Index the parsed data @@ -298,9 +322,9 @@ qa-docs -i my_index qa-docs -l my_index ``` -- Parse `vulnerability_detector` module, index the output data, and launch `search-ui` +- Parse `vulnerability_detector` component, index the output data, and launch `search-ui` ``` -qa-docs --tests-path /path-to-tests/ --type integration --modules test_vulnerability_detector -il vd-index +qa-docs --tests-path /path-to-tests/ --type integration --components test_vulnerability_detector -il vd-index ``` ## Docker deployment @@ -311,10 +335,15 @@ Few examples: - Parse `test_active_response` tests and generate the documentation in `/tmp/qa_docs`: ```bash -qa-docs --docker-run --types integration --modules test_active_response --qa-branch 1796-migrate-doc-active-response +qa-docs --docker-run --types integration --components test_active_response --qa-branch 1796-migrate-doc-active-response +``` + +- Parse `test_fim` tests and generate the documentation in custom folder: +```bash +qa-docs --docker-run --types integration --components test_fim -o /tmp/fim_docu --qa-branch 1796-migrate-doc-active-response ``` - Parse `test_active_response` and `test_agentd` tests and launch search-ui to visualize the documentation: ```bash -qa-docs --docker-run --types integration --modules test_active_response test_agentd -il qa-index --qa-branch 1796-migrate-doc-schema-2 +qa-docs --docker-run --types integration --components test_active_response test_agentd -il qa-index --qa-branch 1796-migrate-doc-schema-2 ``` diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py index d9260130f5..e0cff65f85 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/doc_generator.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2021, Wazuh Inc. +# Copyright (C) 2015-2022, Wazuh Inc. # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py index 974b993464..33bc892a42 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/code_parser.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2021, Wazuh Inc. +# Copyright (C) 2015-2022, Wazuh Inc. # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py index 0c5c8d998d..c5f3ce2b85 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/config.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2021, Wazuh Inc. +# Copyright (C) 2015-2022, Wazuh Inc. # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py index d56850667e..b611005151 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/index_data.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2021, Wazuh Inc. +# Copyright (C) 2015-2022, Wazuh Inc. # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py index 32d834f8a3..3938053d45 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/pytest_wrap.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2021, Wazuh Inc. +# Copyright (C) 2015-2022, Wazuh Inc. # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/sanity.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/sanity.py index 8b0182545d..0204bf818c 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/sanity.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/sanity.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2021, Wazuh Inc. +# Copyright (C) 2015-2022, Wazuh Inc. # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py index d86977da22..dc6e5af4f4 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/lib/utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2021, Wazuh Inc. +# Copyright (C) 2015-2022, Wazuh Inc. # Created by Wazuh, Inc. . # This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index 5c96b93b15..15bf121389 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -211,11 +211,6 @@ def check_incompatible_parameters(parameters): 'using --tests-path', qadocs_logger.error) - if not parameters.test_suites: - raise QAValueError('The --modules option needs the module suite to be parsed. You must specify it ' - 'using --suites', - qadocs_logger.error) - if parameters.index_name: raise QAValueError('The -m(--modules) option is not compatible with -i option', qadocs_logger.error) @@ -441,10 +436,11 @@ def parse_data(args): docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH), OUTPUT_FORMAT) docs.run() - if args.test_types or args.test_components or args.test_modules and not args.check_doc: + if (args.test_types or args.test_components or args.test_modules) and not args.check_doc: qadocs_logger.info('Running QADOCS') docs.run() elif args.test_modules and args.check_doc: + print('asdasd') docs.check_documentation() From 6ee12f4d5aa08aaa1d0154af4b0d991453d7444f Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 16:50:31 +0100 Subject: [PATCH 088/108] refac: Update qa-ctl changelog. #2589 - Added changes related to qa-docs - Bumped to 0.3.1 --- deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md b/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md index 34dd379aa0..ecd83429ab 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md +++ b/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md @@ -1,7 +1,7 @@ # Change Log All notable changes to this tool will be documented in this file. -## [v0.3] - 2021-12-10 +## [v0.3.1] - 2022-03-07 ### Added @@ -12,6 +12,7 @@ All notable changes to this tool will be documented in this file. ### Changed - Improved modularization of functions for reading data from ansible instances. +- Changed how the tool uses `qa-docs`. ([2640])(https://github.com/wazuh/wazuh-qa/pull/2640) ### Fixed From b489c16ca9c7d5b5170987977d0f8744f7fd043b Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Mon, 7 Mar 2022 16:59:52 +0100 Subject: [PATCH 089/108] doc: Fix qa-docs readme. --- deps/wazuh_testing/wazuh_testing/qa_docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md index 1ad1823103..8093a926e7 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/README.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/README.md @@ -206,7 +206,7 @@ Using `-c, --components` flag you can parse only the tests inside the component( #### Parse specific suite(s) qa-docs --tests-path /path-to-tests-to-parse/ --types --components --suites -Using `-s, --suites` flag you can parse only the tests inside the modules(s) folder(s) you want. It also needs the type of tests where the tests are located. +Using `-s, --suites` flag you can parse only the tests inside the components(s) folder(s) you want. #### Parse specific module(s) qa-docs --tests-path /path-to-tests-to-parse/ --types --components --suites -m(--modules) MODULE_NAME1 MODULE_NAME2 @@ -217,7 +217,7 @@ flag and specify the output directory. To parse modules you need to specify thei This option is not compatible with API-related options, because the output is printed or saved with `-o` in a custom directory. #### Check if test(s) exist - qa-docs --tests-path /path-to-tests-to-parse/ --types --components --suites --modules -e(--exist) TEST_NAME1 TEST_NAME2 + qa-docs --tests-path /path-to-tests-to-parse/ --types --components --suites -e(--exist) MODULE_NAME1 MODULE_NAME2 With this option the tool prints if test(s) do(es) exist. From 4623ff4c892f0cd87cc03a1592862750ae6f312b Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 13:55:41 +0100 Subject: [PATCH 090/108] fix: Add qa-ctl v0.3 missing changes. --- .../wazuh_testing/qa_ctl/CHANGELOG.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md b/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md index ecd83429ab..ccf3de50bb 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md +++ b/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md @@ -9,6 +9,8 @@ All notable changes to this tool will be documented in this file. - Added new methods to avoid the SSH fingerprint check ansible error. - Added generation of independent configuration blocks for instance and task deployment. - Added CentOS 7 support. + + ### Changed - Improved modularization of functions for reading data from ansible instances. @@ -21,6 +23,24 @@ All notable changes to this tool will be documented in this file. - Fixed some uses of UNIX libraries in `file` module under Windows. +## [v0.3] - 2021-12-10 + +### Added + +- Added new module to be able to launch custom ansible tasks with `qa-ctl`. +- Added new methods to avoid the SSH fingerprint check ansible error. +- Added generation of independent configuration blocks for instance and task deployment. +- Added CentOS 7 support. +### Changed + +- Improved modularization of functions for reading data from ansible instances. + +### Fixed + +- Fixed some typos in qa-ctl logs. +- Fixed some uses of UNIX libraries in `file` module under Windows. + + ## [v0.2] - 2021-11-05 ### Added From 5c8ec5b57dea53781df54dfee43a63ab27e113ed Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 14:01:53 +0100 Subject: [PATCH 091/108] refac: Update suite as optional and change tool script. --- .../qa_ctl/configuration/config_generator.py | 22 +++-- .../wazuh_testing/scripts/qa_ctl.py | 96 ++++++++++++------- 2 files changed, 74 insertions(+), 44 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py b/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py index 6961178eb1..d2fc34adb4 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py +++ b/deps/wazuh_testing/wazuh_testing/qa_ctl/configuration/config_generator.py @@ -29,7 +29,7 @@ class QACTLConfigGenerator: wazuh package version will be taken from the documetation test information Attributes: - tests (list): list with all the test that the user desires to run. + test_modules_data (dict): dict with all the tests that the user desires to run. wazuh_version (string): version of the wazuh packages that the user desires to install. This parameter is set to None by default. In case that version parameter is not given, the wazuh package version will be taken from the documetation test information @@ -131,9 +131,9 @@ class QACTLConfigGenerator: } } - def __init__(self, modules_data=None, wazuh_version=None, qa_branch='master', + def __init__(self, test_modules_data=None, wazuh_version=None, qa_branch='master', qa_files_path=join(gettempdir(), 'wazuh_qa_ctl', 'wazuh-qa'), systems=None): - self.modules_data = modules_data + self.test_modules_data = test_modules_data self.wazuh_version = wazuh_version self.systems = systems self.qactl_used_ips_file = join(gettempdir(), 'wazuh_qa_ctl', 'qactl_used_ips.txt') @@ -155,8 +155,9 @@ def __get_module_info(self, type, component, suite, module): Returns: dict : return the info of the named test in dict format. """ + suite_command = f"-s {suite}" if suite else '' qa_docs_command = f"qa-docs -p {join(self.qa_files_path, 'tests')} -o {join(gettempdir(), 'wazuh_qa_ctl')} " \ - f"-t {type} -c {component} -s {suite} -m {module} --no-logging" + f"-t {type} -c {component} {suite_command} -m {module} --no-logging" test_data_file_path = f"{join(gettempdir(), 'wazuh_qa_ctl', 'output', module)}.json" run_local_command_returning_output(qa_docs_command) @@ -184,9 +185,16 @@ def __get_all_tests_info(self): dict object : dict containing all the information of the tests given from their documentation. """ tests_info = [] - for type, component, suite, module in zip(self.modules_data['types'], self.modules_data['components'], - self.modules_data['suites'], self.modules_data['modules']): - tests_info.append(self.__get_module_info(type, component, suite, module)) + if self.test_modules_data['suites']: + for type, component, suite, module in zip(self.test_modules_data['types'], + self.test_modules_data['components'], + self.test_modules_data['suites'], + self.test_modules_data['modules']): + tests_info.append(self.__get_module_info(type, component, suite, module)) + else: + for type, component, module in zip(self.test_modules_data['types'], self.test_modules_data['components'], + self.test_modules_data['modules']): + tests_info.append(self.__get_module_info(type, component, '', module)) return tests_info diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index 951f4300ab..00927da7df 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -95,6 +95,32 @@ def validate_configuration_data(configuration_data, qa_ctl_mode): qactl_logger.debug('Schema validation has passed successfully') +def validate_test_module_exists_and_documented(type=None, component=None, suite=None, module=None): + """Check that the modules specified exist and are documented. + + Args: + type (str): Test type. + component (str): Test component. + suite (str): Test suite. + module (str): Test module. + """ + tests_path = os.path.join(WAZUH_QA_FILES, 'tests') + # Validate if the specified tests exist + suite_command = f"-s {suite}" if suite is not None else '' + check_test_exist = f"qa-docs -p {tests_path} -t {type} -c {component} {suite_command} -e {module} --no-logging" + check_test_exist = local_actions.run_local_command_returning_output(check_test_exist) + if f"{module} exists" not in check_test_exist: + raise QAValueError(f"{module} does not exist in {tests_path}", qactl_logger.error, QACTL_LOGGER) + + # Validate if the selected tests are documented + test_documentation_check = f"qa-docs -p {tests_path} -t {type} -c {component} {suite_command} -m {module} " \ + '--no-logging --check-documentation' + test_documentation_check = local_actions.run_local_command_returning_output(test_documentation_check) + if f'{module} is not documented' in test_documentation_check: + raise QAValueError(f"{module} is not documented using qa-docs current schema", qactl_logger.error, + QACTL_LOGGER) + + def set_qactl_logging(qactl_configuration): """Set qa-ctl logging configuration according to the config section of the qa-ctl configuration file. @@ -187,8 +213,9 @@ def _validate_tests_os(parameters): platform = QACTLConfigGenerator.SYSTEMS[op_system]['os_platform'] if op_system in \ QACTLConfigGenerator.SYSTEMS.keys() else op_system if platform not in test_data['os_platform']: - raise QAValueError(f"The {module} module does not support the {op_system} system. Allowed platforms:" - f" {test_data['os_platform']} (ubuntu and centos are from linux platform)") + raise QAValueError(f"The {module} module does not support the {op_system} system. Allowed " + f"platforms: {test_data['os_platform']} (ubuntu and centos are from linux " + 'platform)') # Check os version if len([os_version.lower() for os_version in test_data['os_version'] if op_system in os_version]) > 0: raise QAValueError(f"The {module} module does not support the {op_system} system. Allowed operating" @@ -204,14 +231,16 @@ def _validate_tests_os(parameters): raise QAValueError('The --run parameter is incompatible with --config. --run will autogenerate the ' 'configuration', qactl_logger.error, QACTL_LOGGER) - if parameters.run and not (parameters.test_components and parameters.test_suites and parameters.test_modules): + # Check that run flag has the minimal test module information + if parameters.run and not (parameters.test_components and parameters.test_modules): raise QAValueError('The --run parameter needs the component, suite and module to run a test. You can specify ' 'them with --test-components, --test-suites and --test-modules.', qactl_logger.error, QACTL_LOGGER) + # Check that the test flags have the same lenght if parameters.run: if len(parameters.test_types) != len(parameters.test_components) or \ - len(parameters.test_types) != len(parameters.test_suites) or \ + (len(parameters.test_types) != len(parameters.test_suites) and parameters.test_suites) or \ len(parameters.test_types) != len(parameters.test_modules): raise QAValueError('The parameters that specify the modules, suites, components, and types must have the ' 'same length: --test-types, --test-components, --test-suites and --test_modules.', @@ -245,23 +274,14 @@ def _validate_tests_os(parameters): # Check if specified tests exist. Wazuh-qa repository needs to be downloaded locally before. if parameters.run: - # cambiar el for para iterar sobre los 4 arrays - for type, component, suite, module in zip(parameters.test_types, parameters.test_components, - parameters.test_suites, parameters.test_modules): - tests_path = os.path.join(WAZUH_QA_FILES, 'tests') - # Validate if the specified tests exist - exist_cmd = f"qa-docs -p {tests_path} -t {type} -c {component} -s {suite} -e {module} --no-logging" - check_test_exist = local_actions.run_local_command_returning_output(exist_cmd) - if f"{module} exists" not in check_test_exist: - raise QAValueError(f"{module} does not exist in {tests_path}", qactl_logger.error, QACTL_LOGGER) - - # Validate if the selected tests are documented - check_doc_cmd = f"qa-docs -p {tests_path} -t {type} -c {component} -s {suite} -m {module} --no-logging " \ - '--check-documentation' - test_documentation_check = local_actions.run_local_command_returning_output(check_doc_cmd) - if f'{module} is not documented' in test_documentation_check: - raise QAValueError(f"{module} is not documented using qa-docs current schema", qactl_logger.error, - QACTL_LOGGER) + if parameters.test_suites: + for type, component, suite, module in zip(parameters.test_types, parameters.test_components, + parameters.test_suites, parameters.test_modules): + validate_test_module_exists_and_documented(type, component, suite, module) + else: + for type, component, module in zip(parameters.test_types, parameters.test_components, + parameters.test_modules): + validate_test_module_exists_and_documented(type, component, module=module) # Validate the tests operating system compatibility if specified if parameters.operating_systems: @@ -299,27 +319,24 @@ def get_script_parameters(): help='Config generation mode. The test data will be processed and the configuration will be ' 'generated without running anything.') - # parser.add_argument('--run', '-r', type=str, action='store', required=False, nargs='+', dest='run_test', - # help='Independent run method. Specify a test or a list of tests to be run.') - parser.add_argument('--run', '-r', action='store_true', help='Independent run method. The tests that the use specified will be run.') parser.add_argument('--test-types', type=str, action='store', required=False, nargs='+', dest='test_types', default=['integration'], - help='Independent run method. Specify a test or a list of tests to be run.') + help='Specify the types of the tests to be run.') parser.add_argument('--test-components', type=str, action='store', required=False, nargs='+', dest='test_components', default=[], - help='Independent run method. Specify a test or a list of tests to be run.') + help='Specify the components of the tests to be run.') parser.add_argument('--test-suites', type=str, action='store', required=False, nargs='+', dest='test_suites', default=[], - help='Independent run method. Specify a test or a list of tests to be run.') + help='Specify the suites of the tests to be run.') parser.add_argument('--test-modules', type=str, action='store', required=False, nargs='+', dest='test_modules', default=[], - help='Independent run method. Specify a test or a list of tests to be run.') + help='Specify the modules that contain the tests to be run.') parser.add_argument('--version', '-v', type=str, action='store', required=False, dest='version', help='Wazuh installation and tests version.') @@ -375,16 +392,21 @@ def main(): # Generate or get the qactl configuration file if qa_ctl_mode == AUTOMATIC_MODE: qactl_logger.debug('Generating configuration file') - # cambiar run_test de config generator - # args = ['types', 'components', 'suites', 'modules'] modules_data = {'types': [], 'components': [], 'suites': [], 'modules': []} - # modules_data = dict(zip(args,[[] for x in range(0,len(args))])) - for type, component, suite, module in zip(arguments.test_types, arguments.test_components, - arguments.test_suites, arguments.test_modules): - modules_data['types'].append(type) - modules_data['components'].append(component) - modules_data['suites'].append(suite) - modules_data['modules'].append(module) + + if arguments.test_suites: + for type, component, suite, module in zip(arguments.test_types, arguments.test_components, + arguments.test_suites, arguments.test_modules): + modules_data['types'].append(type) + modules_data['components'].append(component) + modules_data['suites'].append(suite) + modules_data['modules'].append(module) + else: + for type, component, module in zip(arguments.test_types, arguments.test_components, + arguments.test_modules): + modules_data['types'].append(type) + modules_data['components'].append(component) + modules_data['modules'].append(module) config_generator = QACTLConfigGenerator(modules_data, arguments.version, arguments.qa_branch, WAZUH_QA_FILES, arguments.operating_systems) From c047c52249a0bf1e440503f487e1610ff911971d Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 15:44:44 +0100 Subject: [PATCH 092/108] fix: Fix qa-ctl v0.3.1 changelog --- .../wazuh_testing/qa_ctl/CHANGELOG.md | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md b/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md index ccf3de50bb..c982df9e5d 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md +++ b/deps/wazuh_testing/wazuh_testing/qa_ctl/CHANGELOG.md @@ -5,22 +5,12 @@ All notable changes to this tool will be documented in this file. ### Added -- Added new module to be able to launch custom ansible tasks with `qa-ctl`. -- Added new methods to avoid the SSH fingerprint check ansible error. -- Added generation of independent configuration blocks for instance and task deployment. -- Added CentOS 7 support. +- Added new parameters related to the run method. ([#2640](https://github.com/wazuh/wazuh-qa/pull/2640)) ### Changed -- Improved modularization of functions for reading data from ansible instances. -- Changed how the tool uses `qa-docs`. ([2640])(https://github.com/wazuh/wazuh-qa/pull/2640) - - -### Fixed - -- Fixed some typos in qa-ctl logs. -- Fixed some uses of UNIX libraries in `file` module under Windows. +- Changed how the tool uses `qa-docs`. ([#2640](https://github.com/wazuh/wazuh-qa/pull/2640)) ## [v0.3] - 2021-12-10 From a8b91e6cdeb00ad52efd7631623966834dc81f54 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 15:48:40 +0100 Subject: [PATCH 093/108] refac: Split test module checks in different methods --- .../wazuh_testing/scripts/qa_ctl.py | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index 00927da7df..c7ced2ac5e 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -95,24 +95,34 @@ def validate_configuration_data(configuration_data, qa_ctl_mode): qactl_logger.debug('Schema validation has passed successfully') -def validate_test_module_exists_and_documented(type=None, component=None, suite=None, module=None): - """Check that the modules specified exist and are documented. +def check_test_module_exists(tests_path, type, component, suite_command, module): + """Check that the module exists. Args: + tests_path (str): Path where the tests with the documentation are. type (str): Test type. component (str): Test component. - suite (str): Test suite. + suite_command (str): Suite flag and name to be used in the qa-docs run. module (str): Test module. + """ - tests_path = os.path.join(WAZUH_QA_FILES, 'tests') - # Validate if the specified tests exist - suite_command = f"-s {suite}" if suite is not None else '' check_test_exist = f"qa-docs -p {tests_path} -t {type} -c {component} {suite_command} -e {module} --no-logging" check_test_exist = local_actions.run_local_command_returning_output(check_test_exist) if f"{module} exists" not in check_test_exist: raise QAValueError(f"{module} does not exist in {tests_path}", qactl_logger.error, QACTL_LOGGER) - # Validate if the selected tests are documented + +def check_test_module_documentation(tests_path, type, component, suite_command, module): + """Check that the module is documented. + + Args: + tests_path (str): Path where the tests with the documentation are. + type (str): Test type. + component (str): Test component. + suite_command (str): Suite flag and name to be used in the qa-docs run. + module (str): Test module. + + """ test_documentation_check = f"qa-docs -p {tests_path} -t {type} -c {component} {suite_command} -m {module} " \ '--no-logging --check-documentation' test_documentation_check = local_actions.run_local_command_returning_output(test_documentation_check) @@ -120,6 +130,21 @@ def validate_test_module_exists_and_documented(type=None, component=None, suite= raise QAValueError(f"{module} is not documented using qa-docs current schema", qactl_logger.error, QACTL_LOGGER) +def validate_test_module(type=None, component=None, suite=None, module=None): + """Check that the module exists and is documented. + + Args: + type (str): Test type. + component (str): Test component. + suite (str): Test suite. + module (str): Test module. + """ + tests_path = os.path.join(WAZUH_QA_FILES, 'tests') + suite_command = f"-s {suite}" if suite is not None else '' + + check_test_module_exists(tests_path, type, component, suite_command, module) + check_test_module_documentation(tests_path, type, component, suite_command, module) + def set_qactl_logging(qactl_configuration): """Set qa-ctl logging configuration according to the config section of the qa-ctl configuration file. @@ -277,11 +302,11 @@ def _validate_tests_os(parameters): if parameters.test_suites: for type, component, suite, module in zip(parameters.test_types, parameters.test_components, parameters.test_suites, parameters.test_modules): - validate_test_module_exists_and_documented(type, component, suite, module) + validate_test_module(type, component, suite, module) else: for type, component, module in zip(parameters.test_types, parameters.test_components, parameters.test_modules): - validate_test_module_exists_and_documented(type, component, module=module) + validate_test_module(type, component, module=module) # Validate the tests operating system compatibility if specified if parameters.operating_systems: From f1275c981d17aef6129080dae4818957e1cefdf2 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 15:52:02 +0100 Subject: [PATCH 094/108] fix: Remove blank spaces in method documentation. --- deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index c7ced2ac5e..8b358d9ba2 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -104,7 +104,6 @@ def check_test_module_exists(tests_path, type, component, suite_command, module) component (str): Test component. suite_command (str): Suite flag and name to be used in the qa-docs run. module (str): Test module. - """ check_test_exist = f"qa-docs -p {tests_path} -t {type} -c {component} {suite_command} -e {module} --no-logging" check_test_exist = local_actions.run_local_command_returning_output(check_test_exist) @@ -121,7 +120,6 @@ def check_test_module_documentation(tests_path, type, component, suite_command, component (str): Test component. suite_command (str): Suite flag and name to be used in the qa-docs run. module (str): Test module. - """ test_documentation_check = f"qa-docs -p {tests_path} -t {type} -c {component} {suite_command} -m {module} " \ '--no-logging --check-documentation' From 1bf965a403773d1b0a577822f0f39ca76fd25bdb Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 17:16:52 +0100 Subject: [PATCH 095/108] refac: Update qa-docs changelog --- .../wazuh_testing/qa_docs/CHANGELOG.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md b/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md index 900ddad08e..907a24fd7f 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/CHANGELOG.md @@ -10,12 +10,19 @@ - Added TestCaseParser module to DocGenerator. ([#1651](https://github.com/wazuh/wazuh-qa/pull/1651)) - Implemented the DocGenerator main module and test search. ([#1623](https://github.com/wazuh/wazuh-qa/pull/1623) - Added Config to DocGenerator. ([#1619](https://github.com/wazuh/wazuh-qa/pull/1619)) - - Implemented a sanity check module for DocGenerator. ([#1649])(https://github.com/wazuh/wazuh-qa/pull/1649) + - Implemented a sanity check module for DocGenerator. ([#1649](https://github.com/wazuh/wazuh-qa/pull/1649)) - Added DocGenerator code to master branch. ([#1762](https://github.com/wazuh/wazuh-qa/pull/1762)) - Tool added to wazuh-testing framework. ([#1854](https://github.com/wazuh/wazuh-qa/pull/1854)) - Added single test parse. ([#1854](https://github.com/wazuh/wazuh-qa/pull/1854)) - Integrate qa-docs into wazuh-qa framework. ([#1854](https://github.com/wazuh/wazuh-qa/pull/1854)) - - Added custom qa-docs logger. ([#1896])(https://github.com/wazuh/wazuh-qa/pull/1896) - - Created qa-docs code documentation. ([#1907])(https://github.com/wazuh/wazuh-qa/pull/1907) - - Automatized the SearchUI dependencies installation if necessary. ([#1968])(https://github.com/wazuh/wazuh-qa/pull/1968) - - Added qa-docs docker deployment. ([#1983])(https://github.com/wazuh/wazuh-qa/pull/1983) \ No newline at end of file + - Added custom qa-docs logger. ([#1896](https://github.com/wazuh/wazuh-qa/pull/1896)) + - Created qa-docs code documentation. ([#1907](https://github.com/wazuh/wazuh-qa/pull/1907)) + - Automatized the SearchUI dependencies installation if necessary. ([#1968](https://github.com/wazuh/wazuh-qa/pull/1968)) + - Added qa-docs docker deployment. ([#1983](https://github.com/wazuh/wazuh-qa/pull/1983)) + - Added output format selection. + +### Changed + +- Changed the docker deployment. +- Adapted the tool to framework changes. ([#2605](https://github.com/wazuh/wazuh-qa/pull/2605)) +- Changed the schema because of framework changes. ([#2590](https://github.com/wazuh/wazuh-qa/issues/2590)) From 2f1962e8df78857eacb8c959889ff7c825ea6b12 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 17:17:17 +0100 Subject: [PATCH 096/108] refac: Remove branch checkout in dockerfile This allows to build the image using the master state. --- deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile index 9073153671..c4d2bbbcef 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/dockerfiles/Dockerfile @@ -28,7 +28,7 @@ RUN curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add - && \ apt-get install wazuh-manager WORKDIR / -RUN git clone https://github.com/wazuh/wazuh-qa -b 1864-qa-docs-fixes +RUN git clone https://github.com/wazuh/wazuh-qa WORKDIR /wazuh-qa/ RUN python3 -m pip install --upgrade pip && \ python3 -m pip install -r requirements.txt --ignore-installed From 02dbab0566caa94c99c97482f08fb04a5ff4f128 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Tue, 8 Mar 2022 17:47:49 +0100 Subject: [PATCH 097/108] fix: Remove conflict selection --- deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py index bc64e26dce..26adb01a5e 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_docs.py @@ -432,15 +432,10 @@ def parse_data(args): docs = DocGenerator(Config(SCHEMA_PATH, args.tests_path, OUTPUT_PATH), OUTPUT_FORMAT) docs.run() -<<<<<<< HEAD - if (args.test_types or args.test_components or args.test_modules) and not args.check_doc: -======= if (args.test_types or args.test_components or args.test_modules) and not (args.check_doc or args.test_exist): ->>>>>>> c85360473a709feb62ce0fdae328c43718541424 qadocs_logger.info('Running QADOCS') docs.run() elif args.test_modules and args.check_doc: - print('asdasd') docs.check_documentation() From 382676240e272b1d192f521e8287b4ff61705f08 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 15:55:26 +0100 Subject: [PATCH 098/108] fix: resolve missing conflicts in vuldet --- .../test_providers/test_enabled.py | 105 ------------------ .../test_providers/test_missing_os.py | 80 ------------- 2 files changed, 185 deletions(-) diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py b/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py index 9459ab4623..1e54e81613 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_enabled.py @@ -11,11 +11,7 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -<<<<<<< HEAD components: -======= -modules: ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 - vulnerability_detector suite: providers @@ -141,48 +137,9 @@ def test_enabled(configuration, metadata, set_wazuh_configuration_vdt, truncate_ @pytest.mark.tier(level=0) -<<<<<<< HEAD -@pytest.mark.parametrize('configuration, metadata', zip(disabled_configurations, disabled_configuration_metadata), - ids=disabled_test_case_ids) -def test_disabled(configuration, metadata, set_wazuh_configuration, truncate_log_files, restart_modulesd_function): - ''' - description: Check if modulesd downloads the feeds from different providers when enabled is set to yes. To do this, - it identifies the log which, if activated, indicates the update of the feeds. - - wazuh_min_version: 4.2.0 - - tier: 0 - - parameters: - - configuration: - type: dict - brief: Wazuh configuration data. Needed for set_wazuh_configuration fixture. - - metadata: - type: dict - brief: Wazuh configuration metadata - - set_wazuh_configuration: - type: fixture - brief: Set the wazuh configuration according to the configuration data. - - restart_modulesd_function: - type: fixture - brief: Restart the wazuh-modulesd daemon. - - truncate_log_files: - type: fixture - brief: Truncate the log files at the end of the testing case. - - assertions: - - If the provider tag is disabled, then the provider feed download must not start. - - input_description: - - The `test_disabled.yaml` file provides the module configuration for this test. - - expected_output: - - 'Starting database update' -======= @pytest.mark.parametrize('configuration, metadata', zip(t2_configurations, t2_configuration_metadata), ids=t2_case_ids) def test_disabled(configuration, metadata, set_wazuh_configuration_vdt, truncate_monitored_files, restart_modulesd_function): ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 ''' description: Check if modulesd does not download the feeds from different providers when enabled is set to no. @@ -193,69 +150,7 @@ def test_disabled(configuration, metadata, set_wazuh_configuration_vdt, truncate wazuh_min_version: 4.2.0 -<<<<<<< HEAD - tier: 5 - - parameters: - - configuration: - type: dict - brief: Wazuh configuration data. Needed for set_wazuh_configuration fixture. - - metadata: - type: dict - brief: Wazuh configuration metadata - - set_wazuh_configuration: - type: fixture - brief: Set the wazuh configuration according to the configuration data. - - truncate_log_files: - type: fixture - brief: Truncate the log files at the end of the testing case. - - clean_cve_tables_func: - type: fixture - brief: Clean all the CVE tables before and after running the test. - - restart_modulesd_function: - type: fixture - brief: Restart the wazuh-modulesd daemon. - - assertions: - - If the provider tag is enabled, then the provider feed download starts. - - The feed has been downloaded successfully. - - The feed data has been imported in the CVE database tables successfully. - - input_description: - - The `test_enabled.yaml` file provides the module configuration for this test. - - expected_output: - - 'Starting database update' - - 'The update of the feed finished' - ''' - evm.check_provider_database_update_start_log(metadata['provider_name']) - - evm.check_provider_database_update_finish_log(metadata['provider_name'], timeout=vd.DOWNLOAD_TIMEOUT) - - # Vulnerabilities feed must be inserted in the DB - if metadata['provider_name'] == 'National Vulnerability Database': - assert cve_db.get_NVD_feeds_number() > 0 - elif metadata['provider_name'] == 'Microsoft Security Update': - assert cve_db.get_MSU_feeds_number() > 0 - else: - assert cve_db.get_provider_feeds_number() > 0 - - -@pytest.mark.tier(level=5) -@pytest.mark.parametrize('configuration, metadata', zip(disabled_configurations, disabled_configuration_metadata), - ids=disabled_test_case_ids) -def test_disabled_extended(configuration, metadata, set_wazuh_configuration, truncate_log_files, clean_cve_tables_func, - restart_modulesd_function): - ''' - description: Check if modulesd downloads the feeds from different providers when enabled is set to yes. To do this, - it identifies the log which, if activated, indicates the update of the feeds. - - wazuh_min_version: 4.2.0 -======= tier: 0 ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 - - tier: 5 parameters: - configuration: diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py b/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py index 8f4c560493..d3224502cb 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_missing_os.py @@ -11,11 +11,7 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -<<<<<<< HEAD components: -======= -modules: ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 - vulnerability_detector suite: providers @@ -146,80 +142,4 @@ def test_providers_missing_os(configuration, metadata, set_wazuh_configuration_v else: os_name = f"JSON {provider_name}" if 'Red Hat' in provider_name else f"{provider_name}" -<<<<<<< HEAD - evm.check_provider_database_update_start_log(os_name, vd.DOWNLOAD_TIMEOUT) - - -@pytest.mark.tier(level=5) -@pytest.mark.parametrize('configuration, metadata', zip(configurations, configuration_metadata), ids=test_case_ids) -def test_providers_missing_os_extended(configuration, metadata, set_wazuh_configuration, truncate_log_files, - clean_cve_tables_func): - ''' - description: Check if modulesd downloads the feeds without specifying the os version. To do this, it checks if - errors occur when the tag is omitted in the configuration in providers that should have it and, - on the other hand, if the feeds are indexed in the database in providers that do not require this tag. - - wazuh_min_version: 4.2.0 - - tier: 5 - - parameters: - - configuration: - type: dict - brief: Wazuh configuration data. Needed for set_wazuh_configuration fixture. - - metadata: - type: dict - brief: Wazuh configuration metadata - - set_wazuh_configuration: - type: fixture - brief: Set the wazuh configuration according to the configuration data. - - truncate_log_files: - type: fixture - brief: Truncate the log files at the end of the testing case. - - clean_cve_tables_func: - type: fixture - brief: Clean all the CVE tables before and after running the test. - - stop_modules_function_after_execution: - type: fixture - brief: Stop the wazuh modules daemon. - - assertions: - - The provider os data update starts when `os` has not a determined value. - - The error message appears when `os` tag is not present in Amazon Linux, Canonical and Debian providers. - - The feeds are indexed in the database. - - input_description: - - The `test_no_os.yaml` file provides the module configuration for this test. - - expected_output: - - r'.*: Configuration error at.*' - - 'Starting database update' - - 'The update of the feed finished' - ''' - provider_name = metadata['provider_name'] - - # Those providers that aren't expected to work without the tag. - try: - control_service('restart') - except ValueError: - evm.check_configuration_error() - else: - for operating_system in metadata['os']: - if operating_system != '': - os_name = f"{provider_name} {operating_system}" - else: - os_name = f"JSON {provider_name}" if 'Red Hat' in provider_name else f"{provider_name}" - - evm.check_provider_database_update_start_log(os_name, vd.DOWNLOAD_TIMEOUT) - evm.check_provider_database_update_finish_log(os_name, vd.VULN_DETECTOR_FULL_DOWNLOAD_TIMEOUT) - - # Vulnerabilities feed must be inserted in the DB - if metadata['provider_name'] == 'National Vulnerability Database': - assert cve_db.get_NVD_feeds_number() > 0 - elif metadata['provider_name'] == 'Microsoft Security Update': - assert cve_db.get_MSU_feeds_number() > 0 - else: - assert cve_db.get_provider_feeds_number() > 0 -======= evm.check_provider_database_update_start_log(os_name, vd.T_180) ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 From 71e4587f39df3f93b1e16f8387b2c14fb5bc217b Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 17:16:03 +0100 Subject: [PATCH 099/108] fix: Push missing resolved conflicts --- .../test_agent_auth_enrollment.py | 19 --- .../test_enrollment/test_agentd_enrollment.py | 19 --- .../test_command_execution_dbg.py | 24 ++-- .../test_basic_configuration_ipv6.py | 133 ++++++++++++++++++ ...test_basic_configuration_local_ip_valid.py | 3 - ...st_basic_configuration_queue_size_valid.py | 3 - ...c_configuration_rids_closing_time_valid.py | 3 - .../test_general_settings/test_enabled.py | 4 - .../test_general_settings/test_interval.py | 4 - .../test_min_full_scan_interval.py | 4 - .../test_run_on_start.py | 8 -- 11 files changed, 145 insertions(+), 79 deletions(-) create mode 100644 tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py diff --git a/tests/integration/test_enrollment/test_agent_auth_enrollment.py b/tests/integration/test_enrollment/test_agent_auth_enrollment.py index bf4044adcb..9397c031c3 100644 --- a/tests/integration/test_enrollment/test_agent_auth_enrollment.py +++ b/tests/integration/test_enrollment/test_agent_auth_enrollment.py @@ -8,14 +8,6 @@ type: integration brief: This module verifies the correct behavior of the agent-auth enrollment tool under different configurations -<<<<<<< HEAD - -======= -tier: - 0 -modules: - - authd ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 components: - agentd @@ -24,12 +16,6 @@ daemons: - wazuh-authd -<<<<<<< HEAD - -======= -path: - /tests/integration/test_enrollment/test_agent_auth_enrollment.py ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 os_platform: - linux - windows @@ -104,16 +90,11 @@ def test_agent_auth_enrollment(configure_environment, shutdown_agentd, get_curre "Check that different configuration generates the adequate enrollment message or the corresponding error log. Agent-auth will be executed using the different parameters and with different keys and password files scenarios as described in the test cases." -<<<<<<< HEAD wazuh_min_version: 4.2.0 tier: 0 -======= - wazuh_min_version: - 4.2.0 ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 parameters: - configure_environment: type: fixture diff --git a/tests/integration/test_enrollment/test_agentd_enrollment.py b/tests/integration/test_enrollment/test_agentd_enrollment.py index d5f994e267..f85762c2c2 100644 --- a/tests/integration/test_enrollment/test_agentd_enrollment.py +++ b/tests/integration/test_enrollment/test_agentd_enrollment.py @@ -8,14 +8,6 @@ type: integration brief: This module verifies the correct behavior of Wazuh Agentd during the enrollment under different configurations. -<<<<<<< HEAD - -======= -tier: - 0 -modules: - - agentd ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 components: - agentd @@ -24,12 +16,6 @@ daemons: - wazuh-agentd -<<<<<<< HEAD - -======= -path: - /tests/integration/test_enrollment/test_agentd_enrollment.py ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 os_platform: - linux - windows @@ -120,16 +106,11 @@ def test_agentd_enrollment(configure_environment, override_wazuh_conf, get_curre "Check that different configuration generates the adequate enrollment message or the corresponding error log. The configuration, keys, and password files will be written with the different scenarios described in the test cases. After this, Agentd is started to wait for the expected result." -<<<<<<< HEAD wazuh_min_version: 4.2.0 tier: 0 -======= - wazuh_min_version: - 4.2.0 ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 parameters: - configure_environment: type: fixture diff --git a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py index ff22802d1e..81542a63e8 100644 --- a/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py +++ b/tests/integration/test_logcollector/test_command_monitoring/test_command_execution_dbg.py @@ -198,15 +198,15 @@ def test_command_execution_dbg(get_files_list, create_file_structure_module, con get_configuration, file_monitoring, configure_environment, restart_logcollector): ''' description: Check if the 'wazuh-logcollector' daemon generates debug logs when running commands with - special characteristics. For this purpose, the test will configure the logcollector to run - a command, setting it in the 'command' tag and using the 'command' and 'full_command' log - formats. The properties of that command can be, for example, a non-existent command or one - that includes special characters. Once the logcollector has started, it will wait for the - 'running' event that indicates that the command has been executed. Finally, the test - will verify that the debug 'read N lines' event is generated, this event indicates the number - of lines read from the command run. Depending on test case, the test also will verify that - the debug event 'reading command' is generated, this event includes the output of the command - run, and its alias if it is set in the 'alias' tag. + special characteristics. For this purpose, the test will configure the logcollector to run + a command, setting it in the 'command' tag and using the 'command' and 'full_command' log + formats. The properties of that command can be, for example, a non-existent command or one + that includes special characters. Once the logcollector has started, it will wait for the + 'running' event that indicates that the command has been executed. Finally, the test + will verify that the debug 'read N lines' event is generated, this event indicates the number + of lines read from the command run. Depending on test case, the test also will verify that + the debug event 'reading command' is generated, this event includes the output of the command + run, and its alias if it is set in the 'alias' tag. wazuh_min_version: 4.2.0 @@ -238,9 +238,9 @@ def test_command_execution_dbg(get_files_list, create_file_structure_module, con - Verify that the debug 'lines' event is generated when running the related command. input_description: A configuration template (test_command_execution) is contained in an external - YAML file (wazuh_command_conf.yaml), which includes configuration settings for - the 'wazuh-logcollector' daemon and, it is combined with the test cases - (log formats and commands to run) defined in the module. + YAML file (wazuh_command_conf.yaml), which includes configuration settings for + the 'wazuh-logcollector' daemon and, it is combined with the test cases + (log formats and commands to run) defined in the module. expected_output: - r'DEBUG: Running .*' diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py new file mode 100644 index 0000000000..bbb1afecf4 --- /dev/null +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py @@ -0,0 +1,133 @@ +''' +copyright: Copyright (C) 2015-2022, Wazuh Inc. + Created by Wazuh, Inc. . + This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 + +type: integration + +brief: The 'wazuh-remoted' program is the server side daemon that communicates with the agents. + Specifically, this test will check that remoted starts correctly configuring an + IPv6 address. + +components: + - remoted + +suite: configuration + +targets: + - manager + +daemons: + - wazuh-remoted + +os_platform: + - linux + +os_version: + - Arch Linux + - Amazon Linux 2 + - Amazon Linux 1 + - CentOS 8 + - CentOS 7 + - Debian Buster + - Red Hat 8 + - Ubuntu Focal + - Ubuntu Bionic + +references: + - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html + - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html + - https://documentation.wazuh.com/current/user-manual/agents/agent-life-cycle.html + - https://documentation.wazuh.com/current/user-manual/capabilities/agent-key-polling.html + +tags: + - remoted +''' +import os +import pytest + +import wazuh_testing.remote as remote +from wazuh_testing.api import compare_config_api_response + +from wazuh_testing.tools.configuration import load_wazuh_configurations +from urllib3.exceptions import InsecureRequestWarning +import requests + +# Marks +pytestmark = pytest.mark.tier(level=0) + +# Configuration +test_data_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data') +configurations_path = os.path.join(test_data_path, 'wazuh_basic_configuration.yaml') + +parameters = [ + {'CONNECTION': 'secure'}, + {'CONNECTION': 'syslog'} +] + +metadata = [ + {'connection': 'secure'}, + {'connection': 'syslog'} +] + +configurations = load_wazuh_configurations(configurations_path, __name__, params=parameters, metadata=metadata) +configuration_ids = [f"{x['CONNECTION']}" for x in parameters] + + +# fixtures +@pytest.fixture(scope="module", params=configurations, ids=configuration_ids) +def get_configuration(request): + """Get configurations from the module.""" + return request.param + + +def test_ipv6_secure(get_configuration, configure_environment, restart_remoted, wait_for_remoted_start_log): + ''' + description: Check if 'wazuh-remoted' correctly starts using ipv6 values. + For this purpose, it loads the configuration from test cases cfg(when the connection is secure, ipv4 is + used instead), checks if the configuration is the same as the API reponse. + + wazuh_min_version: 4.2.0 + + tier: 0 + + parameters: + - get_configuration: + type: fixture + brief: Get configurations from the module. + - configure_environment: + type: fixture + brief: Configure a custom environment for testing. Restart Wazuh is needed for applying the configuration. + - restart_remoted: + type: fixture + brief: Clear the 'ossec.log' file and start a new monitor. + + assertions: + - Verify that a warning message is logged when ipv6 and secure connection is set. + - Verify that remoted starts correctly. + - Verify that the selected configuration is the same as the API response. + + input_description: A configuration template (test_basic_configuration_ipv6) is contained in an external YAML + file, (wazuh_basic_configuration.yaml). That template is combined with different test cases + defined in the module. Those include configuration settings for the 'wazuh-remoted' daemon and + agents info. + + expected_output: + - r'Started : .* Listening on port .*' + - r'WARNING: .* Secure connection does not support IPv6. IPv4 will be used instead.' + - r'API query '{protocol}://{host}:{port}/manager/configuration?section=remote' doesn't match the + introduced configuration on ossec.conf.' + + tags: + - simulator + ''' + requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) + cfg = get_configuration['metadata'] + + if cfg['connection'] == 'secure': + log_callback = remote.callback_warning_secure_ipv6() + wazuh_log_monitor.start(timeout=5, callback=log_callback, + error_message="The expected error output has not been produced") + + # Check that API query return the selected configuration + compare_config_api_response([cfg], 'remote') diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py index dc0cb61798..92a85fc8cf 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_local_ip_valid.py @@ -99,11 +99,8 @@ def test_local_ip_valid(get_configuration, configure_environment, restart_remote wazuh_min_version: 4.2.0 -<<<<<<< HEAD tier: 0 -======= ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py index 1936dc1878..3c28b8457a 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_queue_size_valid.py @@ -91,11 +91,8 @@ def test_queue_size_valid(get_configuration, configure_environment, restart_remo wazuh_min_version: 4.2.0 -<<<<<<< HEAD tier: 0 -======= ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py index db0c24c35b..f05b97213f 100644 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py +++ b/tests/integration/test_remoted/test_configuration/test_basic_configuration_rids_closing_time_valid.py @@ -100,11 +100,8 @@ def test_rids_closing_time_valid(get_configuration, configure_environment, resta wazuh_min_version: 4.2.0 -<<<<<<< HEAD tier: 0 -======= ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 parameters: - get_configuration: type: fixture diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py index b99f91aec9..235b70ddef 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_enabled.py @@ -11,11 +11,7 @@ is working correctly. This option is located in its corresponding section of the `ossec.conf` file and allows enabling or disabling this module. -<<<<<<< HEAD components: -======= -modules: ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 - vulnerability_detector suite: general_settings diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py index 2c30f5b190..85c7bc0f0e 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py @@ -11,11 +11,7 @@ is working correctly. This option is located in its corresponding section of the `ossec.conf` file and allows to define the time between scans. -<<<<<<< HEAD components: -======= -modules: ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 - vulnerability_detector suite: general_settings diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py index b88e79d5cf..6f88c7c6ff 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py @@ -12,11 +12,7 @@ and allows to define the minimum time before performing a full scan even if the feed was updated. The extended behavior also checks that the full scan is performed as expected. -<<<<<<< HEAD components: -======= -modules: ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 - vulnerability_detector suite: general_settings diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py index 05093142cd..ee75146ac0 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py @@ -7,19 +7,11 @@ type: integration -<<<<<<< HEAD brief: These tests will check if the `run_on_start` option of the Vulnerability Detector module is working correctly. This option is located in its corresponding section of the `ossec.conf` file and allows to define if Vulnerability Detector must run a scan as soon as it is started. components: -======= -brief: Wazuh is able to detect vulnerabilities in the applications installed in agents using the Vulnerability Detector - module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, - Canonical, Debian, Amazon Linux and NVD Database. - -modules: ->>>>>>> b61e90c98566c9df66498d494e2edc5cf8e12d67 - vulnerability_detector suite: general_settings From 12e3f6932f90e08add6148e7dc7b9d87a8bd8230 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 17:35:08 +0100 Subject: [PATCH 100/108] fix: Change the run method help message --- deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index 8b358d9ba2..667aae6691 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -343,7 +343,7 @@ def get_script_parameters(): 'generated without running anything.') parser.add_argument('--run', '-r', action='store_true', - help='Independent run method. The tests that the use specified will be run.') + help='Independent run method. The tests that the user has specified will be run.') parser.add_argument('--test-types', type=str, action='store', required=False, nargs='+', dest='test_types', default=['integration'], From 00a47d00d08daec13141b88886b19db00e4d0a71 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 17:36:47 +0100 Subject: [PATCH 101/108] add: Add new added changes into the repo changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee1b37b2b6..714dba2442 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ Release report: TBD ### Added +- Add `qa-docs` `v0.1`([#2649](https://github.com/wazuh/wazuh-qa/pull/2649)) +- Add `qa-ctl` `v0.3.1`([#2649](https://github.com/wazuh/wazuh-qa/pull/2649)) - Add test fim with file currently open ([#2300](https://github.com/wazuh/wazuh-qa/pull/2300)) - Test manager sends AR log format as expected ([#2347](https://github.com/wazuh/wazuh-qa/pull/2347)) - Syscollector deltas IT ([#2146](https://github.com/wazuh/wazuh-qa/pull/2146)) From 57889c348710c55b8689490530d97a38e5331a1d Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 17:47:04 +0100 Subject: [PATCH 102/108] rm: Remove deprecated test --- .../test_basic_configuration_ipv6.py | 133 ------------------ 1 file changed, 133 deletions(-) delete mode 100644 tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py diff --git a/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py b/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py deleted file mode 100644 index bbb1afecf4..0000000000 --- a/tests/integration/test_remoted/test_configuration/test_basic_configuration_ipv6.py +++ /dev/null @@ -1,133 +0,0 @@ -''' -copyright: Copyright (C) 2015-2022, Wazuh Inc. - Created by Wazuh, Inc. . - This program is free software; you can redistribute it and/or modify it under the terms of GPLv2 - -type: integration - -brief: The 'wazuh-remoted' program is the server side daemon that communicates with the agents. - Specifically, this test will check that remoted starts correctly configuring an - IPv6 address. - -components: - - remoted - -suite: configuration - -targets: - - manager - -daemons: - - wazuh-remoted - -os_platform: - - linux - -os_version: - - Arch Linux - - Amazon Linux 2 - - Amazon Linux 1 - - CentOS 8 - - CentOS 7 - - Debian Buster - - Red Hat 8 - - Ubuntu Focal - - Ubuntu Bionic - -references: - - https://documentation.wazuh.com/current/user-manual/reference/daemons/wazuh-remoted.html - - https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/remote.html - - https://documentation.wazuh.com/current/user-manual/agents/agent-life-cycle.html - - https://documentation.wazuh.com/current/user-manual/capabilities/agent-key-polling.html - -tags: - - remoted -''' -import os -import pytest - -import wazuh_testing.remote as remote -from wazuh_testing.api import compare_config_api_response - -from wazuh_testing.tools.configuration import load_wazuh_configurations -from urllib3.exceptions import InsecureRequestWarning -import requests - -# Marks -pytestmark = pytest.mark.tier(level=0) - -# Configuration -test_data_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data') -configurations_path = os.path.join(test_data_path, 'wazuh_basic_configuration.yaml') - -parameters = [ - {'CONNECTION': 'secure'}, - {'CONNECTION': 'syslog'} -] - -metadata = [ - {'connection': 'secure'}, - {'connection': 'syslog'} -] - -configurations = load_wazuh_configurations(configurations_path, __name__, params=parameters, metadata=metadata) -configuration_ids = [f"{x['CONNECTION']}" for x in parameters] - - -# fixtures -@pytest.fixture(scope="module", params=configurations, ids=configuration_ids) -def get_configuration(request): - """Get configurations from the module.""" - return request.param - - -def test_ipv6_secure(get_configuration, configure_environment, restart_remoted, wait_for_remoted_start_log): - ''' - description: Check if 'wazuh-remoted' correctly starts using ipv6 values. - For this purpose, it loads the configuration from test cases cfg(when the connection is secure, ipv4 is - used instead), checks if the configuration is the same as the API reponse. - - wazuh_min_version: 4.2.0 - - tier: 0 - - parameters: - - get_configuration: - type: fixture - brief: Get configurations from the module. - - configure_environment: - type: fixture - brief: Configure a custom environment for testing. Restart Wazuh is needed for applying the configuration. - - restart_remoted: - type: fixture - brief: Clear the 'ossec.log' file and start a new monitor. - - assertions: - - Verify that a warning message is logged when ipv6 and secure connection is set. - - Verify that remoted starts correctly. - - Verify that the selected configuration is the same as the API response. - - input_description: A configuration template (test_basic_configuration_ipv6) is contained in an external YAML - file, (wazuh_basic_configuration.yaml). That template is combined with different test cases - defined in the module. Those include configuration settings for the 'wazuh-remoted' daemon and - agents info. - - expected_output: - - r'Started : .* Listening on port .*' - - r'WARNING: .* Secure connection does not support IPv6. IPv4 will be used instead.' - - r'API query '{protocol}://{host}:{port}/manager/configuration?section=remote' doesn't match the - introduced configuration on ossec.conf.' - - tags: - - simulator - ''' - requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) - cfg = get_configuration['metadata'] - - if cfg['connection'] == 'secure': - log_callback = remote.callback_warning_secure_ipv6() - wazuh_log_monitor.start(timeout=5, callback=log_callback, - error_message="The expected error output has not been produced") - - # Check that API query return the selected configuration - compare_config_api_response([cfg], 'remote') From 494fbd6d3eadf221aa87a549211e5ba1c22488b6 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 18:33:51 +0100 Subject: [PATCH 103/108] doc: Update missing doc in vuldet modules --- .../test_feeds/test_cpe_indexing.py | 18 ++++++------------ .../test_feeds/test_download_feeds.py | 18 ++++++------------ .../test_feeds/test_duplicate_feeds.py | 18 ++++++------------ .../test_import_invalid_feed_type.py | 18 ++++++------------ .../test_feeds/test_validate_feed_content.py | 18 ++++++------------ .../test_min_full_scan_interval.py | 2 +- .../test_alert_vulnerability_removal.py | 18 ++++++------------ .../test_scan_results/test_scan_nvd.py | 18 ++++++------------ .../test_scan_types/test_baseline_scan_type.py | 18 ++++++------------ .../test_scan_types/test_full_scan_type.py | 18 ++++++------------ .../test_scan_types/test_partial_scan_type.py | 18 ++++++------------ ...st_vulnerability_inventory_baseline_scan.py | 18 ++++++------------ .../test_vulnerability_inventory_full_scan.py | 18 ++++++------------ ...est_vulnerability_inventory_partial_scan.py | 18 ++++++------------ 14 files changed, 79 insertions(+), 157 deletions(-) diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py b/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py index 0285465fb4..474975d8bf 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suite: feeds + +targets: - manager daemons: @@ -30,18 +32,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_download_feeds.py b/tests/integration/test_vulnerability_detector/test_feeds/test_download_feeds.py index 2607a2e31f..343161ca42 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_download_feeds.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_download_feeds.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suite: feeds + +targets: - manager daemons: @@ -31,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/ diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py b/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py index 72a1271094..36824013f3 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suite: feeds + +targets: - manager daemons: @@ -31,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py b/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py index 2d55efce87..c8d168d4ee 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suite: feeds + +targets: - manager daemons: @@ -29,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_validate_feed_content.py b/tests/integration/test_vulnerability_detector/test_feeds/test_validate_feed_content.py index f885ce5adb..fd5eee1255 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_validate_feed_content.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_validate_feed_content.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suite: feeds + +targets: - manager daemons: @@ -31,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/ diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py index 6f88c7c6ff..cc972a39be 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_min_full_scan_interval.py @@ -140,7 +140,7 @@ def test_min_full_scan_interval(configuration, metadata, set_wazuh_configuration - prepare_environment: type: fixture brief: Setup the initial test state. - - setup_log_monitor + - setup_log_monitor: type: fixture brief: Create the log monitor. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py b/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py index df81dec41a..48a5e707d7 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py +++ b/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: scan_results + +targets: - manager daemons: @@ -31,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py b/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py index 7f496a5061..5e2812b03c 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py +++ b/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: scan_results + +targets: - manager daemons: @@ -31,18 +33,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py b/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py index 98c01f77c1..8c1417cd64 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py +++ b/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: scan_types + +targets: - manager daemons: @@ -29,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py b/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py index cbf31a63b7..2d7291a684 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py +++ b/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: scan_types + +targets: - manager daemons: @@ -29,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py b/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py index 542e59336a..82ccd6500e 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py +++ b/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: scan_types + +targets: - manager daemons: @@ -29,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py index c707c93d09..482b1915a6 100644 --- a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py +++ b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: vulnerability_inventory + +targets: - manager daemons: @@ -29,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py index b28240b0e2..6be262af53 100644 --- a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py +++ b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: vulnerability_inventory + +targets: - manager daemons: @@ -29,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html diff --git a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py index 2a6dac70b1..ac04253151 100644 --- a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py +++ b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py @@ -11,10 +11,12 @@ module. This software audit is performed through the integration of vulnerability feeds indexed by Redhat, Canonical, Debian, Amazon Linux and NVD Database. -modules: +components: - vulnerability_detector -components: +suites: vulnerability_inventory + +targets: - manager daemons: @@ -29,18 +31,10 @@ - Amazon Linux 1 - CentOS 8 - CentOS 7 - - CentOS 6 - - Ubuntu Focal - - Ubuntu Bionic - - Ubuntu Xenial - - Ubuntu Trusty - Debian Buster - - Debian Stretch - - Debian Jessie - - Debian Wheezy - Red Hat 8 - - Red Hat 7 - - Red Hat 6 + - Ubuntu Focal + - Ubuntu Bionic references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html From bf9b96b5e856b621cbe0a4441bf84ab54d08b18a Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 18:55:24 +0100 Subject: [PATCH 104/108] doc: Fix missing `:` in parameters section --- .../test_feeds/test_duplicate_feeds.py | 2 +- .../test_feeds/test_import_invalid_feed_type.py | 2 +- .../test_general_settings/test_interval.py | 2 +- .../test_general_settings/test_retry_interval.py | 10 ++++++---- .../test_general_settings/test_run_on_start.py | 6 +++--- .../test_providers/test_os.py | 4 ++-- .../test_alert_vulnerability_removal.py | 4 ++-- .../test_scan_results/test_scan_nvd.py | 12 +++++++----- .../test_scan_types/test_baseline_scan_type.py | 10 +++++----- .../test_scan_types/test_full_scan_type.py | 8 ++++---- .../test_scan_types/test_partial_scan_type.py | 6 +++--- .../test_vulnerability_inventory_baseline_scan.py | 10 +++------- .../test_vulnerability_inventory_partial_scan.py | 14 +++++--------- 13 files changed, 43 insertions(+), 47 deletions(-) diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py b/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py index 36824013f3..4226754609 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_duplicate_feeds.py @@ -151,7 +151,7 @@ def test_duplicate_feeds(configuration, metadata, set_wazuh_configuration_vdt, t - clean_cve_tables_func: type: fixture brief: Clean all the vulnerabilities tables before and after running the test. - - setup_log_monitor + - setup_log_monitor: type: fixture brief: Create the log monitor. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py b/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py index c8d168d4ee..22fdbf5996 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_import_invalid_feed_type.py @@ -114,7 +114,7 @@ def test_import_invalid_feed_type(configuration, metadata, set_wazuh_configurati - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py index 85c7bc0f0e..bd3b43b5cc 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_interval.py @@ -101,7 +101,7 @@ def test_interval_scan(configuration, metadata, set_wazuh_configuration_vdt, tru - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_module + - clean_cve_tables_module: type: fixture brief: Clean all CVE tables. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py index bf04dc53e0..cee4306e8c 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_retry_interval.py @@ -12,10 +12,12 @@ and allows to define the minimum time before performing a full scan even if the feed was updated. The extended behavior also checks that the full scan is performed as expected. -modules: +components: - vulnerability_detector -components: +suite: general_settings + +targets: - manager daemons: @@ -112,7 +114,7 @@ def test_retry_interval(configuration, metadata, set_wazuh_configuration_vdt, tr - Add again the package and update the sync_info data to force the retry interval scan. - Search analyzing OVAL vulnerabilities event (scan is running successfully). - wazuh_min_version: 4.3 + wazuh_min_version: 4.3.0 tier: 0 @@ -191,7 +193,7 @@ def test_retry_interval_max_retries(configuration, metadata, set_wazuh_configura - Wait for all retries interval events (4 times). - Check the event: could not obtain software for that agent. - wazuh_min_version: 4.3 + wazuh_min_version: 4.3.0 tier: 0 diff --git a/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py b/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py index ee75146ac0..aa53c0c32b 100644 --- a/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py +++ b/tests/integration/test_vulnerability_detector/test_general_settings/test_run_on_start.py @@ -42,7 +42,7 @@ tags: - vulnerability_detector - - basic configuration + - basic_configuration ''' import os import pytest @@ -112,7 +112,7 @@ def test_run_on_start_enabled(configuration, set_wazuh_configuration_vdt, trunca - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - restart_modulesd_function: @@ -158,7 +158,7 @@ def test_run_on_start_disabled(configuration, set_wazuh_configuration_vdt, trunc - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_providers/test_os.py b/tests/integration/test_vulnerability_detector/test_providers/test_os.py index f0faddbd45..7fccc19772 100644 --- a/tests/integration/test_vulnerability_detector/test_providers/test_os.py +++ b/tests/integration/test_vulnerability_detector/test_providers/test_os.py @@ -126,8 +126,8 @@ def test_providers_os(configuration, metadata, set_wazuh_configuration_vdt, trun - The `test_os.yaml` file provides the module configuration for this test. expected_output: - - r'Invalid option 'os' for '{provider_name}' provider.*' - - 'Starting '{provider_name}' database update' + - rf'Invalid option 'os' for '{provider_name}' provider.*' + - f'Starting '{provider_name}' database update' ''' provider_name = metadata['provider_name'] operating_system = metadata['os'] diff --git a/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py b/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py index 48a5e707d7..375d57c941 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py +++ b/tests/integration/test_vulnerability_detector/test_scan_results/test_alert_vulnerability_removal.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: scan_results +suite: scan_results targets: - manager @@ -130,7 +130,7 @@ def test_vulnerability_removal_update_package(configuration, metadata, set_wazuh - prepare_full_scan_with_vuln_packages: type: fixture brief: Inserte vulnerable package to an agent and finally clean the database. - - setup_log_monitor + - setup_log_monitor: type: fixture brief: Create the log monitor. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py b/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py index 5e2812b03c..c003c82e6f 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py +++ b/tests/integration/test_vulnerability_detector/test_scan_results/test_scan_nvd.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: scan_results +suite: scan_results targets: - manager @@ -177,10 +177,10 @@ def test_scan_nvd_vulnerabilities(configuration, metadata, agent_system, set_waz - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_scan + - prepare_scan: type: fixture brief: Setup the initial test state. - restart_modulesd_function: @@ -225,6 +225,8 @@ def test_no_agent_data(configuration, metadata, agent_system, set_wazuh_configur wazuh_min_version: 4.3.0 + tier: 0 + parameters: - configuration: type: dict @@ -241,10 +243,10 @@ def test_no_agent_data(configuration, metadata, agent_system, set_wazuh_configur - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_scan + - prepare_scan: type: fixture brief: Setup the initial test state. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py b/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py index 8c1417cd64..82deac108c 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py +++ b/tests/integration/test_vulnerability_detector/test_scan_types/test_baseline_scan_type.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: scan_types +suite: scan_types targets: - manager @@ -125,10 +125,10 @@ def test_baseline_scan_start(configuration, metadata, set_wazuh_configuration_vd - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_baseline_scan_with_vuln_packages + - prepare_baseline_scan_with_vuln_packages: type: fixture brief: Setup the initial test state. - restart_modulesd_function: @@ -186,10 +186,10 @@ def test_baseline_scan_no_alert(configuration, metadata, set_wazuh_configuration - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_baseline_scan_with_vuln_packages + - prepare_baseline_scan_with_vuln_packages: type: fixture brief: Setup the initial test state. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py b/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py index 2d7291a684..c2a29b28bc 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py +++ b/tests/integration/test_vulnerability_detector/test_scan_types/test_full_scan_type.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: scan_types +suite: scan_types targets: - manager @@ -142,10 +142,10 @@ def test_full_scan_start(configuration, metadata, set_wazuh_configuration_vdt, t - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_full_scan_with_vuln_package + - prepare_full_scan_with_vuln_package: type: fixture brief: Setup the initial test state. - restart_modulesd_function: @@ -364,7 +364,7 @@ def test_full_scan_remove_vulnerability_alert(configuration, metadata, set_wazuh - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - prepare_full_scan_with_vuln_package: diff --git a/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py b/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py index 82ccd6500e..d94efb8ff4 100644 --- a/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py +++ b/tests/integration/test_vulnerability_detector/test_scan_types/test_partial_scan_type.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: scan_types +suite: scan_types targets: - manager @@ -352,10 +352,10 @@ def test_partial_scan_remove_vulnerability_alert(configuration, metadata, set_wa - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_full_scan_vulnerable + - prepare_full_scan_vulnerable: type: fixture brief: Setup the initial test state. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py index 482b1915a6..942e8adc49 100644 --- a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py +++ b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_baseline_scan.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: vulnerability_inventory +suite: vulnerability_inventory targets: - manager @@ -38,10 +38,6 @@ references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html - -tags: - - vulnerability_detector - - vulnerability_inventory ''' import os import pytest @@ -117,10 +113,10 @@ def test_vulnerability_inserted_baseline_scan(configuration, metadata, set_wazuh - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_baseline_scan_with_vuln_packages + - prepare_baseline_scan_with_vuln_packages: type: fixture brief: Setup the initial test state. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py index ac04253151..556466836b 100644 --- a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py +++ b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_partial_scan.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: vulnerability_inventory +suite: vulnerability_inventory targets: - manager @@ -38,10 +38,6 @@ references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html - -tags: - - vulnerability_detector - - vulnerability_inventory ''' import os import pytest @@ -126,10 +122,10 @@ def test_vulnerability_inserted_partial_scan(configuration, metadata, set_wazuh_ - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_partial_scan_with_vuln_packages + - prepare_partial_scan_with_vuln_packages: type: fixture brief: Setup the initial test state. - restart_modulesd_function: @@ -196,10 +192,10 @@ def test_vulnerability_removed_partial_scan(configuration, metadata, set_wazuh_c - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_partial_scan + - prepare_partial_scan: type: fixture brief: Setup the initial test state. - restart_modulesd_function: From 966578f7560dd8bd4b0533314522a1cd94754098 Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 18:56:32 +0100 Subject: [PATCH 105/108] refac: Update documentation tags in schema.yaml --- deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml index 6e407b4852..734e0cba75 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml +++ b/deps/wazuh_testing/wazuh_testing/qa_docs/schema.yaml @@ -193,6 +193,7 @@ predefined_values: - audit_rules - authd - aws + - basic_configuration - brute_force_attack - cache - canonical @@ -203,6 +204,7 @@ predefined_values: - config - cors - cpe + - cpe_helper - debian - debian_feeds - decoder @@ -329,6 +331,7 @@ predefined_values: - rules - scan - scan_results + - scan_types - schedule - scheduled - session_error From 5339c126ecb553dcbc378f2425ca171aff2f8f2a Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Wed, 9 Mar 2022 18:57:48 +0100 Subject: [PATCH 106/108] doc: Fix missing `:` in parameters section --- .../test_feeds/test_cpe_indexing.py | 8 ++++---- .../test_vulnerability_inventory_full_scan.py | 14 +++++--------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py b/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py index 474975d8bf..cc53fed7cd 100644 --- a/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py +++ b/tests/integration/test_vulnerability_detector/test_feeds/test_cpe_indexing.py @@ -169,10 +169,10 @@ def test_cpe_indexing_packages(configuration, metadata, agent_system, set_wazuh_ - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_scan + - prepare_scan: type: fixture brief: Setup the initial test state. - restart_modulesd_function: @@ -229,10 +229,10 @@ def test_cpe_indexing_system(configuration, metadata, agent_system, set_wazuh_co - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_scan + - prepare_scan: type: fixture brief: Setup the initial test state. - restart_modulesd_function: diff --git a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py index 6be262af53..ad807915c0 100644 --- a/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py +++ b/tests/integration/test_vulnerability_detector/test_vulnerability_inventory/test_vulnerability_inventory_full_scan.py @@ -14,7 +14,7 @@ components: - vulnerability_detector -suites: vulnerability_inventory +suite: vulnerability_inventory targets: - manager @@ -38,10 +38,6 @@ references: - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/index.html - -tags: - - vulnerability_detector - - vulnerability_inventory ''' import os import pytest @@ -126,10 +122,10 @@ def test_vulnerability_inserted_full_scan(configuration, metadata, set_wazuh_con - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_full_scan_with_vuln_packages + - prepare_full_scan_with_vuln_packages: type: fixture brief: Setup the initial test state. - restart_modulesd_function: @@ -195,10 +191,10 @@ def test_vulnerability_removed_full_scan(configuration, metadata, set_wazuh_conf - truncate_monitored_files: type: fixture brief: Truncate all the log files and json alerts files before and after the test execution. - - clean_cve_tables_func + - clean_cve_tables_func: type: fixture brief: Clean all CVE tables. - - prepare_full_scan_with_obsolete_vulnerabilities + - prepare_full_scan_with_obsolete_vulnerabilities: type: fixture brief: Setup the initial test state. - restart_modulesd_function: From 0473424b0eb60973c103671eec83c16199d3d28b Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 10 Mar 2022 10:50:49 +0100 Subject: [PATCH 107/108] fix: Fix test doc directory when validating the test os --- deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index 667aae6691..0c02b368f6 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -226,7 +226,7 @@ def _validate_tests_os(parameters): tests_path = os.path.join(WAZUH_QA_FILES, 'tests') test_documentation_command = f"qa-docs -p {tests_path} -t {type} -c {component} -s {suite} -m {module} " \ f"-o {gettempdir()} --no-logging" - test_documentation_file_path = os.path.join(gettempdir(), f"{module}.json") + test_documentation_file_path = os.path.join(gettempdir(), f"output/{module}.json") local_actions.run_local_command_returning_output(test_documentation_command) test_data = json.loads(file.read_file(test_documentation_file_path)) From aad4e315d2b687acf1432f1bf0b357f75a25a8bd Mon Sep 17 00:00:00 2001 From: Luis Gonzalez Date: Thu, 10 Mar 2022 10:53:04 +0100 Subject: [PATCH 108/108] refac: Update qa-ctl version --- deps/wazuh_testing/wazuh_testing/qa_ctl/VERSION.json | 2 +- deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/wazuh_testing/wazuh_testing/qa_ctl/VERSION.json b/deps/wazuh_testing/wazuh_testing/qa_ctl/VERSION.json index a82f8b2027..304958dd55 100644 --- a/deps/wazuh_testing/wazuh_testing/qa_ctl/VERSION.json +++ b/deps/wazuh_testing/wazuh_testing/qa_ctl/VERSION.json @@ -1,4 +1,4 @@ { - "version": "0.3", + "version": "0.3.1", "revision": 1 } diff --git a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py index 0c02b368f6..78c87466cf 100644 --- a/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py +++ b/deps/wazuh_testing/wazuh_testing/scripts/qa_ctl.py @@ -321,7 +321,7 @@ def get_script_parameters(): """ description = \ ''' - Current version: v0.3 + Current version: v0.3.1 Description: qa-ctl is a tool for launching tests locally, automating the deployment, provisioning and testing phase.