github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/Factory_test.go (about)

     1  package connectsdk
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/Ingenico-ePayments/connect-sdk-go/configuration"
     8  	"github.com/Ingenico-ePayments/connect-sdk-go/defaultimpl"
     9  )
    10  
    11  var apiKeyID = "someKey"
    12  var secretAPIKey = "someSecret"
    13  
    14  func TestCreateConfiguration(t *testing.T) {
    15  	defaultConfiguration := configuration.DefaultConfiguration(apiKeyID, secretAPIKey, "Test")
    16  
    17  	configuration, err := CreateConfiguration(apiKeyID, secretAPIKey, "Test")
    18  	if err != nil {
    19  		t.Fatalf("TestCreateConfiguration: %v", err)
    20  	}
    21  
    22  	if configuration.APIEndpoint != defaultConfiguration.APIEndpoint {
    23  		t.Fatalf("TestCreateConfiguration: APIEndpoint mismatch %v %v",
    24  			configuration.APIEndpoint, defaultConfiguration.APIEndpoint)
    25  	}
    26  
    27  	if configuration.AuthorizationType != defaultConfiguration.AuthorizationType {
    28  		t.Fatalf("TestCreateConfiguration: AuthorizationType mismatch %v %v",
    29  			configuration.AuthorizationType, defaultConfiguration.AuthorizationType)
    30  	}
    31  
    32  	if configuration.IdleTimeout != defaultConfiguration.IdleTimeout {
    33  		t.Fatalf("TestCreateConfiguration: IdleTimeout mismatch %v %v",
    34  			configuration.IdleTimeout, defaultConfiguration.IdleTimeout)
    35  	}
    36  
    37  	if configuration.ConnectTimeout != defaultConfiguration.ConnectTimeout {
    38  		t.Fatalf("TestCreateConfiguration: ConnectTimeout mismatch %v %v",
    39  			configuration.ConnectTimeout, defaultConfiguration.ConnectTimeout)
    40  	}
    41  
    42  	if configuration.SocketTimeout != defaultConfiguration.SocketTimeout {
    43  		t.Fatalf("TestCreateConfiguration: SocketTimeout mismatch %v %v",
    44  			configuration.SocketTimeout, defaultConfiguration.SocketTimeout)
    45  	}
    46  
    47  	if configuration.MaxConnections != defaultConfiguration.MaxConnections {
    48  		t.Fatalf("TestCreateConfiguration: MaxConnections mismatch %v %v",
    49  			configuration.MaxConnections, defaultConfiguration.MaxConnections)
    50  	}
    51  
    52  	if configuration.APIKeyID != apiKeyID {
    53  		t.Fatalf("TestCreateConfiguration: APIKeyID mismatch %v %v",
    54  			configuration.APIKeyID, apiKeyID)
    55  	}
    56  
    57  	if configuration.SecretAPIKey != secretAPIKey {
    58  		t.Fatalf("TestCreateConfiguration: SecretAPIKey mismatch %v %v",
    59  			configuration.SecretAPIKey, secretAPIKey)
    60  	}
    61  }
    62  
    63  func TestCreateCommunicator(t *testing.T) {
    64  	marshaller, _ := defaultimpl.NewDefaultMarshaller()
    65  
    66  	communicator, err := CreateCommunicator(apiKeyID, secretAPIKey, "Test")
    67  	if err != nil {
    68  		t.Fatalf("TestCreateCommunicator: %v", err)
    69  	}
    70  	if communicator.Marshaller() != marshaller {
    71  		t.Fatalf("TestCreateCommunicator: marshaller mismatch %v %v",
    72  			communicator.Marshaller(), marshaller)
    73  	}
    74  
    75  	session := communicator.Session()
    76  
    77  	connection := session.Connection()
    78  	if _, isDefaultConnection := connection.(*defaultimpl.DefaultConnection); !isDefaultConnection {
    79  		t.Fatalf("TestCreateCommunicator: connection type mismatch %T", connection)
    80  	}
    81  
    82  	authenticator := session.Authenticator()
    83  	if _, isDefaultAuthenticator := authenticator.(*defaultimpl.DefaultAuthenticator); !isDefaultAuthenticator {
    84  		t.Fatalf("TestCreateCommunicator: authenticator type mismatch %T", authenticator)
    85  	}
    86  
    87  	authAuthType := reflect.Indirect(reflect.ValueOf(authenticator)).FieldByName("authType").String()
    88  	if authAuthType != defaultimpl.V1HMAC {
    89  		t.Fatalf("TestCreateCommunicator: auth type mismatch %v", authAuthType)
    90  	}
    91  	authAPIKeyID := reflect.Indirect(reflect.ValueOf(authenticator)).FieldByName("apiKeyID").String()
    92  	if authAPIKeyID != apiKeyID {
    93  		t.Fatalf("TestCreateCommunicator: apiKeyID mismatch %v", authAPIKeyID)
    94  	}
    95  	authSecretAPIKey := reflect.Indirect(reflect.ValueOf(authenticator)).FieldByName("secretAPIKey").String()
    96  	if authSecretAPIKey != secretAPIKey {
    97  		t.Fatalf("TestCreateCommunicator: secretAPIKey mismatch %v", authSecretAPIKey)
    98  	}
    99  
   100  	metaDataProvider := session.MetaDataProvider()
   101  	headers := metaDataProvider.MetaDataHeaders()
   102  	if len(headers) != 1 {
   103  		t.Fatalf("TestCreateCommunicator: headers len mismatch %v", len(headers))
   104  	}
   105  	if headers[0].Name() != "X-GCS-ServerMetaInfo" {
   106  		t.Fatalf("TestCreateCommunicator: header name mismatch %v", headers[0].Name())
   107  	}
   108  }