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

     1  package s3crypto
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"testing"
     7  )
     8  
     9  func TestAESCBCPadding(t *testing.T) {
    10  	for i := 0; i < 16; i++ {
    11  		input := make([]byte, i)
    12  		expected := append(input, bytes.Repeat([]byte{byte(16 - i)}, 16-i)...)
    13  		b, err := AESCBCPadder.Pad(input, len(input))
    14  		if err != nil {
    15  			t.Fatal("Expected error to be nil but received " + err.Error())
    16  		}
    17  		if len(b) != len(expected) {
    18  			t.Fatal(fmt.Sprintf("Case %d: data is not of the same length", i))
    19  		}
    20  		if bytes.Compare(b, expected) != 0 {
    21  			t.Fatal(fmt.Sprintf("Expected %v but got %v", expected, b))
    22  		}
    23  	}
    24  }
    25  
    26  func TestAESCBCUnpadding(t *testing.T) {
    27  	for i := 0; i < 16; i++ {
    28  		expected := make([]byte, i)
    29  		input := append(expected, bytes.Repeat([]byte{byte(16 - i)}, 16-i)...)
    30  		b, err := AESCBCPadder.Unpad(input)
    31  		if err != nil {
    32  			t.Fatal("Error received, was expecting nil: " + err.Error())
    33  		}
    34  		if len(b) != len(expected) {
    35  			t.Fatal(fmt.Sprintf("Case %d: data is not of the same length", i))
    36  		}
    37  		if bytes.Compare(b, expected) != 0 {
    38  			t.Fatal(fmt.Sprintf("Expected %v but got %v", expected, b))
    39  		}
    40  	}
    41  }