2017-05-30 3 views
1

Der Versuch, die Inkonsistenz in der Antwort zwischen der Verwendung meiner API gegen ember-cli-mirage zu verstehen.ember-cli-mirage Response-Header fehlen im XHR-Objekt

Ich habe einen Handler, der auf eine Antwort auf eine POST-Anfrage wartet, um einen Benutzer zu authentifizieren. Die erwarteten Parameter für die Handler sind response, status und xhr:

(z.B. .then(function(response, status, xhr) {...}).

Mit meiner API bekomme ich, was ich erwarten würde - Antwort ist die Daten, Status ist der StatusText und xhr ist das XHR-Objekt. Bei Verwendung von ember-cli-mirage kommt jedoch alles unter eine Antwort (Art) und Status und xhr sind beide undefiniert.

Snippets meines Codes sind unter:

mirage/config.js

this.post(URI.AUTH_SIGN_IN, function(db, request) { 
    const responseHeaders = { 
    'access-token': 'abcxyz123', 
    'client': 'foobarbaz', 
    'token-type': 'Bearer', 
    'expiry': '1497364419', 
    'uid': '[email protected]' 
    }; 

    const user = { 
    data: { id: 1, type: 'user', attributes: { uid: '[email protected]', email: '[email protected]', name: 'John Doe', provider: 'email' } } 
    }; 

    return new Mirage.Response(200, responseHeaders, user); 
}); 

authenticators/devise.js

authenticate(identification, password) { 
    ... 
    this.makeRequest(credentials).then(function(response, status, xhr) { 
    // persists the five headers needed to send to devise-token-auth 
    // with mirage; response = Response {type: "default", status: 200, ok: true, statusText: "OK", headers: Headers…}, status = undefined, xhr = undefined 
    // with actual api; response = Object {data: Object}, status = "success", xhr = Object {readyState: 4, getResponseHeader: function, getAllResponseHeaders: function…} 

    // As a result below will fail :( 
    // TypeError: Cannot read property 'getResponseHeader' of undefined 
    var result = { 
     'access-token': xhr.getResponseHeader('access-token'), 
     expiry:   xhr.getResponseHeader('expiry'), 
     tokenType:  xhr.getResponseHeader('token-type'), 
     uid:   xhr.getResponseHeader('uid'), 
     client:   xhr.getResponseHeader('client') 
     }; 
    }); 
} 

Ich glaube, ich es tue, alles richtig, aber ich habe gewusst, dass ich falsch liege :). Jede Hilfe wird sehr geschätzt.

+0

Irgendwelche Neuigkeiten auf diesem @ TomDoe? –

Antwort

0

Hm, ich bin mir nicht sicher, warum makeRequest undefined für das zweite und dritte params zurückgibt.

machte ich eine einfache Twiddle und die args richtig scheinen für getJSON:

https://ember-twiddle.com/70229e352f37b4e437ced8509a4415d9?openFiles=routes.application.js%2C

model() { 
    return Ember.$.getJSON('/foo').then((data, response, object) => { 
    return object.getAllResponseHeaders(); 
    }); 
} 

kann es mit etwas etwas anders sein, wie Pretender die verspottete Antwort oder iwth wie makeRequest Arbeiten behandelt, so dass ich Ich schlage vor, dort zu suchen.

+0

Sieht aus, als wäre es ein Ergebnis von 'ember-fetch' https://github.com/simplabs/ember-simple-auth/blob/1.3.0/addon/authenticators/devise.js#L202. @marcoow weißt du, ob das der Schuldige sein könnte? Auch hier wird jede Hilfe sehr geschätzt, Leute. Danke –

Verwandte Themen