github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/cnbutils/report_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package cnbutils_test
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/SAP/jenkins-library/pkg/cnbutils"
    10  	"github.com/SAP/jenkins-library/pkg/mock"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestDigestFromReport(t *testing.T) {
    15  	t.Run("return a digest from the report.toml", func(t *testing.T) {
    16  		mockUtils := &cnbutils.MockUtils{
    17  			FilesMock: &mock.FilesMock{},
    18  		}
    19  		mockUtils.AddFile("/layers/report.toml", []byte(`[build]
    20  [image]
    21  digest = "sha256:52eac630560210e5ae13eb10797c4246d6f02d425f32b9430ca00bde697c79ec"
    22  `))
    23  		digest, err := cnbutils.DigestFromReport(mockUtils)
    24  		assert.NoError(t, err)
    25  		assert.Equal(t, "sha256:52eac630560210e5ae13eb10797c4246d6f02d425f32b9430ca00bde697c79ec", digest)
    26  	})
    27  
    28  	t.Run("fails if digest is empty", func(t *testing.T) {
    29  		mockUtils := &cnbutils.MockUtils{
    30  			ExecMockRunner: &mock.ExecMockRunner{},
    31  			FilesMock:      &mock.FilesMock{},
    32  		}
    33  		mockUtils.AddFile("/layers/report.toml", []byte(``))
    34  
    35  		digest, err := cnbutils.DigestFromReport(mockUtils)
    36  		assert.Empty(t, digest)
    37  		assert.EqualError(t, err, "image digest is empty")
    38  	})
    39  
    40  	t.Run("fails to unmarshal corrupted file", func(t *testing.T) {
    41  		mockUtils := &cnbutils.MockUtils{
    42  			ExecMockRunner: &mock.ExecMockRunner{},
    43  			FilesMock:      &mock.FilesMock{},
    44  		}
    45  		mockUtils.AddFile("/layers/report.toml", []byte(`{}`))
    46  
    47  		digest, err := cnbutils.DigestFromReport(mockUtils)
    48  		assert.Empty(t, digest)
    49  		assert.EqualError(t, err, "toml: line 1: expected '.' or '=', but got '{' instead")
    50  	})
    51  }