@@ -104,55 +104,15 @@ async fn test_create_long_names() {
104
104
assert ! ( blobname. len( ) < 70 ) ;
105
105
}
106
106
107
- #[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
108
- async fn test_create_and_copy ( ) {
109
- let t = TestContext :: new ( ) . await ;
110
- let src = t. dir . path ( ) . join ( "src" ) ;
111
- fs:: write ( & src, b"boo" ) . await . unwrap ( ) ;
112
- let blob = BlobObject :: create_and_copy ( & t, src. as_ref ( ) ) . await . unwrap ( ) ;
113
- assert_eq ! ( blob. as_name( ) , "$BLOBDIR/src" ) ;
114
- let data = fs:: read ( blob. to_abs_path ( ) ) . await . unwrap ( ) ;
115
- assert_eq ! ( data, b"boo" ) ;
116
-
117
- let whoops = t. dir . path ( ) . join ( "whoops" ) ;
118
- assert ! ( BlobObject :: create_and_copy( & t, whoops. as_ref( ) )
119
- . await
120
- . is_err( ) ) ;
121
- let whoops = t. get_blobdir ( ) . join ( "whoops" ) ;
122
- assert ! ( !whoops. exists( ) ) ;
123
- }
124
-
125
- #[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
126
- async fn test_create_from_path ( ) {
127
- let t = TestContext :: new ( ) . await ;
128
-
129
- let src_ext = t. dir . path ( ) . join ( "external" ) ;
130
- fs:: write ( & src_ext, b"boo" ) . await . unwrap ( ) ;
131
- let blob = BlobObject :: new_from_path ( & t, src_ext. as_ref ( ) )
132
- . await
133
- . unwrap ( ) ;
134
- assert_eq ! ( blob. as_name( ) , "$BLOBDIR/external" ) ;
135
- let data = fs:: read ( blob. to_abs_path ( ) ) . await . unwrap ( ) ;
136
- assert_eq ! ( data, b"boo" ) ;
137
-
138
- let src_int = t. get_blobdir ( ) . join ( "internal" ) ;
139
- fs:: write ( & src_int, b"boo" ) . await . unwrap ( ) ;
140
- let blob = BlobObject :: new_from_path ( & t, & src_int) . await . unwrap ( ) ;
141
- assert_eq ! ( blob. as_name( ) , "$BLOBDIR/internal" ) ;
142
- let data = fs:: read ( blob. to_abs_path ( ) ) . await . unwrap ( ) ;
143
- assert_eq ! ( data, b"boo" ) ;
144
- }
145
107
#[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
146
108
async fn test_create_from_name_long ( ) {
147
109
let t = TestContext :: new ( ) . await ;
148
110
let src_ext = t. dir . path ( ) . join ( "autocrypt-setup-message-4137848473.html" ) ;
149
111
fs:: write ( & src_ext, b"boo" ) . await . unwrap ( ) ;
150
- let blob = BlobObject :: new_from_path ( & t, src_ext. as_ref ( ) )
151
- . await
152
- . unwrap ( ) ;
112
+ let blob = BlobObject :: create_and_deduplicate ( & t, & src_ext, & src_ext) . unwrap ( ) ;
153
113
assert_eq ! (
154
114
blob. as_name( ) ,
155
- "$BLOBDIR/autocrypt-setup-message-4137848473 .html"
115
+ "$BLOBDIR/06f010b24d1efe57ffab44a8ad20c54 .html"
156
116
) ;
157
117
}
158
118
@@ -166,64 +126,6 @@ fn test_is_blob_name() {
166
126
assert ! ( !BlobObject :: is_acceptible_blob_name( "foo\x00 bar" ) ) ;
167
127
}
168
128
169
- #[ test]
170
- fn test_sanitise_name ( ) {
171
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension (
172
- "Я ЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ.txt" ,
173
- ) ;
174
- assert_eq ! ( ext, ".txt" ) ;
175
- assert ! ( !stem. is_empty( ) ) ;
176
-
177
- // the extensions are kept together as between stem and extension a number may be added -
178
- // and `foo.tar.gz` should become `foo-1234.tar.gz` and not `foo.tar-1234.gz`
179
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension ( "wot.tar.gz" ) ;
180
- assert_eq ! ( stem, "wot" ) ;
181
- assert_eq ! ( ext, ".tar.gz" ) ;
182
-
183
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension ( ".foo.bar" ) ;
184
- assert_eq ! ( stem, "file" ) ;
185
- assert_eq ! ( ext, ".foo.bar" ) ;
186
-
187
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension ( "foo?.bar" ) ;
188
- assert ! ( stem. contains( "foo" ) ) ;
189
- assert ! ( !stem. contains( '?' ) ) ;
190
- assert_eq ! ( ext, ".bar" ) ;
191
-
192
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension ( "no-extension" ) ;
193
- assert_eq ! ( stem, "no-extension" ) ;
194
- assert_eq ! ( ext, "" ) ;
195
-
196
- let ( stem, ext) =
197
- BlobObject :: sanitize_name_and_split_extension ( "path/ignored\\ this: is* forbidden?.c" ) ;
198
- assert_eq ! ( ext, ".c" ) ;
199
- assert ! ( !stem. contains( "path" ) ) ;
200
- assert ! ( !stem. contains( "ignored" ) ) ;
201
- assert ! ( stem. contains( "this" ) ) ;
202
- assert ! ( stem. contains( "forbidden" ) ) ;
203
- assert ! ( !stem. contains( '/' ) ) ;
204
- assert ! ( !stem. contains( '\\' ) ) ;
205
- assert ! ( !stem. contains( ':' ) ) ;
206
- assert ! ( !stem. contains( '*' ) ) ;
207
- assert ! ( !stem. contains( '?' ) ) ;
208
-
209
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension (
210
- "file.with_lots_of_characters_behind_point_and_double_ending.tar.gz" ,
211
- ) ;
212
- assert_eq ! (
213
- stem,
214
- "file.with_lots_of_characters_behind_point_and_double_ending"
215
- ) ;
216
- assert_eq ! ( ext, ".tar.gz" ) ;
217
-
218
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension ( "a. tar.tar.gz" ) ;
219
- assert_eq ! ( stem, "a. tar" ) ;
220
- assert_eq ! ( ext, ".tar.gz" ) ;
221
-
222
- let ( stem, ext) = BlobObject :: sanitize_name_and_split_extension ( "Guia_uso_GNB (v0.8).pdf" ) ;
223
- assert_eq ! ( stem, "Guia_uso_GNB (v0.8)" ) ;
224
- assert_eq ! ( ext, ".pdf" ) ;
225
- }
226
-
227
129
#[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
228
130
async fn test_add_white_bg ( ) {
229
131
let t = TestContext :: new ( ) . await ;
@@ -236,7 +138,7 @@ async fn test_add_white_bg() {
236
138
let avatar_src = t. dir . path ( ) . join ( "avatar.png" ) ;
237
139
fs:: write ( & avatar_src, bytes) . await . unwrap ( ) ;
238
140
239
- let mut blob = BlobObject :: new_from_path ( & t, & avatar_src) . await . unwrap ( ) ;
141
+ let mut blob = BlobObject :: create_and_deduplicate ( & t, & avatar_src, & avatar_src ) . unwrap ( ) ;
240
142
let img_wh = 128 ;
241
143
let maybe_sticker = & mut false ;
242
144
let strict_limits = true ;
@@ -285,7 +187,7 @@ async fn test_selfavatar_outside_blobdir() {
285
187
constants:: BALANCED_AVATAR_SIZE ,
286
188
) ;
287
189
288
- let mut blob = BlobObject :: new_from_path ( & t, avatar_path) . await . unwrap ( ) ;
190
+ let mut blob = BlobObject :: create_and_deduplicate ( & t, avatar_path, avatar_path ) . unwrap ( ) ;
289
191
let maybe_sticker = & mut false ;
290
192
let strict_limits = true ;
291
193
blob. recode_to_size ( & t, None , maybe_sticker, 1000 , 3000 , strict_limits)
@@ -643,9 +545,9 @@ impl SendImageCheckMediaquality<'_> {
643
545
check_image_size ( file_saved, compressed_width, compressed_height) ;
644
546
645
547
if original_width == compressed_width {
646
- assert_extension ( & alice, alice_msg, extension) . await ;
548
+ assert_extension ( & alice, alice_msg, extension) ;
647
549
} else {
648
- assert_extension ( & alice, alice_msg, "jpg" ) . await ;
550
+ assert_extension ( & alice, alice_msg, "jpg" ) ;
649
551
}
650
552
651
553
let bob_msg = bob. recv_msg ( & sent) . await ;
@@ -668,16 +570,16 @@ impl SendImageCheckMediaquality<'_> {
668
570
let img = check_image_size ( file_saved, compressed_width, compressed_height) ;
669
571
670
572
if original_width == compressed_width {
671
- assert_extension ( & bob, bob_msg, extension) . await ;
573
+ assert_extension ( & bob, bob_msg, extension) ;
672
574
} else {
673
- assert_extension ( & bob, bob_msg, "jpg" ) . await ;
575
+ assert_extension ( & bob, bob_msg, "jpg" ) ;
674
576
}
675
577
676
578
Ok ( img)
677
579
}
678
580
}
679
581
680
- async fn assert_extension ( context : & TestContext , msg : Message , extension : & str ) {
582
+ fn assert_extension ( context : & TestContext , msg : Message , extension : & str ) {
681
583
assert ! ( msg
682
584
. param
683
585
. get( Param :: File )
@@ -703,8 +605,7 @@ async fn assert_extension(context: &TestContext, msg: Message, extension: &str)
703
605
) ;
704
606
assert_eq ! (
705
607
msg. param
706
- . get_blob( Param :: File , context)
707
- . await
608
+ . get_file_blob( context)
708
609
. unwrap( )
709
610
. unwrap( )
710
611
. suffix( )
0 commit comments