Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/messaging/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
FirebaseServiceFactory
} from '@firebase/app-types/private';

import { SWController } from './src/controllers/sw-controller';
import { SwController } from './src/controllers/sw-controller';
import { WindowController } from './src/controllers/window-controller';
import { ERROR_CODES, errorFactory } from './src/models/errors';

Expand All @@ -40,7 +40,7 @@ export function registerMessaging(instance: _FirebaseNamespace): void {

if (self && 'ServiceWorkerGlobalScope' in self) {
// Running in ServiceWorker context
return new SWController(app);
return new SwController(app);
} else {
// Assume we are in the window context.
return new WindowController(app);
Expand Down
8 changes: 4 additions & 4 deletions packages/messaging/src/controllers/controller-interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import { isArrayBufferEqual } from '../helpers/is-array-buffer-equal';
import { MessagePayload } from '../interfaces/message-payload';
import { TokenDetails } from '../interfaces/token-details';
import { ERROR_CODES, errorFactory } from '../models/errors';
import { IIDModel } from '../models/iid-model';
import { IidModel } from '../models/iid-model';
import { TokenDetailsModel } from '../models/token-details-model';
import { VapidDetailsModel } from '../models/vapid-details-model';

Expand All @@ -46,7 +46,7 @@ export abstract class ControllerInterface implements FirebaseMessaging {
private readonly messagingSenderId: string;
private readonly tokenDetailsModel: TokenDetailsModel;
private readonly vapidDetailsModel: VapidDetailsModel;
private readonly iidModel: IIDModel;
private readonly iidModel: IidModel;

/**
* An interface of the Messaging Service API
Expand All @@ -63,7 +63,7 @@ export abstract class ControllerInterface implements FirebaseMessaging {

this.tokenDetailsModel = new TokenDetailsModel();
this.vapidDetailsModel = new VapidDetailsModel();
this.iidModel = new IIDModel();
this.iidModel = new IidModel();

this.app = app;
this.INTERNAL = {
Expand Down Expand Up @@ -352,7 +352,7 @@ export abstract class ControllerInterface implements FirebaseMessaging {

// Visible for testing
// TODO: make protected
getIIDModel(): IIDModel {
getIidModel(): IidModel {
return this.iidModel;
}
}
Expand Down
2 changes: 1 addition & 1 deletion packages/messaging/src/controllers/sw-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ declare const self: ServiceWorkerGlobalScope;

const FCM_MSG = 'FCM_MSG';

export class SWController extends ControllerInterface {
export class SwController extends ControllerInterface {
private bgMessageHandler: BgMessageHandler | null = null;

constructor(app: FirebaseApp) {
Expand Down
4 changes: 2 additions & 2 deletions packages/messaging/src/models/clean-v1-undefined.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
* underlying tokens.
*/

import { IIDModel } from '../models/iid-model';
import { IidModel } from '../models/iid-model';

const OLD_DB_NAME = 'undefined';
const OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';
Expand All @@ -41,7 +41,7 @@ function handleDb(db: IDBDatabase): void {
const transaction = db.transaction(OLD_OBJECT_STORE_NAME);
const objectStore = transaction.objectStore(OLD_OBJECT_STORE_NAME);

const iidModel = new IIDModel();
const iidModel = new IidModel();

const openCursorRequest: IDBRequest = objectStore.openCursor();
openCursorRequest.onerror = event => {
Expand Down
2 changes: 1 addition & 1 deletion packages/messaging/src/models/db-interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

export abstract class DBInterface {
export abstract class DbInterface {
private dbPromise: Promise<IDBDatabase> | null = null;

protected abstract readonly dbName: string;
Expand Down
16 changes: 4 additions & 12 deletions packages/messaging/src/models/iid-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,29 +18,21 @@ import { arrayBufferToBase64 } from '../helpers/array-buffer-to-base64';
import { ERROR_CODES, errorFactory } from './errors';
import { DEFAULT_PUBLIC_VAPID_KEY, ENDPOINT } from './fcm-details';

// tslint:disable interface-name TSLint thinks I in IID is an interface prefix.
//
// TODO: Fix abbreviations in variable and class names to match Google
// TypeScript style guide, which follows the Java style guide:
// https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
//
// In this case, IIDDetails should be IidDetails.
export interface IIDDetails {
export interface IidDetails {
token: string;
pushSet: string;
}
// tslint:enable interface-name

interface ApiResponse extends Partial<IIDDetails> {
interface ApiResponse extends Partial<IidDetails> {
error?: { message: string };
}

export class IIDModel {
export class IidModel {
async getToken(
senderId: string,
subscription: PushSubscription,
publicVapidKey: Uint8Array
): Promise<IIDDetails> {
): Promise<IidDetails> {
const p256dh = arrayBufferToBase64(subscription.getKey('p256dh')!);
const auth = arrayBufferToBase64(subscription.getKey('auth')!);

Expand Down
4 changes: 2 additions & 2 deletions packages/messaging/src/models/token-details-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
import { base64ToArrayBuffer } from '../helpers/base64-to-array-buffer';
import { TokenDetails } from '../interfaces/token-details';
import { cleanV1 } from './clean-v1-undefined';
import { DBInterface } from './db-interface';
import { DbInterface } from './db-interface';
import { ERROR_CODES, errorFactory } from './errors';

export class TokenDetailsModel extends DBInterface {
export class TokenDetailsModel extends DbInterface {
protected readonly dbName: string = 'fcm_token_details_db';
protected readonly dbVersion: number = 3;
protected readonly objectStoreName: string = 'fcm_token_object_Store';
Expand Down
4 changes: 2 additions & 2 deletions packages/messaging/src/models/vapid-details-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
*/

import { VapidDetails } from '../interfaces/vapid-details';
import { DBInterface } from './db-interface';
import { DbInterface } from './db-interface';
import { ERROR_CODES, errorFactory } from './errors';

const UNCOMPRESSED_PUBLIC_KEY_SIZE = 65;

export class VapidDetailsModel extends DBInterface {
export class VapidDetailsModel extends DbInterface {
protected readonly dbName: string = 'fcm_vapid_details_db';
protected readonly dbVersion: number = 1;
protected readonly objectStoreName: string = 'fcm_vapid_object_Store';
Expand Down
6 changes: 3 additions & 3 deletions packages/messaging/test/constructor.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import { assert } from 'chai';

import { SWController } from '../src/controllers/sw-controller';
import { SwController } from '../src/controllers/sw-controller';
import { WindowController } from '../src/controllers/window-controller';
import { ERROR_CODES } from '../src/models/errors';

Expand Down Expand Up @@ -44,7 +44,7 @@ describe('Firebase Messaging > new *Controller()', () => {
let caughtError;
try {
new WindowController(badInput);
new SWController(badInput);
new SwController(badInput);

console.warn(
'Bad Input should have thrown: ',
Expand All @@ -62,6 +62,6 @@ describe('Firebase Messaging > new *Controller()', () => {
messagingSenderId: '1234567890'
});
new WindowController(app);
new SWController(app);
new SwController(app);
});
});
88 changes: 42 additions & 46 deletions packages/messaging/test/controller-delete-token.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ import { FirebaseApp } from '@firebase/app-types';
import { assert } from 'chai';
import * as sinon from 'sinon';

import { SWController } from '../src/controllers/sw-controller';
import { SwController } from '../src/controllers/sw-controller';
import { WindowController } from '../src/controllers/window-controller';
import { base64ToArrayBuffer } from '../src/helpers/base64-to-array-buffer';
import { ERROR_CODES } from '../src/models/errors';
import { IIDModel } from '../src/models/iid-model';
import { IidModel } from '../src/models/iid-model';
import { TokenDetailsModel } from '../src/models/token-details-model';

import { deleteDatabase } from './testing-utils/db-helper';
Expand All @@ -37,10 +37,10 @@ let EXAMPLE_TOKEN_SAVE: any;
describe('Firebase Messaging > *Controller.deleteToken()', () => {
let sandbox: sinon.SinonSandbox;
let app: FirebaseApp;
let globalMessagingService: WindowController | SWController;
let messagingService: WindowController | SwController;

function configureRegistrationMocks(
serviceClass: typeof WindowController | typeof SWController,
serviceClass: typeof WindowController | typeof SwController,
fakeReg: ServiceWorkerRegistration | null
): void {
sandbox.stub(serviceClass.prototype, 'getSWRegistration_').callsFake(() => {
Expand Down Expand Up @@ -88,16 +88,16 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
afterEach(async () => {
sandbox.restore();

if (globalMessagingService) {
await globalMessagingService.delete();
if (messagingService) {
await messagingService.delete();
}

await deleteDatabase('fcm_token_details_db');
});

it('should handle no token to delete', () => {
globalMessagingService = new WindowController(app);
return globalMessagingService.deleteToken(undefined as any).then(
messagingService = new WindowController(app);
return messagingService.deleteToken(undefined as any).then(
() => {
throw new Error('Expected error to be thrown.');
},
Expand All @@ -117,10 +117,10 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
return EXAMPLE_TOKEN_SAVE;
});

sandbox.stub(IIDModel.prototype, 'deleteToken').callsFake(async () => {});
sandbox.stub(IidModel.prototype, 'deleteToken').callsFake(async () => {});

globalMessagingService = new WindowController(app);
return globalMessagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken);
messagingService = new WindowController(app);
return messagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken);
});

it('should handle get subscription error', () => {
Expand All @@ -138,10 +138,10 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
return EXAMPLE_TOKEN_SAVE;
});

sandbox.stub(IIDModel.prototype, 'deleteToken').callsFake(async () => {});
sandbox.stub(IidModel.prototype, 'deleteToken').callsFake(async () => {});

globalMessagingService = new WindowController(app);
return globalMessagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken).then(
messagingService = new WindowController(app);
return messagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken).then(
() => {
throw new Error('Expected this to reject');
},
Expand All @@ -151,7 +151,7 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
);
});

[WindowController, SWController].forEach(serviceClass => {
[WindowController, SwController].forEach(serviceClass => {
it(`should handle null getSubscription() ${serviceClass.name}`, () => {
configureRegistrationMocks(
serviceClass,
Expand All @@ -165,10 +165,10 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
return EXAMPLE_TOKEN_SAVE;
});

sandbox.stub(IIDModel.prototype, 'deleteToken').callsFake(async () => {});
sandbox.stub(IidModel.prototype, 'deleteToken').callsFake(async () => {});

globalMessagingService = new serviceClass(app);
return globalMessagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken);
messagingService = new serviceClass(app);
return messagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken);
});

it(`should handle error on unsubscribe ${serviceClass.name}`, () => {
Expand All @@ -192,19 +192,17 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
return EXAMPLE_TOKEN_SAVE;
});

sandbox.stub(IIDModel.prototype, 'deleteToken').callsFake(async () => {});

globalMessagingService = new serviceClass(app);
return globalMessagingService
.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken)
.then(
() => {
throw new Error('Expected this to reject');
},
err => {
assert.equal(errorMsg, err.message);
}
);
sandbox.stub(IidModel.prototype, 'deleteToken').callsFake(async () => {});

messagingService = new serviceClass(app);
return messagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken).then(
() => {
throw new Error('Expected this to reject');
},
err => {
assert.equal(errorMsg, err.message);
}
);
});

it(`should handle error on deleteToken ${serviceClass.name}`, () => {
Expand All @@ -226,21 +224,19 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
});

const errorMsg = 'messaging/' + ERROR_CODES.TOKEN_UNSUBSCRIBE_FAILED;
sandbox.stub(IIDModel.prototype, 'deleteToken').callsFake(async () => {
sandbox.stub(IidModel.prototype, 'deleteToken').callsFake(async () => {
throw new Error(errorMsg);
});

globalMessagingService = new serviceClass(app);
return globalMessagingService
.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken)
.then(
() => {
throw new Error('Expected this to reject');
},
err => {
assert.equal(errorMsg, err.message);
}
);
messagingService = new serviceClass(app);
return messagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken).then(
() => {
throw new Error('Expected this to reject');
},
err => {
assert.equal(errorMsg, err.message);
}
);
});

it(`should delete with valid unsubscribe ${serviceClass.name}`, () => {
Expand All @@ -261,10 +257,10 @@ describe('Firebase Messaging > *Controller.deleteToken()', () => {
return EXAMPLE_TOKEN_SAVE;
});

sandbox.stub(IIDModel.prototype, 'deleteToken').callsFake(async () => {});
sandbox.stub(IidModel.prototype, 'deleteToken').callsFake(async () => {});

globalMessagingService = new serviceClass(app);
return globalMessagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken);
messagingService = new serviceClass(app);
return messagingService.deleteToken(EXAMPLE_TOKEN_SAVE.fcmToken);
});
});
});
Loading