Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions connectorconfig/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ func getCreds(c *connector.Connector, strict bool) (Credentials, error) {
if err != nil {
return credentials, err
}

reader := strings.NewReader(string(c.Configuration))
reader := strings.NewReader(string(c.GetConfigurationJSON()))
dec := json.NewDecoder(reader)
if strict {
dec.DisallowUnknownFields()
Expand Down
5 changes: 1 addition & 4 deletions utils/clean.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,7 @@ func Clean(input []byte, version string, pretty bool) (modified bool, output []b
return
}

c.Configuration, err = json.Marshal(cred)
if err != nil {
return
}
c.Configuration = cred
def.Spec = c
}

Expand Down
37 changes: 30 additions & 7 deletions utils/clean_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,41 +11,53 @@ import (
// TestClean ensures that an additional fields in main struct and serialized config are removed
func TestClean(t *testing.T) {
configuration.Initialise()
rawJson := []byte(`{"Kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","cats":"dogs","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":"eyJhcGlMb2dpbklkIjoiQ0hBTkdFLU1FIiwidHJhbnNhY3Rpb25LZXkiOiJDSEFOR0UtTUUiLCJlbnZpcm9ubWVudCI6InNhbmRib3giLCAiZ2FyeSI6IndhcyBoZXJlIn0="}}`)
rawJson := []byte(`{"Kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","cats":"dogs","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox", "gary":"was here"}}}`)
fmt.Printf("Before %v\n", string(rawJson))
modified, output, err := Clean(rawJson, "v1", false)
fmt.Printf("After %v\nModified: %t, Error: %v\n", string(output), modified, err)
assert.Equal(t, modified, true)
assert.Equal(t, err, nil)
assert.Equal(t, string(output), string([]byte(`{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":"eyJhcGlMb2dpbklkIjoiQ0hBTkdFLU1FIiwidHJhbnNhY3Rpb25LZXkiOiJDSEFOR0UtTUUiLCJlbnZpcm9ubWVudCI6InNhbmRib3gifQ=="}}`)))
assert.Equal(t, string(output), `{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox"}}}`)
}

// test that a good input returns modified = false
func TestCleanNoChanges(t *testing.T) {
configuration.Initialise()
rawJson := []byte(`{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":"eyJhcGlMb2dpbklkIjoiQ0hBTkdFLU1FIiwidHJhbnNhY3Rpb25LZXkiOiJDSEFOR0UtTUUiLCJlbnZpcm9ubWVudCI6InNhbmRib3gifQ=="}}`)
rawJson := []byte(`{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox"}}}`)
fmt.Printf("Before %v\n", string(rawJson))
modified, output, err := Clean(rawJson, "v1", false)
fmt.Printf("After %v\nModified: %t, Error: %v\n", string(output), modified, err)
assert.Equal(t, modified, false)
assert.Equal(t, err, nil)
assert.Equal(t, string(output), string([]byte(`{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":"eyJhcGlMb2dpbklkIjoiQ0hBTkdFLU1FIiwidHJhbnNhY3Rpb25LZXkiOiJDSEFOR0UtTUUiLCJlbnZpcm9ubWVudCI6InNhbmRib3gifQ=="}}`)))
assert.Equal(t, string(output), `{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox"}}}`)
}

// test that a good input in a different order modified = false
func TestCleanReOrder(t *testing.T) {
func TestCleanReOrderB64(t *testing.T) {
configuration.Initialise()
rawJson := []byte(`{"kind":"Connector","metadata":{"name":"change-me","projectId":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":"eyJhcGlMb2dpbklkIjoiQ0hBTkdFLU1FIiwidHJhbnNhY3Rpb25LZXkiOiJDSEFOR0UtTUUiLCJlbnZpcm9ubWVudCI6InNhbmRib3gifQ=="}}`)
fmt.Printf("Before %v\n", string(rawJson))
modified, output, err := Clean(rawJson, "v1", false)
fmt.Printf("After %v\nModified: %t, Error: %v\n", string(output), modified, err)
assert.Equal(t, modified, true)
assert.Equal(t, err, nil)
assert.Equal(t, string(output), `{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox"}}}`)
}

// test that a good input in a different order modified = false
func TestCleanReOrderJson(t *testing.T) {
configuration.Initialise()
rawJson := []byte(`{"kind":"Connector","metadata":{"name":"change-me","projectId":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox"}}}`)
fmt.Printf("Before %v\n", string(rawJson))
modified, output, err := Clean(rawJson, "v1", false)
fmt.Printf("After %v\nModified: %t, Error: %v\n", string(output), modified, err)
assert.Equal(t, modified, false)
assert.Equal(t, err, nil)
assert.Equal(t, string(output), string([]byte(`{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":"eyJhcGlMb2dpbklkIjoiQ0hBTkdFLU1FIiwidHJhbnNhY3Rpb25LZXkiOiJDSEFOR0UtTUUiLCJlbnZpcm9ubWVudCI6InNhbmRib3gifQ=="}}`)))
assert.Equal(t, string(output), `{"kind":"Connector","metadata":{"projectId":"change-me","name":"change-me","displayName":"","description":"","annotations":null,"labels":null,"disabled":false},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox"}}}`)
}

// test for invalid json input
func TestCleanError(t *testing.T) {
func TestCleanErrorB64(t *testing.T) {
configuration.Initialise()
rawJson := []byte(`{"Kind":::"Connector","metadasdfta":{"name":"change-me","displayName":"","description":"","annotaions":null,"labels":null},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":"eyJhcGlMb2dpbklkIjoiQ0hBTkdFLU1FIiwidHJhbnNhY3Rpb25LZXkiOiJDSEFOR0UtTUUiLCJlbnZpcm9ubWVudCI6InNhbmRib3gifQ=="}}`)
fmt.Printf("Before %v\n", string(rawJson))
Expand All @@ -54,3 +66,14 @@ func TestCleanError(t *testing.T) {
assert.Equal(t, modified, false)
assert.NotEqual(t, err, nil)
}

// test for invalid json input
func TestCleanErrorJson(t *testing.T) {
configuration.Initialise()
rawJson := []byte(`{"Kind":::"Connector","metadasdfta":{"name":"change-me","displayName":"","description":"","annotaions":null,"labels":null},"specVersion":"v1","selector":{"priority":50,"expressions":[{"key":"charge.amount.currency","operator":"Equal","conversion":"","values":["GBP"]}]},"spec":{"library":"authorize","configuration":{"apiLoginId":"CHANGE-ME","transactionKey":"CHANGE-ME","environment":"sandbox"}}}`)
fmt.Printf("Before %v\n", string(rawJson))
modified, output, err := Clean(rawJson, "v1", false)
fmt.Printf("After %v\nModified: %t, Error: %v\n", string(output), modified, err)
assert.Equal(t, modified, false)
assert.NotEqual(t, err, nil)
}
49 changes: 25 additions & 24 deletions utils/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,25 +130,25 @@ func Generate(conf Template, version string, pretty bool) ([]byte, error) {
func buildSpec(conf Template) (object.Specification, error) {
switch conf {
case confConnAuthorize:
j, _ := json.Marshal(connectorconfig.AuthorizeCredentials{APILoginID: &chg, TransactionKey: &chg, Environment: "sandbox"})
j := connectorconfig.AuthorizeCredentials{APILoginID: &chg, TransactionKey: &chg, Environment: "sandbox"}
return connector.Connector{Library: string(connectorconfig.LibraryAuthorize), Configuration: j}, nil
case confConnBrainTree:
j, _ := json.Marshal(connectorconfig.BraintreeCredentials{PublicKey: &chg, PrivateKey: &chg, MerchantID: chg, MerchantAccountID: chg, Currency: "USD", Environment: "sandbox"})
j := connectorconfig.BraintreeCredentials{PublicKey: &chg, PrivateKey: &chg, MerchantID: chg, MerchantAccountID: chg, Currency: "USD", Environment: "sandbox"}
return connector.Connector{Library: string(connectorconfig.LibraryBraintree), Configuration: j}, nil
case confConnChargeHive:
j, _ := json.Marshal(connectorconfig.ChargeHiveCredentials{})
j := connectorconfig.ChargeHiveCredentials{}
return connector.Connector{Library: string(connectorconfig.LibraryChargeHive), Configuration: j}, nil
case confConnCyberSource:
j, _ := json.Marshal(connectorconfig.CyberSourceCredentials{MerchantID: chg, TransactionKey: &chg, Environment: "test"})
j := connectorconfig.CyberSourceCredentials{MerchantID: chg, TransactionKey: &chg, Environment: "test"}
return connector.Connector{Library: string(connectorconfig.LibraryCyberSource), Configuration: j}, nil
case confConnMaxMind:
j, _ := json.Marshal(connectorconfig.MaxMindCredentials{AccountID: chg, LicenceKey: &chg, ServiceType: 0})
j := connectorconfig.MaxMindCredentials{AccountID: chg, LicenceKey: &chg, ServiceType: 0}
return connector.Connector{Library: string(connectorconfig.LibraryMaxMind), Configuration: j}, nil
case confConnPayPalExpress:
j, _ := json.Marshal(connectorconfig.PayPalExpressCheckoutCredentials{APIUsername: &chg, APIPassword: &chg, APISignature: &chg, SupportedCurrencies: []string{"USD"}, Environment: "sandbox"})
j := connectorconfig.PayPalExpressCheckoutCredentials{APIUsername: &chg, APIPassword: &chg, APISignature: &chg, SupportedCurrencies: []string{"USD"}, Environment: "sandbox"}
return connector.Connector{Library: string(connectorconfig.LibraryPayPalExpressCheckout), Configuration: j}, nil
case confConnPayPalWPP:
j, _ := json.Marshal(connectorconfig.PayPalWebsitePaymentsProCredentials{
j := connectorconfig.PayPalWebsitePaymentsProCredentials{
APIUsername: &chg,
APIPassword: &chg,
APISignature: &chg,
Expand All @@ -161,10 +161,10 @@ func buildSpec(conf Template) (object.Specification, error) {
CardinalAPIKey: &chg,
CardinalOrgUnitID: &chg,
Environment: "sandbox",
})
}
return connector.Connector{Library: string(connectorconfig.LibraryPayPalWebsitePaymentsPro), Configuration: j}, nil
case confConnPaysafe:
j, _ := json.Marshal(connectorconfig.PaySafeCredentials{
j := connectorconfig.PaySafeCredentials{
Acquirer: chg,
AccountID: chg,
APIUsername: &chg,
Expand All @@ -174,22 +174,23 @@ func buildSpec(conf Template) (object.Specification, error) {
UseVault: new(bool),
SingleUseTokenPassword: new(string),
SingleUseTokenUsername: "",
})
MerchantURL: "https://test.com",
}
return connector.Connector{Library: string(connectorconfig.LibraryPaySafe), Configuration: j}, nil
case confConnQualPay:
j, _ := json.Marshal(connectorconfig.QualpayCredentials{APIKey: &chg, MerchantID: 1, Environment: "test"})
j := connectorconfig.QualpayCredentials{APIKey: &chg, MerchantID: 1, Environment: "test"}
return connector.Connector{Library: string(connectorconfig.LibraryQualPay), Configuration: j}, nil
case confConnSandbox:
j, _ := json.Marshal(connectorconfig.SandboxCredentials{Mode: "dynamic"})
j := connectorconfig.SandboxCredentials{Mode: "dynamic"}
return connector.Connector{Library: string(connectorconfig.LibrarySandbox), Configuration: j}, nil
case confConnStripe:
j, _ := json.Marshal(connectorconfig.StripeCredentials{APIKey: &chg})
j := connectorconfig.StripeCredentials{APIKey: &chg}
return connector.Connector{Library: string(connectorconfig.LibraryStripe), Configuration: j}, nil
case confConnVindicia:
j, _ := json.Marshal(connectorconfig.VindiciaCredentials{Login: chg, Password: &chg, HMACKey: &chg, PGPPrivateKey: &chg, Environment: "development", ConnectorPool: []connectorconfig.ConnectorAttempt{{ConnectorID: "", DivisionNumber: "", Weight: 0}}})
j := connectorconfig.VindiciaCredentials{Login: chg, Password: &chg, HMACKey: &chg, PGPPrivateKey: &chg, Environment: "development", ConnectorPool: []connectorconfig.ConnectorAttempt{{ConnectorID: "", DivisionNumber: "", Weight: 0}}}
return connector.Connector{Library: string(connectorconfig.LibraryVindicia), Configuration: j}, nil
case confConnWorldPay:
j, _ := json.Marshal(connectorconfig.WorldpayCredentials{
j := connectorconfig.WorldpayCredentials{
Username: &chg,
Password: &chg,
MerchantID: chg,
Expand Down Expand Up @@ -225,36 +226,36 @@ func buildSpec(conf Template) (object.Specification, error) {
GoogleCardGateway: connectorconfig.GoogleCardGatewayVANTIV,
GoogleCardMerchantId: chg,
},
})
}

return connector.Connector{Library: string(connectorconfig.LibraryWorldpay), Configuration: j}, nil
case confClearhaus:
j, _ := json.Marshal(connectorconfig.ClearhausCredentials{
j := connectorconfig.ClearhausCredentials{
APIKey: chg,
Environment: connectorconfig.ClearhausEnvironmentTest,
})
}
return connector.Connector{Library: string(connectorconfig.LibraryClearhaus), Configuration: j}, nil
case confTrustPayments:
j, _ := json.Marshal(connectorconfig.TrustPaymentsCredentials{
j := connectorconfig.TrustPaymentsCredentials{
Username: chg,
Password: chg,
SiteRef: chg,
Region: connectorconfig.TrustPaymentsRegionUS,
Environment: connectorconfig.TrustPaymentsEnvironmentTest,
})
}
return connector.Connector{Library: string(connectorconfig.LibraryTrustPayments), Configuration: j}, nil
case confCWAMS:
j, _ := json.Marshal(connectorconfig.CWAMSCredentials{
j := connectorconfig.CWAMSCredentials{
SecurityKey: chg,
TestMode: true,
})
}
return connector.Connector{Library: string(connectorconfig.LibraryCWAMS), Configuration: j}, nil
case confYapstone:
j, _ := json.Marshal(connectorconfig.YapstoneCredentials{
j := connectorconfig.YapstoneCredentials{
ClientID: chg,
ClientSecret: chg,
Environment: connectorconfig.YapstoneEnvironmentTest,
})
}
return connector.Connector{Library: string(connectorconfig.LibraryYapstone), Configuration: j}, nil
case confConnectorPool:
return connector.Pool{Restriction: "unrestricted", Connectors: []connector.PoolItem{{ConnectorID: chg}}}, nil
Expand Down
Loading