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.
		
		
		
		
		
			
		
			
				
					
					
						
							76 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							76 lines
						
					
					
						
							2.1 KiB
						
					
					
				
								package s3api
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"github.com/aws/aws-sdk-go/aws"
							 | 
						|
									"github.com/aws/aws-sdk-go/service/s3"
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/s3api/s3err"
							 | 
						|
									"github.com/stretchr/testify/assert"
							 | 
						|
									"testing"
							 | 
						|
									"time"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								func TestInitiateMultipartUploadResult(t *testing.T) {
							 | 
						|
								
							 | 
						|
									expected := `<?xml version="1.0" encoding="UTF-8"?>
							 | 
						|
								<InitiateMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Bucket>example-bucket</Bucket><Key>example-object</Key><UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId></InitiateMultipartUploadResult>`
							 | 
						|
									response := &InitiateMultipartUploadResult{
							 | 
						|
										CreateMultipartUploadOutput: s3.CreateMultipartUploadOutput{
							 | 
						|
											Bucket:   aws.String("example-bucket"),
							 | 
						|
											Key:      aws.String("example-object"),
							 | 
						|
											UploadId: aws.String("VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA"),
							 | 
						|
										},
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									encoded := string(s3err.EncodeXMLResponse(response))
							 | 
						|
									if encoded != expected {
							 | 
						|
										t.Errorf("unexpected output: %s\nexpecting:%s", encoded, expected)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func TestListPartsResult(t *testing.T) {
							 | 
						|
								
							 | 
						|
									expected := `<?xml version="1.0" encoding="UTF-8"?>
							 | 
						|
								<ListPartsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Part><ETag>"12345678"</ETag><LastModified>1970-01-01T00:00:00Z</LastModified><PartNumber>1</PartNumber><Size>123</Size></Part></ListPartsResult>`
							 | 
						|
									response := &ListPartsResult{
							 | 
						|
										Part: []*s3.Part{
							 | 
						|
											{
							 | 
						|
												PartNumber:   aws.Int64(int64(1)),
							 | 
						|
												LastModified: aws.Time(time.Unix(0, 0).UTC()),
							 | 
						|
												Size:         aws.Int64(int64(123)),
							 | 
						|
												ETag:         aws.String("\"12345678\""),
							 | 
						|
											},
							 | 
						|
										},
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									encoded := string(s3err.EncodeXMLResponse(response))
							 | 
						|
									if encoded != expected {
							 | 
						|
										t.Errorf("unexpected output: %s\nexpecting:%s", encoded, expected)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func Test_parsePartNumber(t *testing.T) {
							 | 
						|
									tests := []struct {
							 | 
						|
										name     string
							 | 
						|
										fileName string
							 | 
						|
										partNum  int
							 | 
						|
									}{
							 | 
						|
										{
							 | 
						|
											"first",
							 | 
						|
											"0001_uuid.part",
							 | 
						|
											1,
							 | 
						|
										},
							 | 
						|
										{
							 | 
						|
											"second",
							 | 
						|
											"0002.part",
							 | 
						|
											2,
							 | 
						|
										},
							 | 
						|
									}
							 | 
						|
									for _, tt := range tests {
							 | 
						|
										t.Run(tt.name, func(t *testing.T) {
							 | 
						|
											partNumber, _ := parsePartNumber(tt.fileName)
							 | 
						|
											assert.Equalf(t, tt.partNum, partNumber, "parsePartNumber(%v)", tt.fileName)
							 | 
						|
										})
							 | 
						|
									}
							 | 
						|
								}
							 |