describe('success', function() {
          shared.shouldBehaveLike(GatewayName + ' success JSON response');
          shared.shouldBehaveLike(GatewayName + ' success with unexpected data');
          shared.shouldBehaveLike(GatewayName + ' success with processor');

          describe('with body data', function() {
            it('includes the formatted body to the request', function(done) {
              var body = {val1: 1, val2: 2};
              var bodyData = Utils.params(body);

              makeRequest({
                status: 200,
                rawData: 'OK',
                gateway: newGateway({body: body}),
                assertBodyData: bodyData,
                assertHeader: {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'}
              }, done);
            });

            it('prioritizes user-defined Content-Type header', function(done) {
              var body = {val1: 1, val2: 2};
              var headers = {'Content-Type': 'text/plain;charset=utf-8'}
              var bodyData = Utils.params(body);

              makeRequest({
                status: 200,
                rawData: 'OK',
                gateway: newGateway({body: body, opts: {headers: headers}}),
                assertHeader: headers
              }, done);
            });

            it('accepts the lowercase variation of Content-Type', function(done) {
              var body = {val1: 1, val2: 2};
              var headers = {'content-type': 'text/plain;charset=utf-8'}
              var bodyData = Utils.params(body);

              makeRequest({
                status: 200,
                rawData: 'OK',
                gateway: newGateway({body: body, opts: {headers: headers}}),
                assertHeader: {'Content-Type': 'text/plain;charset=utf-8'}
              }, done);
            });
          });
        });
 describe('fail', function() {
   shared.shouldBehaveLike(GatewayName + ' fail response');
   shared.shouldBehaveLike(GatewayName + ' fail with processor');
 });
 describe('success', function() {
   shared.shouldBehaveLike(GatewayName + ' success JSON response');
   shared.shouldBehaveLike(GatewayName + ' success with unexpected data');
   shared.shouldBehaveLike(GatewayName + ' success with processor');
 });