v2 / vlib / net / s3 / bucket_test.v
45 lines · 43 sloc · 1.53 KB · 4142432483c4e8de44ab7b0d6ac944f3251e03c8
Raw
1// Copyright (c) 2019-2026 Alexander Medvednikov. All rights reserved.
2// Use of this source code is governed by an MIT license
3// that can be found in the LICENSE file.
4module s3
5
6fn test_validate_bucket_name_accepts_valid() {
7 validate_bucket_name('my-bucket') or { assert false, 'should pass' }
8 validate_bucket_name('a.b.c') or { assert false, 'should pass' }
9 validate_bucket_name('abc') or { assert false, 'should pass' }
10 validate_bucket_name('a' + 'b'.repeat(61) + 'c') or { assert false, 'should pass' }
11}
12
13fn test_validate_bucket_name_rejects_invalid() {
14 if _ := validate_bucket_name('Bad-UPPER') {
15 assert false, 'uppercase must be rejected'
16 }
17 if _ := validate_bucket_name('ab') {
18 assert false, 'shorter than 3 chars must be rejected'
19 }
20 if _ := validate_bucket_name('-leading-hyphen') {
21 assert false, 'leading hyphen must be rejected'
22 }
23 if _ := validate_bucket_name('trailing-hyphen-') {
24 assert false, 'trailing hyphen must be rejected'
25 }
26 if _ := validate_bucket_name('192.168.0.1') {
27 assert false, 'IPv4-shaped name must be rejected'
28 }
29 if _ := validate_bucket_name('a..b') {
30 assert false, 'consecutive dots must be rejected'
31 }
32 if _ := validate_bucket_name('a.-b') {
33 assert false, 'adjacent dot/hyphen must be rejected'
34 }
35 if _ := validate_bucket_name('a-.b') {
36 assert false, 'adjacent hyphen/dot must be rejected'
37 }
38 if _ := validate_bucket_name('') {
39 assert false, 'empty name must be rejected'
40 }
41 long := 'a'.repeat(64)
42 if _ := validate_bucket_name(long) {
43 assert false, 'longer than 63 chars must be rejected'
44 }
45}
46