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  }