1- import { makeImagePersistencePlan } from "./MakeImagePersistencePlan" ;
1+ import {
2+ hashOfString ,
3+ makeImagePersistencePlan ,
4+ } from "./MakeImagePersistencePlan" ;
25import { ImageSet } from "./images" ;
36
47test ( "primary file with explicit file output path and prefix" , ( ) => {
@@ -9,11 +12,16 @@ test("primary file with explicit file output path and prefix", () => {
912 fileType : { ext : "png" , mime : "image/png" } ,
1013 } ;
1114 makeImagePersistencePlan ( imageSet , "./static/notion_imgs" , "/notion_imgs" ) ;
12- expect ( imageSet . outputFileName ) . toBe ( "463556435.png" ) ;
15+ const expectedHash = hashOfString (
16+ "https://s3.us-west-2.amazonaws.com/primaryImage"
17+ ) ;
18+ expect ( imageSet . outputFileName ) . toBe ( `${ expectedHash } .png` ) ;
1319 expect ( imageSet . primaryFileOutputPath ) . toBe (
14- "static/notion_imgs/463556435.png"
20+ `static/notion_imgs/${ expectedHash } .png`
21+ ) ;
22+ expect ( imageSet . filePathToUseInMarkdown ) . toBe (
23+ `/notion_imgs/${ expectedHash } .png`
1524 ) ;
16- expect ( imageSet . filePathToUseInMarkdown ) . toBe ( "/notion_imgs/463556435.png" ) ;
1725} ) ;
1826test ( "primary file with defaults for image output path and prefix" , ( ) => {
1927 const imageSet : ImageSet = {
@@ -23,13 +31,39 @@ test("primary file with defaults for image output path and prefix", () => {
2331 fileType : { ext : "png" , mime : "image/png" } ,
2432 } ;
2533 makeImagePersistencePlan ( imageSet , "" , "" ) ;
26- expect ( imageSet . outputFileName ) . toBe ( "463556435.png" ) ;
34+ const expectedHash = hashOfString (
35+ "https://s3.us-west-2.amazonaws.com/primaryImage"
36+ ) ;
37+ expect ( imageSet . outputFileName ) . toBe ( `${ expectedHash } .png` ) ;
2738
2839 // the default behavior is to put the image next to the markdown file
2940 expect ( imageSet . primaryFileOutputPath ) . toBe (
30- " /pathToParentSomewhere/463556435 .png"
41+ ` /pathToParentSomewhere/${ expectedHash } .png`
3142 ) ;
32- expect ( imageSet . filePathToUseInMarkdown ) . toBe ( "./463556435.png" ) ;
43+ expect ( imageSet . filePathToUseInMarkdown ) . toBe ( `./${ expectedHash } .png` ) ;
44+ } ) ;
45+
46+ test ( "properly extract UUID from old-style notion image url" , ( ) => {
47+ const imageSet : ImageSet = {
48+ primaryUrl :
49+ "https://s3.us-west-2.amazonaws.com/secure.notion-static.com/e1058f46-4d2f-4292-8388-4ad393383439/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220516%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220516T233630Z&X-Amz-Expires=3600&X-Amz-Signature=f215704094fcc884d37073b0b108cf6d1c9da9b7d57a898da38bc30c30b4c4b5&X-Amz-SignedHeaders=host&x-id=GetObject" ,
50+ localizedUrls : [ ] ,
51+ fileType : { ext : "png" , mime : "image/png" } ,
52+ } ;
53+ makeImagePersistencePlan ( imageSet , "./static/notion_imgs" , "/notion_imgs" ) ;
54+ const expectedHash = hashOfString ( "e1058f46-4d2f-4292-8388-4ad393383439" ) ;
55+ expect ( imageSet . outputFileName ) . toBe ( `${ expectedHash } .png` ) ;
56+ } ) ;
57+ test ( "properly extract UUID from new-style (Sept 2023) notion image url" , ( ) => {
58+ const imageSet : ImageSet = {
59+ primaryUrl :
60+ "https://prod-files-secure.s3.us-west-2.amazonaws.com/d9a2b712-cf69-4bd6-9d65-87a4ceeacca2/d1bcdc8c-b065-4e40-9a11-392aabeb220e/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20230915%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230915T161258Z&X-Amz-Expires=3600&X-Amz-Signature=28fca48e65fba86d539c3c4b7676fce1fa0857aa194f7b33dd4a468ecca6ab24&X-Amz-SignedHeaders=host&x-id=GetObject" ,
61+ localizedUrls : [ ] ,
62+ fileType : { ext : "png" , mime : "image/png" } ,
63+ } ;
64+ makeImagePersistencePlan ( imageSet , "./static/notion_imgs" , "/notion_imgs" ) ;
65+ const expectedHash = hashOfString ( "d1bcdc8c-b065-4e40-9a11-392aabeb220e" ) ;
66+ expect ( imageSet . outputFileName ) . toBe ( `${ expectedHash } .png` ) ;
3367} ) ;
3468
3569// In order to make image fallback work with other languages, we have to have
0 commit comments