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

     1  //go:build unit
     2  // +build unit
     3  
     4  package jenkins
     5  
     6  import (
     7  	"context"
     8  	"testing"
     9  
    10  	"github.com/SAP/jenkins-library/pkg/jenkins/mocks"
    11  	"github.com/stretchr/testify/assert"
    12  	"github.com/stretchr/testify/mock"
    13  )
    14  
    15  func TestUpdateCredential(t *testing.T) {
    16  	t.Parallel()
    17  	ctx := context.Background()
    18  	const ID = "testID"
    19  	const testSecret = "testSecret"
    20  	const domain = "_"
    21  
    22  	t.Run("That secret is updated", func(t *testing.T) {
    23  		credManagerMock := mocks.CredentialsManager{}
    24  		testCredential := StringCredentials{ID: ID, Secret: testSecret}
    25  
    26  		credManagerMock.On("Update", ctx, domain, ID, mock.Anything).Return(nil)
    27  		err := UpdateCredential(ctx, &credManagerMock, domain, testCredential)
    28  		credManagerMock.AssertCalled(t, "Update", ctx, domain, ID, testCredential)
    29  
    30  		assert.NoError(t, err)
    31  	})
    32  
    33  	t.Run("Test that wrong credential type fails ", func(t *testing.T) {
    34  		credManagerMock := mocks.CredentialsManager{}
    35  
    36  		credManagerMock.On("Update", ctx, domain, ID, mock.Anything).Return(nil)
    37  		err := UpdateCredential(ctx, &credManagerMock, domain, 5)
    38  		credManagerMock.AssertNotCalled(t, "Update", ctx, domain, ID, mock.Anything)
    39  		assert.EqualError(t, err, "'credential' parameter is supposed to be a Credentials struct not 'int'")
    40  	})
    41  
    42  	t.Run("Test that wrong credential type fails ", func(t *testing.T) {
    43  		credManagerMock := mocks.CredentialsManager{}
    44  		testCredential := struct{ Secret string }{
    45  			Secret: "Test",
    46  		}
    47  
    48  		credManagerMock.On("Update", ctx, domain, ID, mock.Anything).Return(nil)
    49  		err := UpdateCredential(ctx, &credManagerMock, domain, testCredential)
    50  		credManagerMock.AssertNotCalled(t, "Update", ctx, domain, ID, mock.Anything)
    51  		assert.EqualError(t, err, "'credential' parameter is supposed to be a Credentials struct not 'struct { Secret string }'")
    52  	})
    53  
    54  	t.Run("Test that empty secret id fails ", func(t *testing.T) {
    55  		credManagerMock := mocks.CredentialsManager{}
    56  		testCredential := StringCredentials{ID: "", Secret: testSecret}
    57  
    58  		credManagerMock.On("Update", ctx, domain, ID, mock.Anything).Return(nil)
    59  		err := UpdateCredential(ctx, &credManagerMock, domain, testCredential)
    60  		credManagerMock.AssertNotCalled(t, "Update", ctx, domain, ID, mock.Anything)
    61  		assert.EqualError(t, err, "secret ID should not be empty")
    62  	})
    63  
    64  }