github.com/minio/mc@v0.0.0-20240503112107-b471de8d1882/cmd/ilm/utils_test.go (about)

     1  // Copyright (c) 2022 MinIO, Inc.
     2  //
     3  // This file is part of MinIO Object Storage stack
     4  //
     5  // This program is free software: you can redistribute it and/or modify
     6  // it under the terms of the GNU Affero General Public License as published by
     7  // the Free Software Foundation, either version 3 of the License, or
     8  // (at your option) any later version.
     9  //
    10  // This program is distributed in the hope that it will be useful
    11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13  // GNU Affero General Public License for more details.
    14  //
    15  // You should have received a copy of the GNU Affero General Public License
    16  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    17  
    18  package ilm
    19  
    20  import (
    21  	"testing"
    22  
    23  	"github.com/minio/minio-go/v7/pkg/lifecycle"
    24  )
    25  
    26  func TestILMTags(t *testing.T) {
    27  	tests := []struct {
    28  		rule     lifecycle.Rule
    29  		expected string
    30  	}{
    31  		{
    32  			rule: lifecycle.Rule{
    33  				ID: "one-tag",
    34  				RuleFilter: lifecycle.Filter{
    35  					Tag: lifecycle.Tag{
    36  						Key:   "key1",
    37  						Value: "val1",
    38  					},
    39  				},
    40  			},
    41  			expected: "key1=val1",
    42  		},
    43  		{
    44  			rule: lifecycle.Rule{
    45  				ID: "many-tags",
    46  				RuleFilter: lifecycle.Filter{
    47  					And: lifecycle.And{
    48  						Tags: []lifecycle.Tag{
    49  							{
    50  								Key:   "key1",
    51  								Value: "val1",
    52  							},
    53  							{
    54  								Key:   "key2",
    55  								Value: "val2",
    56  							},
    57  							{
    58  								Key:   "key3",
    59  								Value: "val3",
    60  							},
    61  						},
    62  					},
    63  				},
    64  			},
    65  			expected: "key1=val1&key2=val2&key3=val3",
    66  		},
    67  	}
    68  	for i, test := range tests {
    69  		if got := getTags(test.rule); got != test.expected {
    70  			t.Fatalf("%d: Expected %s but got %s", i+1, test.expected, got)
    71  		}
    72  	}
    73  }