Skip to content
This repository has been archived by the owner on Apr 3, 2019. It is now read-only.

Commit

Permalink
fix(devices): Remove the unused "device capabilities" API.
Browse files Browse the repository at this point in the history
This was never used by production clients and is being replaced
with "device commands" in a future release.
  • Loading branch information
rfk committed May 30, 2018
1 parent c0b9f57 commit cf509f2
Show file tree
Hide file tree
Showing 10 changed files with 14 additions and 40 deletions.
3 changes: 0 additions & 3 deletions lib/db.js
Expand Up @@ -526,7 +526,6 @@ module.exports = (
location: mergedInfo.location,
name: device.name,
type: device.type,
capabilities: device.capabilities || [],
pushCallback: device.callbackURL,
pushPublicKey: device.callbackPublicKey,
pushAuthKey: device.callbackAuthKey,
Expand Down Expand Up @@ -709,7 +708,6 @@ module.exports = (
createdAt: deviceInfo.createdAt,
name: deviceInfo.name,
type: deviceInfo.type,
capabilities: deviceInfo.capabilities,
callbackURL: deviceInfo.pushCallback,
callbackPublicKey: deviceInfo.pushPublicKey,
callbackAuthKey: deviceInfo.pushAuthKey
Expand Down Expand Up @@ -767,7 +765,6 @@ module.exports = (
sessionTokenId: sessionTokenId,
name: deviceInfo.name,
type: deviceInfo.type,
capabilities: deviceInfo.capabilities,
callbackURL: deviceInfo.pushCallback,
callbackPublicKey: deviceInfo.pushPublicKey,
callbackAuthKey: deviceInfo.pushAuthKey,
Expand Down
1 change: 0 additions & 1 deletion lib/devices.js
Expand Up @@ -26,7 +26,6 @@ const SCHEMA = {
// so we can't assert DISPLAY_SAFE_UNICODE_WITH_NON_BMP in the response schema.
nameResponse: isA.string().max(255),
type: isA.string().max(16),
capabilities: isA.array().items(isA.string()),
pushCallback: validators.url({ scheme: 'https' }).regex(PUSH_SERVER_REGEX).max(255).allow(''),
pushPublicKey: isA.string().max(88).regex(URL_SAFE_BASE_64).allow(''),
pushAuthKey: isA.string().max(24).regex(URL_SAFE_BASE_64).allow(''),
Expand Down
19 changes: 10 additions & 9 deletions lib/routes/devices-and-sessions.js
Expand Up @@ -120,18 +120,24 @@ module.exports = (log, db, config, customs, push, devices) => {
id: DEVICES_SCHEMA.id.required(),
name: DEVICES_SCHEMA.name.optional(),
type: DEVICES_SCHEMA.type.optional(),
capabilities: DEVICES_SCHEMA.capabilities.optional(),
pushCallback: DEVICES_SCHEMA.pushCallback.optional(),
pushPublicKey: DEVICES_SCHEMA.pushPublicKey.optional(),
pushAuthKey: DEVICES_SCHEMA.pushAuthKey.optional()
pushAuthKey: DEVICES_SCHEMA.pushAuthKey.optional(),
// Some versions of desktop firefox send a zero-length
// "capabilities" array, for historical reasons.
// We accept but ignore it.
capabilities: isA.array().length(0).optional()
}).or('name', 'type', 'pushCallback', 'pushPublicKey', 'pushAuthKey').and('pushPublicKey', 'pushAuthKey'),
isA.object({
name: DEVICES_SCHEMA.name.required(),
type: DEVICES_SCHEMA.type.required(),
capabilities: DEVICES_SCHEMA.capabilities.optional(),
pushCallback: DEVICES_SCHEMA.pushCallback.optional(),
pushPublicKey: DEVICES_SCHEMA.pushPublicKey.optional(),
pushAuthKey: DEVICES_SCHEMA.pushAuthKey.optional()
pushAuthKey: DEVICES_SCHEMA.pushAuthKey.optional(),
// Some versions of desktop firefox send a zero-length
// "capabilities" array, for historical reasons.
// We accept but ignore it.
capabilities: isA.array().length(0).optional()
}).and('pushPublicKey', 'pushAuthKey')
)
},
Expand All @@ -141,7 +147,6 @@ module.exports = (log, db, config, customs, push, devices) => {
createdAt: isA.number().positive().optional(),
name: DEVICES_SCHEMA.nameResponse.optional(),
type: DEVICES_SCHEMA.type.optional(),
capabilities: DEVICES_SCHEMA.capabilities.optional(),
pushCallback: DEVICES_SCHEMA.pushCallback.optional(),
pushPublicKey: DEVICES_SCHEMA.pushPublicKey.optional(),
pushAuthKey: DEVICES_SCHEMA.pushAuthKey.optional(),
Expand Down Expand Up @@ -375,7 +380,6 @@ module.exports = (log, db, config, customs, push, devices) => {
location: DEVICES_SCHEMA.location,
name: DEVICES_SCHEMA.nameResponse.allow('').required(),
type: DEVICES_SCHEMA.type.required(),
capabilities: DEVICES_SCHEMA.capabilities.optional(),
pushCallback: DEVICES_SCHEMA.pushCallback.allow(null).optional(),
pushPublicKey: DEVICES_SCHEMA.pushPublicKey.allow(null).optional(),
pushAuthKey: DEVICES_SCHEMA.pushAuthKey.allow(null).optional(),
Expand All @@ -398,7 +402,6 @@ module.exports = (log, db, config, customs, push, devices) => {
location: marshallLocation(device.location, request),
name: device.name || devices.synthesizeName(device),
type: device.type || device.uaDeviceType || 'desktop',
capabilities: device.capabilities || [],
pushCallback: device.pushCallback,
pushPublicKey: device.pushPublicKey,
pushAuthKey: device.pushAuthKey,
Expand Down Expand Up @@ -432,7 +435,6 @@ module.exports = (log, db, config, customs, push, devices) => {
deviceId: DEVICES_SCHEMA.id.allow(null).required(),
deviceName: DEVICES_SCHEMA.nameResponse.allow('').allow(null).required(),
deviceType: DEVICES_SCHEMA.type.allow(null).required(),
deviceCapabilities: DEVICES_SCHEMA.capabilities.optional(),
deviceCallbackURL: DEVICES_SCHEMA.pushCallback.allow(null).required(),
deviceCallbackPublicKey: DEVICES_SCHEMA.pushPublicKey.allow(null).required(),
deviceCallbackAuthKey: DEVICES_SCHEMA.pushAuthKey.allow(null).required(),
Expand Down Expand Up @@ -473,7 +475,6 @@ module.exports = (log, db, config, customs, push, devices) => {
deviceId,
deviceName,
deviceType: session.uaDeviceType || 'desktop',
deviceCapabilities: session.deviceCapabilities || [],
deviceCallbackURL: session.deviceCallbackURL,
deviceCallbackPublicKey: session.deviceCallbackPublicKey,
deviceCallbackAuthKey: session.deviceCallbackAuthKey,
Expand Down
1 change: 0 additions & 1 deletion test/e2e/push_tests.js
Expand Up @@ -44,7 +44,6 @@ describe('e2e/push', () => {
lastAccessTime: 1449235471335,
name: 'My Phone',
type: 'mobile',
capabilities: ['messages'],
pushCallback: subscription.endpoint,
pushPublicKey: 'BBXOKjUb84pzws1wionFpfCBjDuCh4-s_1b52WA46K5wYL2gCWEOmFKWn_NkS5nmJwTBuO8qxxdjAIDtNeklvQc',
pushAuthKey: 'GSsIiaD2Mr83iPqwFNK4rw',
Expand Down
2 changes: 0 additions & 2 deletions test/local/db.js
Expand Up @@ -443,7 +443,6 @@ describe('redis enabled, token-pruning enabled:', () => {
sessionToken: 'oldFormat',
name: undefined,
type: undefined,
capabilities: [],
pushCallback: undefined,
pushPublicKey: undefined,
pushAuthKey: undefined,
Expand All @@ -468,7 +467,6 @@ describe('redis enabled, token-pruning enabled:', () => {
sessionToken: 'newFormat',
name: undefined,
type: undefined,
capabilities: [],
pushCallback: undefined,
pushPublicKey: undefined,
pushAuthKey: undefined,
Expand Down
3 changes: 0 additions & 3 deletions test/local/push.js
Expand Up @@ -36,7 +36,6 @@ describe('push', () => {
'lastAccessTime': 1449235471335,
'name': 'My Phone',
'type': 'mobile',
'capabilities': ['messages'],
'pushCallback': 'https://updates.push.services.mozilla.com/update/abcdef01234567890abcdefabcdef01234567890abcdef',
'pushPublicKey': mocks.MOCK_PUSH_KEY,
'pushAuthKey': 'w3b14Zjc-Afj2SDOLOyong==',
Expand All @@ -48,7 +47,6 @@ describe('push', () => {
'lastAccessTime': 1417699471335,
'name': 'My Desktop',
'type': null,
'capabilities': ['messages'],
'pushCallback': 'https://updates.push.services.mozilla.com/update/d4c5b1e3f5791ef83896c27519979b93a45e6d0da34c75',
'pushPublicKey': mocks.MOCK_PUSH_KEY,
'pushAuthKey': 'w3b14Zjc-Afj2SDOLOyong==',
Expand All @@ -60,7 +58,6 @@ describe('push', () => {
'lastAccessTime': 1402149471335,
'name': 'My Ipad',
'type': null,
'capabilities': ['messages'],
'uaOS': 'iOS',
'pushCallback': 'https://updates.push.services.mozilla.com/update/50973923bc3e4507a0aa4e285513194a',
'pushPublicKey': mocks.MOCK_PUSH_KEY,
Expand Down
12 changes: 4 additions & 8 deletions test/local/routes/devices-and-sessions.js
Expand Up @@ -765,7 +765,7 @@ describe('/account/sessions', () => {
{
id: tokenIds[0], uid: 'qux', createdAt: times[0], lastAccessTime: times[1],
uaBrowser: 'Firefox', uaBrowserVersion: '50.0', uaOS: 'Windows', uaOSVersion: '10',
uaDeviceType: null, deviceId: null, deviceCreatedAt: times[2], deviceCapabilities: ['messages'],
uaDeviceType: null, deviceId: null, deviceCreatedAt: times[2],
deviceCallbackURL: 'callback', deviceCallbackPublicKey: 'publicKey', deviceCallbackAuthKey: 'authKey',
deviceCallbackIsExpired: false,
location: {
Expand All @@ -779,7 +779,7 @@ describe('/account/sessions', () => {
{
id: tokenIds[1], uid: 'wibble', createdAt: times[3], lastAccessTime: EARLIEST_SANE_TIMESTAMP - 1,
uaBrowser: 'Nightly', uaBrowserVersion: null, uaOS: 'Android', uaOSVersion: '6',
uaDeviceType: 'mobile', deviceId: 'deviceId', deviceCreatedAt: times[4], deviceCapabilities: ['messages'],
uaDeviceType: 'mobile', deviceId: 'deviceId', deviceCreatedAt: times[4],
deviceCallbackURL: null, deviceCallbackPublicKey: null, deviceCallbackAuthKey: null,
deviceCallbackIsExpired: false,
location: {
Expand All @@ -793,15 +793,15 @@ describe('/account/sessions', () => {
{
id: tokenIds[2], uid: 'blee', createdAt: times[5], lastAccessTime: EARLIEST_SANE_TIMESTAMP,
uaBrowser: null, uaBrowserVersion: '50', uaOS: null, uaOSVersion: '10',
uaDeviceType: 'tablet', deviceId: 'deviceId', deviceCreatedAt: times[6], deviceCapabilities: ['messages'],
uaDeviceType: 'tablet', deviceId: 'deviceId', deviceCreatedAt: times[6],
deviceCallbackURL: 'callback', deviceCallbackPublicKey: 'publicKey', deviceCallbackAuthKey: 'authKey',
deviceCallbackIsExpired: false,
location: null
},
{
id: tokenIds[3], uid: 'blee', createdAt: times[7], lastAccessTime: 1,
uaBrowser: null, uaBrowserVersion: '50', uaOS: null, uaOSVersion: '10',
uaDeviceType: 'tablet', deviceId: 'deviceId', deviceCreatedAt: times[8], deviceCapabilities: ['messages'],
uaDeviceType: 'tablet', deviceId: 'deviceId', deviceCreatedAt: times[8],
deviceCallbackURL: 'callback', deviceCallbackPublicKey: 'publicKey', deviceCallbackAuthKey: 'authKey',
deviceCallbackIsExpired: false,
location: null
Expand Down Expand Up @@ -829,7 +829,6 @@ describe('/account/sessions', () => {
deviceId: null,
deviceName: 'Firefox 50, Windows 10',
deviceType: 'desktop',
deviceCapabilities: ['messages'],
deviceCallbackURL: 'callback',
deviceCallbackPublicKey: 'publicKey',
deviceCallbackAuthKey: 'authKey',
Expand All @@ -854,7 +853,6 @@ describe('/account/sessions', () => {
deviceId: 'deviceId',
deviceName: 'Nightly, Android 6',
deviceType: 'mobile',
deviceCapabilities: ['messages'],
deviceCallbackURL: null,
deviceCallbackPublicKey: null,
deviceCallbackAuthKey: null,
Expand All @@ -881,7 +879,6 @@ describe('/account/sessions', () => {
deviceId: 'deviceId',
deviceName: '',
deviceType: 'tablet',
deviceCapabilities: ['messages'],
deviceCallbackURL: 'callback',
deviceCallbackPublicKey: 'publicKey',
deviceCallbackAuthKey: 'authKey',
Expand All @@ -901,7 +898,6 @@ describe('/account/sessions', () => {
deviceId: 'deviceId',
deviceName: '',
deviceType: 'tablet',
deviceCapabilities: ['messages'],
deviceCallbackURL: 'callback',
deviceCallbackPublicKey: 'publicKey',
deviceCallbackAuthKey: 'authKey',
Expand Down
6 changes: 0 additions & 6 deletions test/remote/db_tests.js
Expand Up @@ -178,7 +178,6 @@ describe('remote db', function() {
assert.equal(sessions[0].lastAccessTime, sessions[0].createdAt, 'lastAccessTime property is correct')
assert.equal(sessions[0].authAt, sessions[0].createdAt, 'authAt property is correct')
assert.equal(sessions[0].location, undefined, 'location property is correct')
assert.deepEqual(sessions[0].deviceCapabilities, [], 'deviceCapabilities property is correct')

// Fetch the session token
return db.sessionToken(tokenId)
Expand Down Expand Up @@ -396,7 +395,6 @@ describe('remote db', function() {
id: crypto.randomBytes(16).toString('hex'),
name: '',
type: 'mobile',
capabilities: ['messages'],
pushCallback: 'https://foo/bar',
pushPublicKey: base64url(Buffer.concat([Buffer.from('\x04'), crypto.randomBytes(64)])),
pushAuthKey: base64url(crypto.randomBytes(16))
Expand Down Expand Up @@ -459,7 +457,6 @@ describe('remote db', function() {
assert.ok(device.createdAt > 0, 'device.createdAt is set')
assert.equal(device.name, deviceInfo.name, 'device.name is correct')
assert.equal(device.type, deviceInfo.type, 'device.type is correct')
assert.deepEqual(device.capabilities, deviceInfo.capabilities, 'device.capabilities is correct')
assert.equal(device.pushCallback, deviceInfo.pushCallback, 'device.pushCallback is correct')
assert.equal(device.pushPublicKey, deviceInfo.pushPublicKey, 'device.pushPublicKey is correct')
assert.equal(device.pushAuthKey, deviceInfo.pushAuthKey, 'device.pushAuthKey is correct')
Expand Down Expand Up @@ -491,7 +488,6 @@ describe('remote db', function() {
assert.ok(device.lastAccessTime > 0, 'device.lastAccessTime is set')
assert.equal(device.name, deviceInfo.name, 'device.name is correct')
assert.equal(device.type, deviceInfo.type, 'device.type is correct')
assert.deepEqual(device.capabilities, deviceInfo.capabilities, 'device.capabilities is correct')
assert.equal(device.pushCallback, deviceInfo.pushCallback, 'device.pushCallback is correct')
assert.equal(device.pushPublicKey, deviceInfo.pushPublicKey, 'device.pushPublicKey is correct')
assert.equal(device.pushAuthKey, deviceInfo.pushAuthKey, 'device.pushAuthKey is correct')
Expand All @@ -506,7 +502,6 @@ describe('remote db', function() {
deviceInfo.id = device.id
deviceInfo.name = 'wibble'
deviceInfo.type = 'desktop'
deviceInfo.capabilities = []
deviceInfo.pushCallback = ''
deviceInfo.pushPublicKey = ''
deviceInfo.pushAuthKey = ''
Expand Down Expand Up @@ -567,7 +562,6 @@ describe('remote db', function() {
assert.equal(device.lastAccessTime, 42, 'device.lastAccessTime is correct')
assert.equal(device.name, deviceInfo.name, 'device.name is correct')
assert.equal(device.type, deviceInfo.type, 'device.type is correct')
assert.deepEqual(device.capabilities, deviceInfo.capabilities, 'device.capabilities is correct')
assert.equal(device.pushCallback, deviceInfo.pushCallback, 'device.pushCallback is correct')
assert.equal(device.pushPublicKey, '', 'device.pushPublicKey is correct')
assert.equal(device.pushAuthKey, '', 'device.pushAuthKey is correct')
Expand Down
6 changes: 0 additions & 6 deletions test/remote/device_tests.js
Expand Up @@ -40,7 +40,6 @@ describe('remote device', function () {
var deviceInfo = {
name: 'test device 🍓🔥在𝌆',
type: 'mobile',
capabilities: ['messages'],
pushCallback: '',
pushPublicKey: '',
pushAuthKey: ''
Expand All @@ -58,7 +57,6 @@ describe('remote device', function () {
assert.ok(device.createdAt > 0, 'device.createdAt was set')
assert.equal(device.name, deviceInfo.name, 'device.name is correct')
assert.equal(device.type, deviceInfo.type, 'device.type is correct')
assert.deepEqual(device.capabilities, deviceInfo.capabilities, 'device.capabilities is correct')
assert.equal(device.pushCallback, deviceInfo.pushCallback, 'device.pushCallback is correct')
assert.equal(device.pushPublicKey, deviceInfo.pushPublicKey, 'device.pushPublicKey is correct')
assert.equal(device.pushAuthKey, deviceInfo.pushAuthKey, 'device.pushAuthKey is correct')
Expand All @@ -75,7 +73,6 @@ describe('remote device', function () {
assert.equal(devices.length, 1, 'devices returned one item')
assert.equal(devices[0].name, deviceInfo.name, 'devices returned correct name')
assert.equal(devices[0].type, deviceInfo.type, 'devices returned correct type')
assert.deepEqual(devices[0].capabilities, deviceInfo.capabilities, 'devices returned correct capabilities')
assert.equal(devices[0].pushCallback, '', 'devices returned empty pushCallback')
assert.equal(devices[0].pushPublicKey, '', 'devices returned correct pushPublicKey')
assert.equal(devices[0].pushAuthKey, '', 'devices returned correct pushAuthKey')
Expand Down Expand Up @@ -238,7 +235,6 @@ describe('remote device', function () {
id: crypto.randomBytes(16).toString('hex'),
name: 'test device',
type: 'desktop',
capabilities: ['messages'],
pushCallback: badPushCallback,
pushPublicKey: mocks.MOCK_PUSH_KEY,
pushAuthKey: base64url(crypto.randomBytes(16))
Expand Down Expand Up @@ -273,7 +269,6 @@ describe('remote device', function () {
id: crypto.randomBytes(16).toString('hex'),
name: 'test device',
type: 'desktop',
capabilities: ['messages'],
pushCallback: badPushCallback,
pushPublicKey: mocks.MOCK_PUSH_KEY,
pushAuthKey: base64url(crypto.randomBytes(16))
Expand Down Expand Up @@ -310,7 +305,6 @@ describe('remote device', function () {
var deviceInfo = {
name: 'test device',
type: 'mobile',
capabilities: ['messages'],
pushCallback: goodPushCallback,
pushPublicKey: '',
pushAuthKey: ''
Expand Down
1 change: 0 additions & 1 deletion test/remote/push_db_tests.js
Expand Up @@ -71,7 +71,6 @@ describe('remote push db', function() {
id: crypto.randomBytes(16).toString('hex'),
name: 'my push device',
type: 'mobile',
capabilities: ['messages'],
pushCallback: 'https://foo/bar',
pushPublicKey: base64url(Buffer.concat([Buffer.from('\x04'), crypto.randomBytes(64)])),
pushAuthKey: base64url(crypto.randomBytes(16)),
Expand Down

0 comments on commit cf509f2

Please sign in to comment.