Commit cb7c1a7c authored by Robert Knight's avatar Robert Knight

Fix error in session.js when an /app request fails

When a request to the session endpoint fails with a network
error, avoid trying to parse the response in process()
parent bf029587
......@@ -154,8 +154,11 @@ function session($http, $resource, $rootScope, flash, raven, settings) {
return model;
};
function process(data) {
// Parse as json
function process(data, headersGetter, status) {
if (status < 200) {
return;
}
data = angular.fromJson(data);
// Lift response data
......
"use strict";
var mock = angular.mock;
var angular = require('angular');
var events = require('../events');
var mock = angular.mock;
describe('h:session', function () {
var $httpBackend;
var $rootScope;
var fakeFlash;
var fakeRaven;
var fakeXsrf;
var sandbox;
var session;
......@@ -50,7 +51,7 @@ describe('h:session', function () {
// There's little point testing every single route here, as they're
// declarative and ultimately we'd be testing ngResource.
describe('.login()', function () {
describe('#login()', function () {
var url = 'https://test.hypothes.is/app?__formid__=login';
it('should send an HTTP POST to the action', function () {
......@@ -129,7 +130,7 @@ describe('h:session', function () {
});
});
describe('.load()', function () {
describe('#load()', function () {
var url = 'https://test.hypothes.is/app';
it('should fetch the session data', function () {
......@@ -157,9 +158,15 @@ describe('h:session', function () {
session.load();
$httpBackend.flush();
});
it('should tolerate failed requests', function () {
$httpBackend.expectGET(url).respond(-1, null);
session.load();
$httpBackend.flush();
});
});
describe('.update()', function () {
describe('#update()', function () {
it('broadcasts SESSION_CHANGED when the session changes', function () {
var sessionChangeCallback = sinon.stub();
......@@ -220,7 +227,7 @@ describe('h:session', function () {
});
});
describe('.dismiss_sidebar_tutorial()', function () {
describe('#dismiss_sidebar_tutorial()', function () {
var url = 'https://test.hypothes.is/app/dismiss_sidebar_tutorial';
it('disables the tutorial for the user', function () {
$httpBackend.expectPOST(url).respond({});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment