github.com/prebid/prebid-server/v2@v2.18.0/experiment/adscert/remotesigner_test.go (about)

     1  package adscert
     2  
     3  import (
     4  	"github.com/stretchr/testify/assert"
     5  	"testing"
     6  )
     7  
     8  func TestRemoteSigner(t *testing.T) {
     9  	type aTest struct {
    10  		desc              string
    11  		generateError     bool
    12  		operationStatusOk bool
    13  	}
    14  	testCases := []aTest{
    15  		{
    16  			desc:              "generate signer error",
    17  			generateError:     true,
    18  			operationStatusOk: false,
    19  		},
    20  		{
    21  			desc:              "generate valid response without signature operation error",
    22  			generateError:     false,
    23  			operationStatusOk: true,
    24  		},
    25  		{
    26  			desc:              "generate valid response with signature operation error",
    27  			generateError:     false,
    28  			operationStatusOk: false,
    29  		},
    30  	}
    31  
    32  	for _, test := range testCases {
    33  		signatory := &MockLocalAuthenticatedConnectionsSignatory{
    34  			returnError:       test.generateError,
    35  			operationStatusOk: test.operationStatusOk,
    36  		}
    37  		signer := &remoteSigner{signatory: signatory}
    38  		signatureMessage, err := signer.Sign("http://test.com", []byte{})
    39  		if test.generateError {
    40  			assert.EqualError(t, err, "Test error", "incorrect error returned for test: %s", test.desc)
    41  		} else {
    42  			if test.operationStatusOk {
    43  				assert.NoError(t, err, "incorrect result for test: %s", test.desc)
    44  				assert.Equal(t, "Success", signatureMessage, "incorrect message returned for test: %s", test.desc)
    45  			} else {
    46  				assert.EqualError(t, err, "error signing request: SIGNATURE_OPERATION_STATUS_UNDEFINED", "incorrect error type returned for test: %s", test.desc)
    47  			}
    48  		}
    49  	}
    50  }