ember-simple-auth qunit test с помощью jquery mockjax

Я использую ember-simple-auth в своем приложении. Для моего теста я использую QUnit вместе с jquery-mockjax. Но я не сдал тест, login with correct credentials, чтобы работать с насмешливым ответом. Если я не издевался, тест ниже работает. Поддельный ответ выглядит точно так же, как ответ сервера.

Мой вопрос, как я должен издеваться над ответом на ember-simple-auth?

test "with correct credentials", ->
  expect(2)

  response = 
    access_token : "92d50f562503e40fe783c2ebf359e0c2b37fa80758e2e3603d7e3e82a485522a"
    expires_in : 7200
    token_type : "bearer"

  # if I remove the following line, the test works
  mock_http('/oauth/token', response, 200)

  visit("login")
  .fillIn('#identification', 'test@test.de')
  .fillIn('#password', 'tester')
  .click('.btn-success').then ->
    ok(find("a:contains('Logout')").length, 'logout link not visible')
      ok(not find("a:contains('Login')").length, 'login link still visible')

следующий тест также работает с насмешкой:

test "with wrong credentials", ->
  expect(2)

  response = 
    error : 'some error occured'

  mock_http('/oauth/token', response, 401)

  visit("login")
  .fillIn('#identification', 'test')
  .fillIn('#password', 'wrong')
  .click('.btn-success').then ->
    ok(not find("a:contains('Logout')").length, 'logout link not visible')
    ok(find("a:contains('Login')").length, 'login link still visible')

РЕДАКТИРОВАТЬ:

После jsBin это показывает проблему: http://jsbin.com/ASaSaRiX/6/edit

3 ответа

Решение

Проблема вызвана конфликтом версий jQuery с mockjax. С помощью Marcoow я нашел этот вопрос stackru. С jQuery < 1.10 это работает. Ммм... это нехорошо.

Кстати работающий jsBin: http://jsbin.com/ASaSaRiX/11

РЕДАКТИРОВАТЬ: Вы можете найти более подробную информацию здесь. Проблема вызвана изменением в jQuery.

@marcoow: одно из исправлений - добавить dataType: 'json' к параметрам запроса Ember.SimpleAuth. Может быть, у вас есть время взглянуть на информацию, приведенную в ссылке выше.

Я автор Ember.SimpleAuth.

Вы сконфигурировали Ember.SimpleAuth для использования '/oauth/token' в качестве конечной точки токена? В противном случае он использовал бы "/ token" в качестве конечной точки сервера, чтобы ваш макет не имел никакого эффекта.

Ваша неопределенность в первом блоке кода, похоже, не верна. Это должно читаться так: (обратите внимание на изменение отступа на mock_http линия)

test "with correct credentials", ->
  expect(2)

  response = 
    access_token : "92d50f562503e40fe783c2ebf359e0c2b37fa80758e2e3603d7e3e82a485522a"
    expires_in : 7200
    token_type : "bearer"

  # if I remove the following line, the test works
  mock_http('/oauth/token', response, 200)

  visit("login")
  fillIn('#identification', 'test@test.de')
  fillIn('#password', 'tester')
  click('.btn-success').then ->
    ok(find("a:contains('Logout')").length, 'logout link not visible')
    ok(not find("a:contains('Login')").length, 'login link still visible')
Другие вопросы по тегам