stix2generator.test package

Submodules

stix2generator.test.conftest module

stix2generator.test.conftest.num_trials()[source]

Since STIX content generation is random, depending on the test, we should do several trials so there is a greater chance for errors to occur. This gives a global place to adjust how many trials are done for content generation tests.

stix2generator.test.conftest.object_generator()[source]

Creates an object generator with default config and an empty registry.

stix2generator.test.conftest.stix21_generator()[source]

Creates a STIX generator with default config for STIX 2.1.

stix2generator.test.test_object_generator_array module

stix2generator.test.test_object_generator_array.test_array(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_array.test_array_inverted_bounds(object_generator)[source]
stix2generator.test.test_object_generator_array.test_array_negative_bounds(object_generator)[source]

stix2generator.test.test_object_generator_boolean module

stix2generator.test.test_object_generator_boolean.test_boolean(object_generator, num_trials)[source]

stix2generator.test.test_object_generator_config module

stix2generator.test.test_object_generator_config.test_config_array_length(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_integer(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties1(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties2(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties3(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties4(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties5(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties6(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties7(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties8(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_minimize_ref_properties9(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_number(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_optional_property_probability_0(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_optional_property_probability_1(num_trials)[source]
stix2generator.test.test_object_generator_config.test_config_string(num_trials)[source]

stix2generator.test.test_object_generator_integer module

stix2generator.test.test_object_generator_integer.test_integer_bounds_single_int(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_integer.test_integer_closed(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_integer.test_integer_empty_interval(object_generator)[source]
stix2generator.test.test_object_generator_integer.test_integer_empty_interval_float_bounds(object_generator)[source]
stix2generator.test.test_object_generator_integer.test_integer_float_bounds(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_integer.test_integer_float_bounds_single_int(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_integer.test_integer_half_open_lower(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_integer.test_integer_half_open_upper(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_integer.test_integer_inverted_bounds(object_generator)[source]
stix2generator.test.test_object_generator_integer.test_integer_open(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_integer.test_integer_very_large(object_generator, num_trials)[source]

stix2generator.test.test_object_generator_misc module

stix2generator.test.test_object_generator_misc.test_bad_type_property(object_generator)[source]
stix2generator.test.test_object_generator_misc.test_const_bad_type_1(object_generator)[source]
stix2generator.test.test_object_generator_misc.test_const_bad_type_2(object_generator)[source]
stix2generator.test.test_object_generator_misc.test_const_spec_1(object_generator)[source]
stix2generator.test.test_object_generator_misc.test_const_spec_2(object_generator)[source]
stix2generator.test.test_object_generator_misc.test_missing_type_property(object_generator)[source]
stix2generator.test.test_object_generator_misc.test_one_of(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_misc.test_ref()[source]
stix2generator.test.test_object_generator_misc.test_ref_loop_error()[source]
stix2generator.test.test_object_generator_misc.test_ref_type_error()[source]
stix2generator.test.test_object_generator_misc.test_unrecognized_spec_error(object_generator)[source]

stix2generator.test.test_object_generator_null module

stix2generator.test.test_object_generator_null.test_null(object_generator, num_trials)[source]

stix2generator.test.test_object_generator_number module

stix2generator.test.test_object_generator_number.test_number_closed(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_number.test_number_half_open_lower(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_number.test_number_half_open_upper(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_number.test_number_inverted_bounds(object_generator)[source]
stix2generator.test.test_object_generator_number.test_number_open(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_number.test_number_very_large(object_generator)[source]

stix2generator.test.test_object_generator_object module

stix2generator.test.test_object_generator_object.test_object(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_optional_props(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_all_optional(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_all_required(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_at_least_one_optional(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_at_least_one_required(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_dependencies_group_key(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_dependencies_group_key_and_value(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_dependencies_group_value(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_dependencies_props(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors1(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors10(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors11(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors2(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors3(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors4(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors5(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors6(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors7(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors8(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_errors9(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_one_optional(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_presence_coconstraint_one_required(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_object.test_object_value_coconstraint(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_value_coconstraint_bad_operator(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_value_coconstraint_bad_property(object_generator)[source]
stix2generator.test.test_object_generator_object.test_object_value_coconstraint_self_relation(object_generator)[source]

stix2generator.test.test_object_generator_semantics module

class stix2generator.test.test_object_generator_semantics.DummySemantics[source]

Bases: stix2generator.generation.semantics.SemanticsProvider

Dummy simple semantics provider

add(spec, generator, constraint)[source]
get_semantics()[source]

Get a list of the semantics provided by the provider. Subclasses must override this.

Returns

The list of semantics (list of strings which are the names of the semantics).

stix2generator.test.test_object_generator_semantics.generator_dummy_semantics()[source]
stix2generator.test.test_object_generator_semantics.generator_faker_semantics()[source]
stix2generator.test.test_object_generator_semantics.generator_stix_semantics()[source]
stix2generator.test.test_object_generator_semantics.test_faker_semantics(generator_faker_semantics, num_trials)[source]
stix2generator.test.test_object_generator_semantics.test_semantics(generator_dummy_semantics)[source]
stix2generator.test.test_object_generator_semantics.test_semantics_type_error(generator_dummy_semantics)[source]
stix2generator.test.test_object_generator_semantics.test_stix_semantics_id(generator_stix_semantics, num_trials)[source]
stix2generator.test.test_object_generator_semantics.test_stix_semantics_timestamp(generator_stix_semantics, num_trials)[source]
stix2generator.test.test_object_generator_semantics.test_stix_semantics_timestamp_coconstraint(generator_stix_semantics, num_trials, gen_op, python_op)[source]

Test value co-constraint satisfaction in the object generator.

stix2generator.test.test_object_generator_semantics.test_stix_semantics_timestamp_constraint(generator_stix_semantics, num_trials, gen_op, python_op)[source]

Test value constraint satisfaction in the stix-timestamp semantics implementation.

stix2generator.test.test_object_generator_semantics.test_undefined_semantics(generator_dummy_semantics)[source]

stix2generator.test.test_object_generator_string module

stix2generator.test.test_object_generator_string.test_string(object_generator, num_trials)[source]
stix2generator.test.test_object_generator_string.test_string_inverted_bounds(object_generator)[source]
stix2generator.test.test_object_generator_string.test_string_missing_length_bounds(object_generator)[source]
stix2generator.test.test_object_generator_string.test_string_negative_bounds(object_generator)[source]

stix2generator.test.test_pattern_generator module

stix2generator.test.test_pattern_generator.default_object_generator()[source]
stix2generator.test.test_pattern_generator.test_config_continue_path_through_ref_always(num_trials, default_object_generator)[source]
stix2generator.test.test_pattern_generator.test_config_continue_path_through_ref_never(num_trials, default_object_generator)[source]
stix2generator.test.test_pattern_generator.test_config_pattern_size(num_trials, default_object_generator)[source]
stix2generator.test.test_pattern_generator.test_config_probability_index_star_step_always(num_trials, default_object_generator)[source]
stix2generator.test.test_pattern_generator.test_config_probability_index_star_step_never(num_trials, default_object_generator)[source]
stix2generator.test.test_pattern_generator.test_config_repeat_count(num_trials, default_object_generator)[source]
stix2generator.test.test_pattern_generator.test_config_within_count(num_trials, default_object_generator)[source]
stix2generator.test.test_pattern_generator.test_patterns_valid(num_trials, default_object_generator)[source]

stix2generator.test.test_proto module

stix2generator.test.test_reference_graph_generator module

stix2generator.test.test_reference_graph_generator.test_bad_seed()[source]
stix2generator.test.test_reference_graph_generator.test_delete_inverse_properties(src_obj, ref_prop, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_find_property_constraints_directory()[source]
stix2generator.test.test_reference_graph_generator.test_find_property_constraints_missing_inverse()[source]
stix2generator.test.test_reference_graph_generator.test_find_property_constraints_process()[source]
stix2generator.test.test_reference_graph_generator.test_graph_dag(num_trials)[source]
stix2generator.test.test_reference_graph_generator.test_graph_delete_inverse_properties(num_trials)[source]
stix2generator.test.test_reference_graph_generator.test_graph_enforce_inverse_properties(num_trials)[source]
stix2generator.test.test_reference_graph_generator.test_graph_random(num_trials)[source]
stix2generator.test.test_reference_graph_generator.test_graph_tree(num_trials)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_applicable_diff_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_applicable_same_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_applicable_same_types_props(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_enforce_diff_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_enforce_same_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_enforce_same_types_props(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_holds_diff_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_holds_same_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_holds_same_types_props(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_not_applicable_diff_types(src_obj, ref_prop, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_not_applicable_same_types(src_obj, ref_prop, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_not_applicable_same_types_props(src_obj, ref_prop, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_not_holds_diff_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_not_holds_same_types(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_inverse_property_constraint_not_holds_same_types_props(src_obj, dest_obj)[source]
stix2generator.test.test_reference_graph_generator.test_is_not_reachable(graph, src_id, dest_id)[source]
stix2generator.test.test_reference_graph_generator.test_is_reachable(graph, src_id, dest_id)[source]
stix2generator.test.test_reference_graph_generator.test_preexisting_objects()[source]
stix2generator.test.test_reference_graph_generator.test_seeds(num_trials, seed_type)[source]
stix2generator.test.test_reference_graph_generator.test_stix2_parsing()[source]
stix2generator.test.test_reference_graph_generator.test_would_be_constrained(src_obj_type, ref_prop, dest_obj_type)[source]
stix2generator.test.test_reference_graph_generator.test_would_not_be_constrained(src_obj_type, ref_prop, dest_obj_type)[source]

stix2generator.test.test_stix21_registry module

stix2generator.test.test_stix21_registry.generator_all_props()[source]

Creates a generator which includes all optional properties.

stix2generator.test.test_stix21_registry.generator_min_props()[source]

Creates a generator which omits all optional properties.

stix2generator.test.test_stix21_registry.generator_random_props()[source]

Creates a generator which randomly includes or excludes properties.

stix2generator.test.test_stix21_registry.get_stix21_spec_names()[source]

Gets the spec names from the STIX 2.1 registry. We need to know this to be able to test those specifications.

stix2generator.test.test_stix21_registry.test_generation_all_props(generator_all_props, spec_name)[source]
stix2generator.test.test_stix21_registry.test_generation_all_props_relationship(generator_all_props)[source]
stix2generator.test.test_stix21_registry.test_generation_all_props_sighting(generator_all_props)[source]
stix2generator.test.test_stix21_registry.test_generation_min_props(generator_min_props, spec_name)[source]
stix2generator.test.test_stix21_registry.test_generation_min_props_relationship(generator_min_props)[source]
stix2generator.test.test_stix21_registry.test_generation_min_props_sighting(generator_min_props)[source]
stix2generator.test.test_stix21_registry.test_generation_random_props(generator_random_props, spec_name, num_trials)[source]
stix2generator.test.test_stix21_registry.test_generation_random_props_relationship(generator_random_props, num_trials)[source]
stix2generator.test.test_stix21_registry.test_generation_random_props_sighting(generator_random_props, num_trials)[source]

stix2generator.test.test_stix2_auto_registration module

stix2generator.test.test_stix2_auto_registration.cleanup_stix2()[source]

Auto-registration affects a global table within stix2. So testing it can affect all subsequent tests unless the changes are undone after each test. This fixture doesn’t produce anything; just use it for those unit tests which register anything custom, and it will undo the registration afterword.

stix2generator.test.test_stix2_auto_registration.test_const_object_spec_all_types(cleanup_stix2)[source]
stix2generator.test.test_stix2_auto_registration.test_empty_list_error()[source]
stix2generator.test.test_stix2_auto_registration.test_heterogenous_list_error()[source]
stix2generator.test.test_stix2_auto_registration.test_non_object_spec_error()[source]
stix2generator.test.test_stix2_auto_registration.test_nonconst_object_spec_all_types(cleanup_stix2)[source]
stix2generator.test.test_stix2_auto_registration.test_prop_type_error()[source]
stix2generator.test.test_stix2_auto_registration.test_specs_dict(cleanup_stix2)[source]
stix2generator.test.test_stix2_auto_registration.test_stix2_object_result(cleanup_stix2)[source]

stix2generator.test.test_stix_generation module

stix2generator.test.test_stix_generation.test_bad_seed(stix21_generator)[source]
stix2generator.test.test_stix_generation.test_complete_ref_properties_false(num_trials)[source]
stix2generator.test.test_stix_generation.test_complete_ref_properties_true(num_trials)[source]
stix2generator.test.test_stix_generation.test_connectedness(num_trials, stix21_generator)[source]
stix2generator.test.test_stix_generation.test_non_sro_connectable(num_trials, stix21_generator, seed_type)[source]
stix2generator.test.test_stix_generation.test_observed_data_observable_container(num_trials)[source]

Because of observed-data special-casing which occurs in the codebase, this test is intended to ensure that SDO in particular isn’t getting messed up.

stix2generator.test.test_stix_generation.test_preexisting_objects(stix21_generator)[source]
stix2generator.test.test_stix_generation.test_probability_reuse(num_trials)[source]
stix2generator.test.test_stix_generation.test_probability_sighting(num_trials)[source]
stix2generator.test.test_stix_generation.test_relationship_count(num_trials)[source]
stix2generator.test.test_stix_generation.test_seeds(num_trials, seed_type, stix21_generator)[source]
stix2generator.test.test_stix_generation.test_stix2_parsing(stix21_generator)[source]

stix2generator.test.test_utils module

stix2generator.test.test_utils.object_generator21()[source]

Create a default-configured object generator for STIX 2.1.

stix2generator.test.test_utils.test_find_references(obj, findings)[source]
stix2generator.test.test_utils.test_find_references_assignable(obj)[source]
stix2generator.test.test_utils.test_is_object(obj_or_type, stix_version, expected)[source]
stix2generator.test.test_utils.test_is_sco(obj_or_type, stix_version, expected)[source]
stix2generator.test.test_utils.test_is_sdo(obj_or_type, stix_version, expected)[source]
stix2generator.test.test_utils.test_is_sro(obj_or_type, stix_version, expected)[source]
stix2generator.test.test_utils.test_is_stix_type(obj_or_type, constraints, expected)[source]
stix2generator.test.test_utils.test_random_generatable_stix_type(num_trials, object_generator21, constraints)[source]
stix2generator.test.test_utils.test_random_generatable_stix_type_not_found(num_trials, object_generator21, constraints)[source]

stix2generator.test.utils module

Utilities useful for unit tests.

stix2generator.test.utils.has_dangling_references(graph)[source]

Check all reference properties of all objects in the graph, and determine whether they reference objects which are also in the graph.

Parameters

graph – A STIX graph as a mapping from ID to object

Returns

True if any references are dangling; False if not

stix2generator.test.utils.is_connected(graph)[source]

Determine whether the graph is connected, i.e. whether there is any partitioning such that one cannot reach one partition from another by following references (forward or backward). Because SROs also actually connect things via their reference properties, this works as a connectedness check for both reference graphs (as built by the reference graph generator) and SRO-based graphs.

Module contents