| 
									
										
										
										
											2024-07-18 21:28:51 +03:00
										 |  |  | import crypto = require('crypto'); | 
					
						
							|  |  |  | import etapi = require('../support/etapi'); | 
					
						
							| 
									
										
										
										
											2024-05-03 21:18:20 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | etapi.describeEtapi("notes", () => { | 
					
						
							|  |  |  |   it("create", async () => { | 
					
						
							|  |  |  |     const { note, branch } = await etapi.postEtapi("create-note", { | 
					
						
							|  |  |  |       parentNoteId: "root", | 
					
						
							|  |  |  |       type: "text", | 
					
						
							|  |  |  |       title: "Hello World!", | 
					
						
							|  |  |  |       content: "Content", | 
					
						
							|  |  |  |       prefix: "Custom prefix", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(note.title).toEqual("Hello World!"); | 
					
						
							|  |  |  |     expect(branch.parentNoteId).toEqual("root"); | 
					
						
							|  |  |  |     expect(branch.prefix).toEqual("Custom prefix"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const rNote = await etapi.getEtapi(`notes/${note.noteId}`); | 
					
						
							|  |  |  |     expect(rNote.title).toEqual("Hello World!"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const rContent = await ( | 
					
						
							|  |  |  |       await etapi.getEtapiContent(`notes/${note.noteId}/content`) | 
					
						
							|  |  |  |     ).text(); | 
					
						
							|  |  |  |     expect(rContent).toEqual("Content"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const rBranch = await etapi.getEtapi(`branches/${branch.branchId}`); | 
					
						
							|  |  |  |     expect(rBranch.parentNoteId).toEqual("root"); | 
					
						
							|  |  |  |     expect(rBranch.prefix).toEqual("Custom prefix"); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it("patch", async () => { | 
					
						
							|  |  |  |     const { note } = await etapi.postEtapi("create-note", { | 
					
						
							|  |  |  |       parentNoteId: "root", | 
					
						
							|  |  |  |       type: "text", | 
					
						
							|  |  |  |       title: "Hello World!", | 
					
						
							|  |  |  |       content: "Content", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await etapi.patchEtapi(`notes/${note.noteId}`, { | 
					
						
							|  |  |  |       title: "new title", | 
					
						
							|  |  |  |       type: "code", | 
					
						
							|  |  |  |       mime: "text/apl", | 
					
						
							|  |  |  |       dateCreated: "2000-01-01 12:34:56.999+0200", | 
					
						
							|  |  |  |       utcDateCreated: "2000-01-01 10:34:56.999Z", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const rNote = await etapi.getEtapi(`notes/${note.noteId}`); | 
					
						
							|  |  |  |     expect(rNote.title).toEqual("new title"); | 
					
						
							|  |  |  |     expect(rNote.type).toEqual("code"); | 
					
						
							|  |  |  |     expect(rNote.mime).toEqual("text/apl"); | 
					
						
							|  |  |  |     expect(rNote.dateCreated).toEqual("2000-01-01 12:34:56.999+0200"); | 
					
						
							|  |  |  |     expect(rNote.utcDateCreated).toEqual("2000-01-01 10:34:56.999Z"); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it("update content", async () => { | 
					
						
							|  |  |  |     const { note } = await etapi.postEtapi("create-note", { | 
					
						
							|  |  |  |       parentNoteId: "root", | 
					
						
							|  |  |  |       type: "text", | 
					
						
							|  |  |  |       title: "Hello World!", | 
					
						
							|  |  |  |       content: "Content", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await etapi.putEtapiContent(`notes/${note.noteId}/content`, "new content"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const rContent = await ( | 
					
						
							|  |  |  |       await etapi.getEtapiContent(`notes/${note.noteId}/content`) | 
					
						
							|  |  |  |     ).text(); | 
					
						
							|  |  |  |     expect(rContent).toEqual("new content"); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it("create / update binary content", async () => { | 
					
						
							|  |  |  |     const { note } = await etapi.postEtapi("create-note", { | 
					
						
							|  |  |  |       parentNoteId: "root", | 
					
						
							|  |  |  |       type: "file", | 
					
						
							|  |  |  |       title: "Hello World!", | 
					
						
							|  |  |  |       content: "ZZZ", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const updatedContent = crypto.randomBytes(16); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await etapi.putEtapiContent(`notes/${note.noteId}/content`, updatedContent); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const rContent = await ( | 
					
						
							|  |  |  |       await etapi.getEtapiContent(`notes/${note.noteId}/content`) | 
					
						
							|  |  |  |     ).arrayBuffer(); | 
					
						
							|  |  |  |     expect(Buffer.from(new Uint8Array(rContent))).toEqual(updatedContent); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it("delete note", async () => { | 
					
						
							|  |  |  |     const { note } = await etapi.postEtapi("create-note", { | 
					
						
							|  |  |  |       parentNoteId: "root", | 
					
						
							|  |  |  |       type: "text", | 
					
						
							|  |  |  |       title: "Hello World!", | 
					
						
							|  |  |  |       content: "Content", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await etapi.deleteEtapi(`notes/${note.noteId}`); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const resp = await etapi.getEtapiResponse(`notes/${note.noteId}`); | 
					
						
							|  |  |  |     expect(resp.status).toEqual(404); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const error = await resp.json(); | 
					
						
							|  |  |  |     expect(error.status).toEqual(404); | 
					
						
							|  |  |  |     expect(error.code).toEqual("NOTE_NOT_FOUND"); | 
					
						
							|  |  |  |     expect(error.message).toEqual(`Note '${note.noteId}' not found.`); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |