deletion_authority.rs (13288B)
1 use super::DeletionOperationExpectation; 2 3 pub(super) const DELETION_CONFORMANCE_VECTOR_RELATIVE: &str = 4 "contracts/conformance/vectors/deletion/verified_profile.v1.json"; 5 pub(super) const DELETION_SUPPRESSION_CONFORMANCE_VECTOR_RELATIVE: &str = 6 "contracts/conformance/vectors/deletion/suppression.v1.json"; 7 8 pub(super) const REQUIRED_DELETION_PUBLIC_TYPES: [&str; 23] = [ 9 "Nip01EventWireParts", 10 "EventEnvelope", 11 "RadrootsSignatureVerifiedEvent", 12 "Nip01Coordinate", 13 "Nip01CoordinateParts", 14 "Nip01CoordinateParseError", 15 "Nip09DeletionError", 16 "Nip09DeletionEventTarget", 17 "Nip09DeletionAddressTarget", 18 "AuthoredNip09DeletionRequest", 19 "RadrootsNip09DeletionDiagnostic", 20 "RadrootsInboundNip09DeletionEventTarget", 21 "RadrootsInboundNip09DeletionAddressTarget", 22 "RadrootsInboundNip09DeletionKindAdvisory", 23 "RadrootsInboundNip09DeletionProjection", 24 "RadrootsNip09DeletionProjectionError", 25 "RadrootsAdmittedNip09DeletionRequestEvent", 26 "RadrootsNip09DeletionAdmissionError", 27 "RadrootsNip09SuppressionOutcome", 28 "RadrootsNip09SuppressionReason", 29 "RadrootsNip09EventReferenceEvidence", 30 "RadrootsNip09AddressReferenceEvidence", 31 "RadrootsNip09SuppressionDecision", 32 ]; 33 34 pub(super) const DELETION_OPERATION_EXPECTATIONS: [DeletionOperationExpectation; 4] = [ 35 DeletionOperationExpectation { 36 key: "social_deletion_request_build_authored_draft", 37 id: "social.deletion_request.build_authored_draft", 38 vector: DELETION_CONFORMANCE_VECTOR_RELATIVE, 39 inputs: &["AuthoredNip09DeletionRequest"], 40 outputs: &["Nip01EventWireParts"], 41 error_class: "encode_error", 42 signing: "none", 43 rust_modules: &[ 44 "crates/event/src/deletion.rs", 45 "crates/event_codec/src/deletion/authored.rs", 46 ], 47 rust_types: &[ 48 "radroots_event::post::deletion::AuthoredNip09DeletionRequest", 49 "radroots_event::post::deletion::Nip09DeletionAddressTarget", 50 "radroots_event::post::deletion::Nip09DeletionError", 51 "radroots_event::post::deletion::Nip09DeletionEventTarget", 52 "radroots_event::id::Nip01Coordinate", 53 "radroots_event::wire::Nip01EventWireParts", 54 ], 55 case_kinds: &[ 56 "social.deletion_request.build_authored_draft.valid", 57 "social.deletion_request.build_authored_draft.invalid", 58 ], 59 }, 60 DeletionOperationExpectation { 61 key: "social_deletion_request_project_verified_event", 62 id: "social.deletion_request.project_verified_event", 63 vector: DELETION_CONFORMANCE_VECTOR_RELATIVE, 64 inputs: &["RadrootsSignatureVerifiedEvent"], 65 outputs: &["RadrootsInboundNip09DeletionProjection"], 66 error_class: "parse_error", 67 signing: "none", 68 rust_modules: &[ 69 "crates/event_codec/src/deletion/inbound.rs", 70 "crates/event_codec/src/verification.rs", 71 ], 72 rust_types: &[ 73 "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionAddressTarget", 74 "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionEventTarget", 75 "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionKindAdvisory", 76 "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionProjection", 77 "radroots_event_codec::decode::deletion::RadrootsNip09DeletionDiagnostic", 78 "radroots_event_codec::decode::deletion::RadrootsNip09DeletionProjectionError", 79 "radroots_event_codec::verify::RadrootsSignatureVerifiedEvent", 80 ], 81 case_kinds: &[ 82 "social.deletion_request.project_verified_event.valid", 83 "social.deletion_request.project_verified_event.invalid", 84 ], 85 }, 86 DeletionOperationExpectation { 87 key: "social_deletion_request_verify_and_admit_event", 88 id: "social.deletion_request.verify_and_admit_event", 89 vector: DELETION_CONFORMANCE_VECTOR_RELATIVE, 90 inputs: &["EventEnvelope"], 91 outputs: &["RadrootsAdmittedNip09DeletionRequestEvent"], 92 error_class: "admission_error", 93 signing: "nip01", 94 rust_modules: &[ 95 "crates/event_codec/src/deletion/admission.rs", 96 "crates/event_codec/src/deletion/inbound.rs", 97 "crates/event_codec/src/verification.rs", 98 ], 99 rust_types: &[ 100 "radroots_event::envelope::EventEnvelope", 101 "radroots_event_codec::admission::deletion::RadrootsAdmittedNip09DeletionRequestEvent", 102 "radroots_event_codec::admission::deletion::RadrootsNip09DeletionAdmissionError", 103 "radroots_event_codec::decode::deletion::RadrootsInboundNip09DeletionProjection", 104 "radroots_event_codec::decode::deletion::RadrootsNip09DeletionProjectionError", 105 "radroots_event_codec::verify::RadrootsSignatureVerifiedEvent", 106 ], 107 case_kinds: &[ 108 "social.deletion_request.verify_and_admit_event.valid", 109 "social.deletion_request.verify_and_admit_event.invalid", 110 ], 111 }, 112 DeletionOperationExpectation { 113 key: "social_deletion_request_evaluate_suppression", 114 id: "social.deletion_request.evaluate_suppression", 115 vector: DELETION_SUPPRESSION_CONFORMANCE_VECTOR_RELATIVE, 116 inputs: &[ 117 "RadrootsSignatureVerifiedEvent", 118 "RadrootsAdmittedNip09DeletionRequestEvent[]", 119 ], 120 outputs: &["RadrootsNip09SuppressionDecision"], 121 error_class: "validation_error", 122 signing: "none", 123 rust_modules: &["crates/event_codec/src/deletion/evaluator.rs"], 124 rust_types: &[ 125 "radroots_event_codec::admission::deletion::RadrootsAdmittedNip09DeletionRequestEvent", 126 "radroots_event_codec::admission::deletion::RadrootsNip09AddressReferenceEvidence", 127 "radroots_event_codec::admission::deletion::RadrootsNip09EventReferenceEvidence", 128 "radroots_event_codec::admission::deletion::RadrootsNip09SuppressionDecision", 129 "radroots_event_codec::admission::deletion::RadrootsNip09SuppressionOutcome", 130 "radroots_event_codec::admission::deletion::RadrootsNip09SuppressionReason", 131 "radroots_event_codec::verify::RadrootsSignatureVerifiedEvent", 132 ], 133 case_kinds: &["social.deletion_request.evaluate_suppression.valid"], 134 }, 135 ]; 136 137 pub(super) const DELETION_CASE_KINDS: [&str; 7] = [ 138 "social.deletion_request.build_authored_draft.valid", 139 "social.deletion_request.build_authored_draft.invalid", 140 "social.deletion_request.project_verified_event.valid", 141 "social.deletion_request.project_verified_event.invalid", 142 "social.deletion_request.verify_and_admit_event.valid", 143 "social.deletion_request.verify_and_admit_event.invalid", 144 "social.deletion_request.evaluate_suppression.valid", 145 ]; 146 147 pub(super) const DELETION_AUTHORED_VALID_IDS: [&str; 14] = [ 148 "nip09_authored_event_target_min_kind_empty_content", 149 "nip09_authored_event_target_max_kind_unicode_content", 150 "nip09_authored_coordinate_kind_0_empty_identifier", 151 "nip09_authored_coordinate_kind_3_empty_identifier", 152 "nip09_authored_coordinate_kind_10000_empty_identifier", 153 "nip09_authored_coordinate_kind_19999_empty_identifier", 154 "nip09_authored_coordinate_kind_30000_empty_identifier", 155 "nip09_authored_coordinate_kind_39999_opaque_identifier", 156 "nip09_authored_mixed_targets_canonical_order", 157 "nip09_authored_content_bytes_exact", 158 "nip09_authored_tag_count_exact", 159 "nip09_authored_tag_element_bytes_exact", 160 "nip09_authored_tag_bytes_exact", 161 "nip09_authored_event_wire_bytes_exact", 162 ]; 163 164 pub(super) const DELETION_AUTHORED_INVALID_IDS: [&str; 14] = [ 165 "nip09_authored_event_target_invalid", 166 "nip09_authored_event_target_kind_out_of_range", 167 "nip09_authored_address_target_invalid_format", 168 "nip09_authored_address_target_invalid_pubkey", 169 "nip09_authored_address_target_unsupported_kind", 170 "nip09_authored_replaceable_identifier_nonempty", 171 "nip09_authored_event_target_duplicate_normalized", 172 "nip09_authored_address_target_duplicate_normalized", 173 "nip09_authored_target_missing", 174 "nip09_authored_content_bytes_overflow", 175 "nip09_authored_tag_count_overflow_precedes_duplicate", 176 "nip09_authored_tag_element_bytes_overflow", 177 "nip09_authored_tag_bytes_overflow_precedes_duplicate", 178 "nip09_authored_event_wire_bytes_overflow_precedes_duplicate", 179 ]; 180 181 pub(super) const DELETION_PROJECT_VALID_IDS: [&str; 18] = [ 182 "nip09_project_signed_event_target_without_k", 183 "nip09_project_signed_address_replaceable_boundaries", 184 "nip09_project_signed_addressable_boundaries", 185 "nip09_project_signed_mixed_raw_retention", 186 "nip09_project_signed_duplicate_targets_first_provenance", 187 "nip09_project_signed_canonical_effect_sorting", 188 "nip09_project_signed_kind_advisory_diagnostics", 189 "nip09_project_signed_event_target_conflict_unprovable", 190 "nip09_project_signed_trailing_kind_and_unknown_tags", 191 "nip09_project_signed_unicode_whitespace_control_content", 192 "nip09_project_signed_content_bytes_exact", 193 "nip09_project_signed_tag_count_exact", 194 "nip09_project_signed_tag_element_count_exact", 195 "nip09_project_signed_tag_element_bytes_exact_multibyte", 196 "nip09_project_signed_tag_bytes_exact", 197 "nip09_project_signed_event_wire_bytes_exact_max_created_at", 198 "nip09_project_signed_event_wire_short_created_at_width", 199 "nip09_project_signed_kind_advisory_min_max", 200 ]; 201 202 pub(super) const DELETION_PROJECT_INVALID_IDS: [&str; 26] = [ 203 "nip09_project_signed_wrong_kind", 204 "nip09_project_signed_content_bytes_overflow", 205 "nip09_project_signed_tag_count_overflow", 206 "nip09_project_signed_tag_element_count_overflow", 207 "nip09_project_signed_tag_element_bytes_overflow", 208 "nip09_project_signed_tag_bytes_overflow", 209 "nip09_project_signed_event_wire_bytes_overflow", 210 "nip09_project_signed_event_target_shape", 211 "nip09_project_signed_event_target_empty", 212 "nip09_project_signed_event_target_invalid", 213 "nip09_project_signed_address_target_shape", 214 "nip09_project_signed_address_target_missing_colon", 215 "nip09_project_signed_address_target_invalid_pubkey", 216 "nip09_project_signed_address_target_unsupported_kind", 217 "nip09_project_signed_address_target_identifier_forbidden", 218 "nip09_project_signed_target_missing", 219 "nip09_project_signed_first_malformed_event_target", 220 "nip09_project_signed_first_malformed_address_target", 221 "nip09_project_signed_kind_precedes_content", 222 "nip09_project_signed_content_precedes_tag_count", 223 "nip09_project_signed_tag_count_precedes_element_count", 224 "nip09_project_signed_element_count_precedes_element_size", 225 "nip09_project_signed_element_size_precedes_tag_bytes", 226 "nip09_project_signed_tag_bytes_precedes_wire", 227 "nip09_project_signed_wire_precedes_target_parse", 228 "nip09_project_signed_target_parse_precedes_missing_union", 229 ]; 230 231 pub(super) const DELETION_ADMIT_VALID_IDS: [&str; 3] = [ 232 "nip09_admit_signed_event_target", 233 "nip09_admit_signed_address_target", 234 "nip09_admit_signed_mixed_tolerant_projection", 235 ]; 236 237 pub(super) const DELETION_ADMIT_INVALID_IDS: [&str; 5] = [ 238 "nip09_admit_invalid_signature", 239 "nip09_admit_id_mismatch", 240 "nip09_admit_wrong_kind", 241 "nip09_admit_invalid_target", 242 "nip09_admit_target_missing", 243 ]; 244 245 pub(super) const DELETION_SUPPRESSION_VALID_IDS: [&str; 32] = [ 246 "nip09_suppress_no_requests_visible", 247 "nip09_suppress_same_author_event_reference", 248 "nip09_suppress_same_author_nonmatching_reference", 249 "nip09_suppress_wrong_author_exact_event_reference", 250 "nip09_suppress_event_reference_predates_target", 251 "nip09_suppress_deletion_request_immune_event_reference", 252 "nip09_suppress_deletion_request_immune_mixed_references", 253 "nip09_suppress_address_cutoff_before_target", 254 "nip09_suppress_address_cutoff_equal_target", 255 "nip09_suppress_address_cutoff_after_target", 256 "nip09_suppress_address_wrong_kind", 257 "nip09_suppress_address_wrong_identifier", 258 "nip09_suppress_address_wrong_pubkey", 259 "nip09_suppress_wrong_author_address_reference", 260 "nip09_suppress_replaceable_kind_0", 261 "nip09_suppress_replaceable_kind_3", 262 "nip09_suppress_replaceable_kind_10000", 263 "nip09_suppress_replaceable_kind_19999", 264 "nip09_suppress_addressable_kind_30000_empty_identifier", 265 "nip09_suppress_addressable_kind_39999_opaque_identifier", 266 "nip09_suppress_combined_event_and_address_references", 267 "nip09_suppress_event_reference_with_stale_address", 268 "nip09_suppress_kind_advisory_diagnostics_ignored", 269 "nip09_suppress_duplicate_raw_targets_deduplicated", 270 "nip09_suppress_max_address_cutoff_forward_order", 271 "nip09_suppress_max_address_cutoff_reverse_order", 272 "nip09_suppress_later_revision_survives_address_cutoff", 273 "nip09_suppress_equal_max_cutoff_uses_lowest_request_id", 274 "nip09_suppress_multiple_event_references_use_lowest_request_id", 275 "nip09_suppress_repeated_request_is_idempotent", 276 "nip09_suppress_unauthorized_event_plus_stale_authorized_address", 277 "nip09_suppress_exact_event_deletes_later_replacement", 278 ];