You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							183 lines
						
					
					
						
							3.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							183 lines
						
					
					
						
							3.8 KiB
						
					
					
				| package filer | |
| 
 | |
| import ( | |
| 	"bytes" | |
| 	"testing" | |
| 
 | |
| 	. "github.com/seaweedfs/seaweedfs/weed/s3api/s3_constants" | |
| 
 | |
| 	"github.com/seaweedfs/seaweedfs/weed/pb/iam_pb" | |
| 
 | |
| 	"github.com/stretchr/testify/assert" | |
| ) | |
| 
 | |
| func TestS3Conf(t *testing.T) { | |
| 	s3Conf := &iam_pb.S3ApiConfiguration{ | |
| 		Identities: []*iam_pb.Identity{ | |
| 			{ | |
| 				Name: "some_name", | |
| 				Credentials: []*iam_pb.Credential{ | |
| 					{ | |
| 						AccessKey: "some_access_key1", | |
| 						SecretKey: "some_secret_key1", | |
| 					}, | |
| 				}, | |
| 				Actions: []string{ | |
| 					ACTION_ADMIN, | |
| 					ACTION_READ, | |
| 					ACTION_WRITE, | |
| 				}, | |
| 			}, | |
| 			{ | |
| 				Name: "some_read_only_user", | |
| 				Credentials: []*iam_pb.Credential{ | |
| 					{ | |
| 						AccessKey: "some_access_key2", | |
| 						SecretKey: "some_secret_key2", | |
| 					}, | |
| 				}, | |
| 				Actions: []string{ | |
| 					ACTION_READ, | |
| 					ACTION_TAGGING, | |
| 					ACTION_LIST, | |
| 				}, | |
| 			}, | |
| 		}, | |
| 	} | |
| 	var buf bytes.Buffer | |
| 	err := ProtoToText(&buf, s3Conf) | |
| 	assert.Equal(t, err, nil) | |
| 	s3ConfSaved := &iam_pb.S3ApiConfiguration{} | |
| 	err = ParseS3ConfigurationFromBytes(buf.Bytes(), s3ConfSaved) | |
| 	assert.Equal(t, err, nil) | |
| 
 | |
| 	assert.Equal(t, "some_name", s3ConfSaved.Identities[0].Name) | |
| 	assert.Equal(t, "some_read_only_user", s3ConfSaved.Identities[1].Name) | |
| 	assert.Equal(t, "some_access_key1", s3ConfSaved.Identities[0].Credentials[0].AccessKey) | |
| 	assert.Equal(t, "some_secret_key2", s3ConfSaved.Identities[1].Credentials[0].SecretKey) | |
| } | |
| 
 | |
| func TestCheckDuplicateAccessKey(t *testing.T) { | |
| 	var tests = []struct { | |
| 		s3cfg *iam_pb.S3ApiConfiguration | |
| 		err   string | |
| 	}{ | |
| 		{ | |
| 			&iam_pb.S3ApiConfiguration{ | |
| 				Identities: []*iam_pb.Identity{ | |
| 					{ | |
| 						Name: "some_name", | |
| 						Credentials: []*iam_pb.Credential{ | |
| 							{ | |
| 								AccessKey: "some_access_key1", | |
| 								SecretKey: "some_secret_key1", | |
| 							}, | |
| 						}, | |
| 						Actions: []string{ | |
| 							ACTION_ADMIN, | |
| 							ACTION_READ, | |
| 							ACTION_WRITE, | |
| 						}, | |
| 					}, | |
| 					{ | |
| 						Name: "some_read_only_user", | |
| 						Credentials: []*iam_pb.Credential{ | |
| 							{ | |
| 								AccessKey: "some_access_key2", | |
| 								SecretKey: "some_secret_key2", | |
| 							}, | |
| 						}, | |
| 						Actions: []string{ | |
| 							ACTION_READ, | |
| 							ACTION_TAGGING, | |
| 							ACTION_LIST, | |
| 						}, | |
| 					}, | |
| 				}, | |
| 			}, | |
| 			"", | |
| 		}, | |
| 		{ | |
| 			&iam_pb.S3ApiConfiguration{ | |
| 				Identities: []*iam_pb.Identity{ | |
| 					{ | |
| 						Name: "some_name", | |
| 						Credentials: []*iam_pb.Credential{ | |
| 							{ | |
| 								AccessKey: "some_access_key1", | |
| 								SecretKey: "some_secret_key1", | |
| 							}, | |
| 						}, | |
| 						Actions: []string{ | |
| 							ACTION_ADMIN, | |
| 							ACTION_READ, | |
| 							ACTION_WRITE, | |
| 						}, | |
| 					}, | |
| 					{ | |
| 						Name: "some_name", | |
| 						Credentials: []*iam_pb.Credential{ | |
| 							{ | |
| 								AccessKey: "some_access_key1", | |
| 								SecretKey: "some_secret_key1", | |
| 							}, | |
| 						}, | |
| 						Actions: []string{ | |
| 							ACTION_READ, | |
| 							ACTION_TAGGING, | |
| 							ACTION_LIST, | |
| 						}, | |
| 					}, | |
| 				}, | |
| 			}, | |
| 			"", | |
| 		}, | |
| 		{ | |
| 			&iam_pb.S3ApiConfiguration{ | |
| 				Identities: []*iam_pb.Identity{ | |
| 					{ | |
| 						Name: "some_name", | |
| 						Credentials: []*iam_pb.Credential{ | |
| 							{ | |
| 								AccessKey: "some_access_key1", | |
| 								SecretKey: "some_secret_key1", | |
| 							}, | |
| 						}, | |
| 						Actions: []string{ | |
| 							ACTION_ADMIN, | |
| 							ACTION_READ, | |
| 							ACTION_WRITE, | |
| 						}, | |
| 					}, | |
| 					{ | |
| 						Name: "some_read_only_user", | |
| 						Credentials: []*iam_pb.Credential{ | |
| 							{ | |
| 								AccessKey: "some_access_key1", | |
| 								SecretKey: "some_secret_key1", | |
| 							}, | |
| 						}, | |
| 						Actions: []string{ | |
| 							ACTION_READ, | |
| 							ACTION_TAGGING, | |
| 							ACTION_LIST, | |
| 						}, | |
| 					}, | |
| 				}, | |
| 			}, | |
| 			"duplicate accessKey[some_access_key1], already configured in user[some_name]", | |
| 		}, | |
| 	} | |
| 	for i, test := range tests { | |
| 		err := CheckDuplicateAccessKey(test.s3cfg) | |
| 		var errString string | |
| 		if err == nil { | |
| 			errString = "" | |
| 		} else { | |
| 			errString = err.Error() | |
| 		} | |
| 		if errString != test.err { | |
| 			t.Errorf("[%d]: got: %s expected: %s", i, errString, test.err) | |
| 		} | |
| 	} | |
| }
 |