storj.io/minio@v0.0.0-20230509071714-0cbc90f649b1/cmd/gateway/s3/gateway-s3-metadata_test.go (about) 1 /* 2 * MinIO Cloud Storage, (C) 2018 MinIO, Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package s3 18 19 import ( 20 "bytes" 21 "testing" 22 23 minio "storj.io/minio/cmd" 24 ) 25 26 // Tests for GW metadata format validity. 27 func TestGWMetaFormatValid(t *testing.T) { 28 tests := []struct { 29 name int 30 version string 31 format string 32 want bool 33 }{ 34 {1, "123", "fs", false}, 35 {2, "123", gwMetaFormat, false}, 36 {3, gwMetaVersion, "test", false}, 37 {4, gwMetaVersion100, "hello", false}, 38 {5, gwMetaVersion, gwMetaFormat, true}, 39 {6, gwMetaVersion100, gwMetaFormat, true}, 40 } 41 for _, tt := range tests { 42 m := newGWMetaV1() 43 m.Version = tt.version 44 m.Format = tt.format 45 if got := m.IsValid(); got != tt.want { 46 t.Errorf("Test %d: Expected %v but received %v", tt.name, got, tt.want) 47 } 48 } 49 } 50 51 // Tests for reading GW metadata info. 52 func TestReadGWMetadata(t *testing.T) { 53 tests := []struct { 54 metaStr string 55 pass bool 56 }{ 57 {`{"version": "` + gwMetaVersion + `", "format":"` + gwMetaFormat + `", "stat": {"size": 132, "modTime": "2018-08-31T22:25:39.23626461Z" }}`, true}, 58 {`{"version": "` + gwMetaVersion + `", "format":"` + gwMetaFormat + `", "stat": {"size": 132, "modTime": "0000-00-00T00:00:00.00000000Z" }}`, false}, 59 {`{"version": "` + gwMetaVersion + `", "format":"` + gwMetaFormat + `", "stat": {"size": 5242880, "modTime": "2018-08-31T22:25:39.23626461Z" },"meta":{"content-type":"application/octet-stream","etag":"57c743902b2fc8eea6ba3bb4fc58c8e8"},"parts":[{"number":1,"name":"part.1","etag":"","size":5242880}]}`, true}, 60 {`{"version": "` + gwMetaVersion + `", "format":"` + gwMetaFormat + `", "stat": {"size": 68190720, "modTime": "2018-08-31T22:25:39.23626461Z" },"meta":{"X-Minio-Internal-Encrypted-Multipart":"","X-Minio-Internal-Server-Side-Encryption-Iv":"kdbOcKdXD3Sew8tOiHe5eI9xkX1oQ2W9JURz0oslCZA=","X-Minio-Internal-Server-Side-Encryption-Seal-Algorithm":"DAREv2-HMAC-SHA256","X-Minio-Internal-Server-Side-Encryption-Sealed-Key":"IAAfAMfqKrxMXC9LuiI7ENP+p0xArepzAiIeB/MftFp7Xmq2OzDkKlmNbj5RKI89RrjiAbOVLSSEMvqQsrIrTQ==","content-type":"text/plain; charset=utf-8","etag":"2b137fa4ab80126af54623b010c98de6-2"},"parts":[{"number":1,"name":"part.1","etag":"c5cac075eefdab801a5198812f51b36e","size":67141632},{"number":2,"name":"part.2","etag":"ccdf4b774bc3be8eef9a8987309e8171","size":1049088}]}`, true}, 61 {`{"version": "` + gwMetaVersion + `", "format":"` + gwMetaFormat + `", "stat": {"size": "68190720", "modTime": "2018-08-31T22:25:39.23626461Z" },"meta":{"X-Minio-Internal-Encrypted-Multipart":"","X-Minio-Internal-Server-Side-Encryption-Iv":"kdbOcKdXD3Sew8tOiHe5eI9xkX1oQ2W9JURz0oslCZA=","X-Minio-Internal-Server-Side-Encryption-Seal-Algorithm":"DAREv2-HMAC-SHA256","X-Minio-Internal-Server-Side-Encryption-Sealed-Key":"IAAfAMfqKrxMXC9LuiI7ENP+p0xArepzAiIeB/MftFp7Xmq2OzDkKlmNbj5RKI89RrjiAbOVLSSEMvqQsrIrTQ==","content-type":"text/plain; charset=utf-8","etag":"2b137fa4ab80126af54623b010c98de6-2"},"parts":"123"}`, false}, 62 } 63 64 for i, tt := range tests { 65 buf := bytes.NewBufferString(tt.metaStr) 66 m, err := readGWMetadata(minio.GlobalContext, *buf) 67 if err != nil && tt.pass { 68 t.Errorf("Test %d: Expected parse gw metadata to succeed, but failed, %s", i+1, err) 69 } 70 if err == nil && !tt.pass { 71 t.Errorf("Test %d: Expected parse gw metadata to succeed, but failed", i+1) 72 } 73 if err == nil { 74 if m.Version != gwMetaVersion { 75 t.Errorf("Test %d: Expected version %s, but failed with %s", i+1, gwMetaVersion, m.Version) 76 } 77 } 78 } 79 }