Rafał Pitoń 10 лет назад
Родитель
Сommit
e028e271c2

+ 15 - 0
misago/emberapp/app/initializers/dev-csrf-tokens.js

@@ -0,0 +1,15 @@
+import Ember from 'ember';
+import getCsrfToken from 'misago/utils/csrf';
+import ENV from '../config/environment';
+
+export function initialize() {
+  if (ENV.environment !== 'production') {
+    // set CSRF tokens on preloaded forms
+    Ember.$('input[name=csrfmiddlewaretoken]').val(getCsrfToken());
+  }
+}
+
+export default {
+  name: 'dev-csrf-tokens',
+  initialize: initialize
+};

+ 45 - 0
misago/emberapp/tests/unit/initializers/dev-csrf-tokens-test.js

@@ -0,0 +1,45 @@
+import Ember from 'ember';
+import { initialize } from '../../../initializers/dev-csrf-tokens';
+import MisagoPreloadStore from '../../../utils/preloadstore';
+import { module, test } from 'qunit';
+
+var container, application;
+
+var cookieName = MisagoPreloadStore.get('csrfCookieName');
+
+var testCookieName = 'devcsrftokenCookie';
+var testCookieValue = 't3stW0rk5';
+
+var $element = null;
+
+module('devCsrfTokensInitializer', {
+  beforeEach: function() {
+    // assert csrf token exists:
+    MisagoPreloadStore.set('csrfCookieName', testCookieName);
+    document.cookie = testCookieName + '=' + testCookieValue + ';';
+
+    // set test element
+    $element = Ember.$('<input type="hidden" name="csrfmiddlewaretoken">');
+    Ember.$('#ember-testing').append($element);
+
+    // prepare app
+    Ember.run(function() {
+      application = Ember.Application.create();
+      container = application.__container__;
+      application.deferReadiness();
+    });
+  },
+  afterEach: function() {
+    MisagoPreloadStore.set('csrfCookieName', cookieName);
+    $element.remove();
+  }
+});
+
+test('sets tokens on predefined forms', 1, function(assert) {
+  var done = assert.async();
+  Ember.run(function() {
+    initialize();
+    assert.equal($element.val(), testCookieValue);
+    done();
+  });
+});