upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/grasp-audit/src/specs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2025-11-04 07:04:03 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2025-11-04 07:04:03 +0000
commit5f053c46622ab21275d5ec881fd509cc0808cf8f (patch)
tree4936e9475a0af24a9e921e4cc59939ed0d1a84ed /grasp-audit/src/specs
parent31ed54dab458cb3c0a6472f3e508ccdc7a9b4d79 (diff)
Upgrade to nostr-sdk 0.43 (from 0.35)
Major upgrade of nostr-sdk dependency from 0.35 to 0.43 (8 minor versions). All breaking API changes fixed, all tests passing. Breaking Changes Fixed: - EventBuilder::new() - Removed tags parameter, use .tags() method - EventBuilder::to_event() → sign_with_keys() - Renamed signing method - Client::new() - Takes ownership of keys (clone instead of reference) - Relay::is_connected() - No longer async - Client::get_events_of() → fetch_events() - Complete API redesign - EventSource - Removed entirely - Filter::custom_tag() - Takes single value instead of array - Client::send_event() - Takes reference instead of ownership - Multiple filters - Loop and combine instead of vec parameter - Events type - New return type, convert with .into_iter().collect() Files Modified: - Cargo.toml: nostr-sdk = "0.43" - src/audit.rs: EventBuilder API changes - src/client.rs: Client, query, and filter API changes - src/specs/nip01_smoke.rs: Event building changes Documentation: - NOSTR_SDK_0.43_UPGRADE.md: Comprehensive upgrade guide - COMPILATION_FIXES.md: Marked as obsolete (0.35 fixes) - SESSION_2025_11_04_SUMMARY.md: Session summary - NEXT_SESSION_QUICKSTART.md: Updated status Test Results: ✅ All 12 unit tests passing ✅ CLI builds successfully ✅ Examples build successfully ✅ Clean build with no warnings Benefits: - Latest stable nostr-sdk version - Cleaner, more intuitive APIs - Better performance (reference passing, sync operations) - 8 versions of bug fixes and improvements - Future compatibility
Diffstat (limited to 'grasp-audit/src/specs')
-rw-r--r--grasp-audit/src/specs/nip01_smoke.rs94
1 files changed, 43 insertions, 51 deletions
diff --git a/grasp-audit/src/specs/nip01_smoke.rs b/grasp-audit/src/specs/nip01_smoke.rs
index fc3ec29..cd4ae2b 100644
--- a/grasp-audit/src/specs/nip01_smoke.rs
+++ b/grasp-audit/src/specs/nip01_smoke.rs
@@ -14,21 +14,13 @@ impl Nip01SmokeTests {
14 pub async fn run_all(client: &AuditClient) -> AuditResult { 14 pub async fn run_all(client: &AuditClient) -> AuditResult {
15 let mut results = AuditResult::new("NIP-01 Smoke Tests"); 15 let mut results = AuditResult::new("NIP-01 Smoke Tests");
16 16
17 // Run tests in parallel 17 // Run tests sequentially to avoid future type issues
18 let tests = vec![ 18 results.add(Self::test_websocket_connection(client).await);
19 Self::test_websocket_connection(client), 19 results.add(Self::test_send_receive_event(client).await);
20 Self::test_send_receive_event(client), 20 results.add(Self::test_create_subscription(client).await);
21 Self::test_create_subscription(client), 21 results.add(Self::test_close_subscription(client).await);
22 Self::test_close_subscription(client), 22 results.add(Self::test_reject_invalid_signature(client).await);
23 Self::test_reject_invalid_signature(client), 23 results.add(Self::test_reject_invalid_event_id(client).await);
24 Self::test_reject_invalid_event_id(client),
25 ];
26
27 let test_results = futures::future::join_all(tests).await;
28
29 for result in test_results {
30 results.add(result);
31 }
32 24
33 results 25 results
34 } 26 }
@@ -68,7 +60,6 @@ impl Nip01SmokeTests {
68 let event = client 60 let event = client
69 .event_builder(Kind::TextNote, "NIP-01 smoke test event") 61 .event_builder(Kind::TextNote, "NIP-01 smoke test event")
70 .build(client.keys()) 62 .build(client.keys())
71 .await
72 .map_err(|e| format!("Failed to build event: {}", e))?; 63 .map_err(|e| format!("Failed to build event: {}", e))?;
73 64
74 // Send event 65 // Send event
@@ -123,7 +114,6 @@ impl Nip01SmokeTests {
123 let event = client 114 let event = client
124 .event_builder(Kind::TextNote, "Subscription test event") 115 .event_builder(Kind::TextNote, "Subscription test event")
125 .build(client.keys()) 116 .build(client.keys())
126 .await
127 .map_err(|e| format!("Failed to build event: {}", e))?; 117 .map_err(|e| format!("Failed to build event: {}", e))?;
128 118
129 client 119 client
@@ -193,38 +183,37 @@ impl Nip01SmokeTests {
193 ) 183 )
194 .run(|| async { 184 .run(|| async {
195 // Create a valid event 185 // Create a valid event
196 let mut event = client 186 let event = client
197 .event_builder(Kind::TextNote, "Invalid signature test") 187 .event_builder(Kind::TextNote, "Invalid signature test")
198 .build(client.keys()) 188 .build(client.keys())
199 .await
200 .map_err(|e| format!("Failed to build event: {}", e))?; 189 .map_err(|e| format!("Failed to build event: {}", e))?;
201 190
202 // Corrupt the signature by creating a new event with wrong sig 191 // Corrupt the signature by creating a new event with wrong sig
203 // We'll use a different key to sign, creating an invalid signature 192 // We'll use a different key to sign, creating an invalid signature
204 let wrong_keys = Keys::generate(); 193 let wrong_keys = Keys::generate();
205 let wrong_event = EventBuilder::new( 194 let wrong_event = EventBuilder::new(event.kind, event.content.clone())
206 event.kind, 195 .tags(event.tags.clone())
207 event.content.clone(), 196 .sign_with_keys(&wrong_keys)
208 event.tags.clone(), 197 .map_err(|e| format!("Failed to build wrong event: {}", e))?;
209 )
210 .to_event(&wrong_keys)
211 .await
212 .map_err(|e| format!("Failed to build wrong event: {}", e))?;
213 198
214 // Create event with mismatched pubkey and signature 199 // Create event JSON with mismatched pubkey and signature
215 // This should be rejected by the relay 200 // This should be rejected by the relay
216 event = Event { 201 let invalid_event_json = serde_json::json!({
217 id: event.id, 202 "id": event.id.to_hex(),
218 pubkey: event.pubkey, 203 "pubkey": event.pubkey.to_hex(),
219 created_at: event.created_at, 204 "created_at": event.created_at.as_u64(),
220 kind: event.kind, 205 "kind": event.kind.as_u16(),
221 tags: event.tags, 206 "tags": event.tags,
222 content: event.content, 207 "content": event.content,
223 sig: wrong_event.sig, // Wrong signature! 208 "sig": wrong_event.sig.to_string(), // Wrong signature!
224 }; 209 });
210
211 // Parse it back to an Event
212 let invalid_event: Event = serde_json::from_value(invalid_event_json)
213 .map_err(|e| format!("Failed to create invalid event: {}", e))?;
225 214
226 // Try to send the invalid event 215 // Try to send the invalid event
227 let result = client.send_event(event).await; 216 let result = client.send_event(invalid_event).await;
228 217
229 // We expect this to fail 218 // We expect this to fail
230 if result.is_ok() { 219 if result.is_ok() {
@@ -248,25 +237,28 @@ impl Nip01SmokeTests {
248 ) 237 )
249 .run(|| async { 238 .run(|| async {
250 // Create a valid event 239 // Create a valid event
251 let mut event = client 240 let event = client
252 .event_builder(Kind::TextNote, "Invalid ID test") 241 .event_builder(Kind::TextNote, "Invalid ID test")
253 .build(client.keys()) 242 .build(client.keys())
254 .await
255 .map_err(|e| format!("Failed to build event: {}", e))?; 243 .map_err(|e| format!("Failed to build event: {}", e))?;
256 244
257 // Corrupt the ID 245 // Create event JSON with corrupted ID
258 event = Event { 246 let invalid_event_json = serde_json::json!({
259 id: EventId::all_zeros(), // Wrong ID! 247 "id": EventId::all_zeros().to_hex(), // Wrong ID!
260 pubkey: event.pubkey, 248 "pubkey": event.pubkey.to_hex(),
261 created_at: event.created_at, 249 "created_at": event.created_at.as_u64(),
262 kind: event.kind, 250 "kind": event.kind.as_u16(),
263 tags: event.tags, 251 "tags": event.tags,
264 content: event.content, 252 "content": event.content,
265 sig: event.sig, 253 "sig": event.sig.to_string(),
266 }; 254 });
255
256 // Parse it back to an Event
257 let invalid_event: Event = serde_json::from_value(invalid_event_json)
258 .map_err(|e| format!("Failed to create invalid event: {}", e))?;
267 259
268 // Try to send the invalid event 260 // Try to send the invalid event
269 let result = client.send_event(event).await; 261 let result = client.send_event(invalid_event).await;
270 262
271 // We expect this to fail 263 // We expect this to fail
272 if result.is_ok() { 264 if result.is_ok() {