Skip to content

Commit

Permalink
fix(drivers): set token expiration to null when doesn't exists
Browse files Browse the repository at this point in the history
fixes #47
  • Loading branch information
hugomarisco authored and thetutlage committed Mar 4, 2018
1 parent 0ec3b35 commit 404d090
Show file tree
Hide file tree
Showing 6 changed files with 169 additions and 5 deletions.
4 changes: 3 additions & 1 deletion src/Drivers/Facebook.js
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@ class Facebook extends OAuth2Scheme {
const user = new AllyUser()
const avatarUrl = `${this.baseUrl}/${userProfile.id}/picture?type=normal`

const accessTokenExpiration = _.get(accessTokenResponse, 'result.expires_in', null)

/**
* Build user
*/
Expand All @@ -255,7 +257,7 @@ class Facebook extends OAuth2Scheme {
accessTokenResponse.accessToken,
accessTokenResponse.refreshToken,
null,
Number(_.get(accessTokenResponse, 'result.expires'))
accessTokenExpiration && Number(accessTokenExpiration)
)

return user
Expand Down
4 changes: 3 additions & 1 deletion src/Drivers/Foursquare.js
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ class Foursquare extends OAuth2Scheme {

const user = new AllyUser()

const accessTokenExpiration = _.get(accessTokenResponse, 'result.expires_in', null)

user
.setOriginal(userProfile)
.setFields(
Expand All @@ -186,7 +188,7 @@ class Foursquare extends OAuth2Scheme {
accessTokenResponse.accessToken,
accessTokenResponse.refreshToken,
null,
Number(_.get(accessTokenResponse, 'result.expires'))
accessTokenExpiration && Number(accessTokenExpiration)
)

return user
Expand Down
4 changes: 3 additions & 1 deletion src/Drivers/Github.js
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@ class Github extends OAuth2Scheme {

const user = new AllyUser()

const accessTokenExpiration = _.get(accessTokenResponse, 'result.expires_in', null)

user
.setOriginal(userProfile)
.setFields(
Expand All @@ -266,7 +268,7 @@ class Github extends OAuth2Scheme {
accessTokenResponse.accessToken,
accessTokenResponse.refreshToken,
null,
Number(_.get(accessTokenResponse, 'result.expires_in'))
accessTokenExpiration && Number(accessTokenExpiration)
)
return user
}
Expand Down
4 changes: 3 additions & 1 deletion src/Drivers/Google.js
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,8 @@ class Google extends OAuth2Scheme {

const user = new AllyUser()

const accessTokenExpiration = _.get(accessTokenResponse, 'result.expires_in', null)

user
.setOriginal(userProfile)
.setFields(
Expand All @@ -217,7 +219,7 @@ class Google extends OAuth2Scheme {
accessTokenResponse.accessToken,
accessTokenResponse.refreshToken,
null,
Number(_.get(accessTokenResponse, 'result.expires_in'))
accessTokenExpiration && Number(accessTokenExpiration)
)
return user
}
Expand Down
4 changes: 3 additions & 1 deletion src/Drivers/LinkedIn.js
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,8 @@ class LinkedIn extends OAuth2Scheme {

const user = new AllyUser()

const accessTokenExpiration = _.get(accessTokenResponse, 'result.expires_in', null)

user
.setOriginal(userProfile)
.setFields(
Expand All @@ -248,7 +250,7 @@ class LinkedIn extends OAuth2Scheme {
accessTokenResponse.accessToken,
accessTokenResponse.refreshToken,
null,
Number(_.get(accessTokenResponse, 'result.expires_in'))
accessTokenExpiration && Number(accessTokenExpiration)
)

return user
Expand Down
154 changes: 154 additions & 0 deletions test/drivers.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,34 @@ test.group('Oauth Drivers | Google', function () {
const redirectToUrl = await google.getRedirectUrl(['foo'])
assert.equal(redirectToUrl, providerUrl)
})

test('should set expires_in to null if not provided', async function (assert) {
const google = new Google(config)

// Mock getAccessToken
google.getAccessToken = () => ({})

// Mock _getUserProfile
google._getUserProfile = () => ({})

const user = await google.getUser({ code: '12345' })

assert.equal(user.getExpires(), null)
})

test('should correctly parse a valid expires_in', async function (assert) {
const google = new Google(config)

// Mock getAccessToken
google.getAccessToken = () => ({ result: { expires_in: '12345' } })

// Mock _getUserProfile
google._getUserProfile = () => ({})

const user = await google.getUser({ code: '12345' })

assert.equal(user.getExpires(), 12345)
})
})

test.group('Oauth Drivers | Facebook', function () {
Expand Down Expand Up @@ -137,6 +165,34 @@ test.group('Oauth Drivers | Facebook', function () {
const redirectToUrl = await facebook.getRedirectUrl(['foo'])
assert.equal(redirectToUrl, providerUrl)
})

test('should set expires_in to null if not provided', async function (assert) {
const facebook = new Facebook(config)

// Mock getAccessToken
facebook.getAccessToken = () => ({})

// Mock _getUserProfile
facebook._getUserProfile = () => ({})

const user = await facebook.getUser({ code: '12345' })

assert.equal(user.getExpires(), null)
})

test('should correctly parse a valid expires_in', async function (assert) {
const facebook = new Facebook(config)

// Mock getAccessToken
facebook.getAccessToken = () => ({ result: { expires_in: '12345' } })

// Mock _getUserProfile
facebook._getUserProfile = () => ({})

const user = await facebook.getUser({ code: '12345' })

assert.equal(user.getExpires(), 12345)
})
})

test.group('Oauth Drivers | Github', function () {
Expand Down Expand Up @@ -196,6 +252,34 @@ test.group('Oauth Drivers | Github', function () {
const redirectToUrl = await github.getRedirectUrl(['foo'])
assert.equal(redirectToUrl, providerUrl)
})

test('should set expires_in to null if not provided', async function (assert) {
const github = new Github(config)

// Mock getAccessToken
github.getAccessToken = () => ({})

// Mock _getUserProfile
github._getUserProfile = () => ({})

const user = await github.getUser({ code: '12345' })

assert.equal(user.getExpires(), null)
})

test('should correctly parse a valid expires_in', async function (assert) {
const github = new Github(config)

// Mock getAccessToken
github.getAccessToken = () => ({ result: { expires_in: '12345' } })

// Mock _getUserProfile
github._getUserProfile = () => ({})

const user = await github.getUser({ code: '12345' })

assert.equal(user.getExpires(), 12345)
})
})

test.group('Oauth Drivers | LinkedIn', function () {
Expand Down Expand Up @@ -255,6 +339,34 @@ test.group('Oauth Drivers | LinkedIn', function () {
const redirectToUrl = await linkedin.getRedirectUrl(['foo'])
assert.equal(redirectToUrl, providerUrl)
})

test('should set expires_in to null if not provided', async function (assert) {
const linkedin = new LinkedIn(config)

// Mock getAccessToken
linkedin.getAccessToken = () => ({})

// Mock _getUserProfile
linkedin._getUserProfile = () => ({})

const user = await linkedin.getUser({ code: '12345' })

assert.equal(user.getExpires(), null)
})

test('should correctly parse a valid expires_in', async function (assert) {
const linkedin = new LinkedIn(config)

// Mock getAccessToken
linkedin.getAccessToken = () => ({ result: { expires_in: '12345' } })

// Mock _getUserProfile
linkedin._getUserProfile = () => ({})

const user = await linkedin.getUser({ code: '12345' })

assert.equal(user.getExpires(), 12345)
})
})

test.group('Oauth Drivers | Instagram', function () {
Expand Down Expand Up @@ -392,4 +504,46 @@ test.group('Foursquare', function () {
const redirectToUrl = await foursquare.getRedirectUrl(['basic'])
assert.equal(redirectToUrl, providerUrl)
})

test('should set expires_in to null if not provided', async function (assert) {
const foursquare = new Foursquare(config)

// Mock getAccessToken
foursquare.getAccessToken = () => ({})

// Mock _getUserProfile
foursquare._getUserProfile = () => ({
response: {
user: {
contact: {},
photo: {}
}
}
})

const user = await foursquare.getUser({ code: '12345' })

assert.equal(user.getExpires(), null)
})

test('should correctly parse a valid expires_in', async function (assert) {
const foursquare = new Foursquare(config)

// Mock getAccessToken
foursquare.getAccessToken = () => ({ result: { expires_in: '12345' } })

// Mock _getUserProfile
foursquare._getUserProfile = () => ({
response: {
user: {
contact: {},
photo: {}
}
}
})

const user = await foursquare.getUser({ code: '12345' })

assert.equal(user.getExpires(), 12345)
})
})

0 comments on commit 404d090

Please sign in to comment.