Rails-csrf and ember-cli integration tests


#1

We are using rails-csrf in our ember-cli app. The README on rails-csrf says:

Be sure to mock out the call to the csrf server endpoint. Otherwise your tests will fail with

"error while processing route: [route]"

messages in the browser console. For example:

server = new Pretender(function() {
  this.get('/csrf', function(request) {
    return [200, {"Content-Type": "application/json"},
      JSON.stringify({
        "authenticity_token": "token"
      })
    ];
  });
});

I understand the problem here (our integration tests are indeed showing this error) and I understand how Pretender solves it. I’ve got Pretender installed via ember-cli-pretender. What I don’t understand is how this code snippet - configuration for a Pretender mock - should be included to be useful. Should it go in the setup hook of an integration test? (I’ve tried that, and it hasn’t worked yet, but that doesn’t mean it won’t.) Should it go in tests/helpers/start-app.js along with the integration test setup? Should I throw up my hands and use ember-pretenderify, or will that be equally impenetrable?


#2

If you want some reputation for answering this, I’ve posted the question on Stack Overflow.


#3

I’ve debugged this to the point that I see the mock working correctly (i.e. Pretender is doing its job). If there’s a problem, it’s must be in what the mock returns.

What that means - my best guess - is that either that rails-csrf doesn’t like the token (possible), or that the promise returned from the Pretender mock is either not resolving or not resolvable. I’m not really sure how to pursue either of those possibilities.