diff --git a/cloudron.js b/cloudron.js index be41516..6036187 100644 --- a/cloudron.js +++ b/cloudron.js @@ -24,7 +24,7 @@ function Cloudron(box) { } function verifyResponse(res, errorMessage) { - if (res.statusCode < 200 || res.statusCode > 299) { + if (res.statusCode < 200 || res.statusCode > 399) { debug('Response error statusCode:%s error:%s body:%s', res.statusCode, res.error, res.body); debug(errorMessage.red); throw new Error(errorMessage); @@ -47,21 +47,25 @@ Cloudron.prototype.getOauthToken = function (user) { res = request.get(this._origin + urlp.pathname).set('cookie', sessionCookies[0]).query(urlp.query).end(); var csrf = res.text.match(/name="_csrf" value="(.*)"/)[1]; sessionCookies = res.headers['set-cookie']; // always an array + assert.notStrictEqual(sessionCookies.length, 0); ////////// submit the login form with credentials res = request.post(this._origin + urlp.pathname).set('cookie', sessionCookies[0]).send({ _csrf: csrf, username: username, password: password }).redirects(0).end(); if (res.statusCode !== 302) return null; sessionCookies = res.headers['set-cookie']; // always an array + assert.notStrictEqual(sessionCookies.length, 0); ////////// authorize now with cookies res = request.get(this._origin + '/api/v1/oauth/dialog/authorize').set('cookie', sessionCookies[0]).query({ redirect_uri: 'https://self', client_id: 'cid-webadmin', response_type: 'token', scope: 'root,profile,apps,roleAdmin' }).redirects(0).end(); - if (res.statusCode !== 302) return null; + verifyResponse(res, 'Unable to authorize'); + assert.strictEqual(res.statusCode, 302); sessionCookies = res.headers['set-cookie']; // always an array + assert.notStrictEqual(sessionCookies.length, 0); ////////// success will get redirect to callback?redirectURI=xx#access_token=yy&token_type=Bearer' (content is a