github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/s3crypto/pkcs7_padder_test.go (about)

     1  package s3crypto_test
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/aavshr/aws-sdk-go/service/s3/s3crypto"
     9  )
    10  
    11  func padTest(size int, t *testing.T) {
    12  	padder := s3crypto.NewPKCS7Padder(size)
    13  	for i := 0; i < size; i++ {
    14  		input := make([]byte, i)
    15  		expected := append(input, bytes.Repeat([]byte{byte(size - i)}, size-i)...)
    16  		b, err := padder.Pad(input, len(input))
    17  		if err != nil {
    18  			t.Fatal("Expected error to be nil but received " + err.Error())
    19  		}
    20  		if len(b) != len(expected) {
    21  			t.Fatal(fmt.Sprintf("Case %d: data is not of the same length", i))
    22  		}
    23  		if bytes.Compare(b, expected) != 0 {
    24  			t.Fatal(fmt.Sprintf("Expected %v but got %v", expected, b))
    25  		}
    26  	}
    27  }
    28  
    29  func unpadTest(size int, t *testing.T) {
    30  	padder := s3crypto.NewPKCS7Padder(size)
    31  	for i := 0; i < size; i++ {
    32  		expected := make([]byte, i)
    33  		input := append(expected, bytes.Repeat([]byte{byte(size - i)}, size-i)...)
    34  		b, err := padder.Unpad(input)
    35  		if err != nil {
    36  			t.Fatal("Error received, was expecting nil: " + err.Error())
    37  		}
    38  		if len(b) != len(expected) {
    39  			t.Fatal(fmt.Sprintf("Case %d: data is not of the same length", i))
    40  		}
    41  		if bytes.Compare(b, expected) != 0 {
    42  			t.Fatal(fmt.Sprintf("Expected %v but got %v", expected, b))
    43  		}
    44  	}
    45  }
    46  
    47  func TestPKCS7Padding(t *testing.T) {
    48  	padTest(10, t)
    49  	padTest(16, t)
    50  	padTest(255, t)
    51  }
    52  
    53  func TestPKCS7Unpadding(t *testing.T) {
    54  	unpadTest(10, t)
    55  	unpadTest(16, t)
    56  	unpadTest(255, t)
    57  }