I think that your continuing problems stem from what you're returning from your response
method. This worked for me:
$httpBackend.when('PUT','/v1/token/')
.respond(function(method, url, data, headers) {
var validLogin = {
'domain' : 'farmers',
'username' : 'user',
'password' : 'test'
};
if ( data !== JSON.stringify(validLogin)) {
return [400, {failure: 'bad'}]
} else {
return [200, {token: '12345'}]
}
});
Notice how I'm returning an array of values (described in docs).
Working Plunker (test passes whether token is returned or not - you need to look at console)