Introducing Cayan's Test Processor

Mock objects and simulators play a big role in software development at Cayan. In our development and test environments, it allows us to decouple our test cases from 3rd party dependencies, such as other credit, debit, gift, or loyalty networks.

This is useful for a number of reasons:
  • Our partners’ test systems aren’t always online. These systems don’t always have the same uptime and SLAs as their production equivalents.
  • The test accounts and test cards aren’t always in a known good state. Sometimes, a gift card might have $2 on it. Other times, it might have $0 on it. This makes a big difference if you want to test that you can perform a $1 redemption on the card.
  • Issues with running tests concurrently. If two different teams are running tests at the same time, it’s really easy for tests to fail because they share a single test account or test cards. A great example is a test that adds $1 to a newly activated gift card, and then does a balance inquiry to check that the card has $1 in stored value on it. If a second test being run by a second team was performing a $1 redemption on the card in between your “add value” and “balance inquiry” calls, your tests are going to fail due to a race condition.
  • Certain tests are hard to setup or reproduce. For example, it’s not always easy or possible to simulate high latency, packet loss, or a network outage, though tools like clumsy can help.
One of the tools we’ve built simulates a payment processor, such as First Data or Elavon, unimaginatively referred to as our “Test Processor”. Cayan's Test Processor triggers specific responses based on the criteria submitted in your transactions (eg. card number or dollar amount), allowing specific test cases to work uniformly across all of our products.

Today, Cayan’s test processor supports over 45 test cases including:
  • MSR credit (sales, repeat sales, partial authorizations, auth + capture)
  • MSR PIN debit
  • EMV debit & credit
  • FSA
  • Refunds
  • A number of negative test cases (eg. host communication errors, referrals, timeouts)
(the full list of supported transactions can be found in our knowledge base)

We’ve built our test processor’s capabilities to the point where our Integrations Team can perform all of our partner certifications against it. For our partners, this means that it’s now easy to perform a number of test transactions that were difficult before, such as FSA, EMV, and PIN debit. Cayan will be distributing a set of test cards to our partners as they begin their integration efforts.

This sort of tool is a powerful building block, and it’s no surprise that other groups are finding uses for it within Cayan:
  • Our Network Operations Center is using it to author synthetic transactions. This allows us to definitively monitor our uptime and SLAs.
  • Our developer self-registration program. New developer accounts are boarded to this test processor.
  • Our Bug Bounty Program. The test processor allows us to board penetration testers to a sandboxed environment.
  • Our performance testing efforts, allowing us to simulate authorizations and latency without having to set up any additional mock/simulator infrastructure.