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)
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								}
							 |