github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/metastore/metastore_utils_test.go (about) 1 package metastore 2 3 import "testing" 4 5 func TestReplaceBranchName(t *testing.T) { 6 type args struct { 7 location string 8 branch string 9 } 10 tests := []struct { 11 name string 12 args args 13 want string 14 wantErr bool 15 }{ 16 { 17 name: "table", 18 args: args{ 19 location: "s3a://repo/main/path/to/table", 20 branch: "br1", 21 }, 22 want: "s3a://repo/br1/path/to/table", 23 }, 24 { 25 name: "partition", 26 args: args{ 27 location: "s3a://repo/main/path/to/table/partition=value", 28 branch: "br1", 29 }, 30 want: "s3a://repo/br1/path/to/table/partition=value", 31 }, 32 { 33 name: "no schema", 34 args: args{ 35 location: "noschema/repo", 36 branch: "br1", 37 }, 38 wantErr: true, 39 }, 40 { 41 name: "only schema", 42 args: args{ 43 location: "s3://", 44 branch: "br1", 45 }, 46 wantErr: true, 47 }, 48 { 49 name: "invalud url", 50 args: args{ 51 location: "~s3:/s:@12/%?", 52 branch: "br1", 53 }, 54 wantErr: true, 55 }, 56 } 57 for _, tt := range tests { 58 t.Run(tt.name, func(t *testing.T) { 59 got, err := ReplaceBranchName(tt.args.location, tt.args.branch) 60 if (err != nil) != tt.wantErr { 61 t.Errorf("ReplaceBranchName() error = %v, wantErr %v", err, tt.wantErr) 62 return 63 } 64 if got != tt.want { 65 t.Errorf("ReplaceBranchName() got = %v, want %v", got, tt.want) 66 } 67 }) 68 } 69 } 70 71 func TestGetSymlinkLocation1(t *testing.T) { 72 type args struct { 73 location string 74 locationPrefix string 75 } 76 tests := []struct { 77 name string 78 args args 79 want string 80 wantErr bool 81 }{ 82 { 83 name: "table location - repo is bucket", 84 args: args{ 85 location: "s3a://repo/main/tableName", 86 locationPrefix: "s3://bucket/lakeFS", 87 }, 88 want: "s3://bucket/lakeFS/repo/main/tableName", 89 }, 90 { 91 name: "partition location - repo is bucket", 92 args: args{ 93 location: "s3a://repo/main/tableName/partition=value", 94 locationPrefix: "s3://bucket/lakeFS", 95 }, 96 want: "s3://bucket/lakeFS/repo/main/tableName/partition=value", 97 }, 98 { 99 name: "partition location - repo is path", 100 args: args{ 101 location: "s3a://repo/main/tableName/partition=value", 102 locationPrefix: "s3://bucket/some/path/lakeFS", 103 }, 104 want: "s3://bucket/some/path/lakeFS/repo/main/tableName/partition=value", 105 }, 106 { 107 name: "no schema", 108 args: args{ 109 location: "noschema/repo", 110 locationPrefix: "s3://bucket/some/path/lakeFS", 111 }, 112 wantErr: true, 113 }, 114 { 115 name: "only schema", 116 args: args{ 117 location: "s3://", 118 locationPrefix: "s3://bucket/some/path/lakeFS", 119 }, 120 wantErr: true, 121 }, 122 { 123 name: "invalid url", 124 args: args{ 125 location: "~s3:/s:@12/%?", 126 locationPrefix: "s3://bucket/some/path/lakeFS", 127 }, 128 wantErr: true, 129 }, 130 } 131 for _, tt := range tests { 132 t.Run(tt.name, func(t *testing.T) { 133 got, err := GetSymlinkLocation(tt.args.location, tt.args.locationPrefix) 134 if (err != nil) != tt.wantErr { 135 t.Errorf("GetSymlinkLocation() error = %v, wantErr %v", err, tt.wantErr) 136 return 137 } 138 if got != tt.want { 139 t.Errorf("GetSymlinkLocation() got = %v, want %v", got, tt.want) 140 } 141 }) 142 } 143 }