mirror of
https://github.com/hanzoai/firebase-js-sdk.git
synced 2026-09-24 16:59:10 +00:00
* Add linkDomain field to ActionCodeSettings (#8428) * Add linkDomain field to ActionCodeSettings * Update API reports * Update error message for ERROR_INVALID_HOSTING_LINK_DOMAIN to include that default hosting domains cannot be used. * Use constants for test values --------- Co-authored-by: NhienLam <[email protected]> * FDL Deprecation & Hosting link Integration Test (#8603) * Implement Integration test for passwordless email sign-in via firebase-hosting links. * Add license to new test file created' did not match any files * Remove unwanted _ * Add support for setting custom hosting link domain in test app (#8614) * Add afterEach method and apply formatting to the hosting links integration test (#8615) * Mark ActionCodeSettings.dynamicLinkDomain as deprecated * Add changeset * Update API reports * Address review comments * Fix changeset * Update refdocs and address review comments * Update deprecated comment * Add FDL deprecation FAQ link * Fix linkDomain link in refdocs --------- Co-authored-by: NhienLam <[email protected]> Co-authored-by: mansisampat <[email protected]>
107 lines
3.4 KiB
TypeScript
107 lines
3.4 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
import {
|
|
ActionCodeSettings,
|
|
Auth,
|
|
sendSignInLinkToEmail
|
|
} from '@firebase/auth';
|
|
import { expect, use } from 'chai';
|
|
import {
|
|
cleanUpTestInstance,
|
|
getTestInstance,
|
|
randomEmail
|
|
} from '../../helpers/integration/helpers';
|
|
import { getEmulatorUrl } from '../../helpers/integration/settings';
|
|
import chaiAsPromised from 'chai-as-promised';
|
|
import { FirebaseError } from '@firebase/util';
|
|
|
|
use(chaiAsPromised);
|
|
|
|
// Assumes mobileLinksConfig.domain is set as "HOSTING_DOMAIN" in the test GCP-project.
|
|
describe('Integration test: hosting link validation', () => {
|
|
let auth: Auth;
|
|
let email: string;
|
|
|
|
const AUTHORIZED_CUSTOM_DOMAIN = 'localhost/action_code_return';
|
|
const ANDROID_PACKAGE_NAME = 'com.google.firebase.test.thin';
|
|
const BASE_SETTINGS: ActionCodeSettings = {
|
|
url: 'http://' + AUTHORIZED_CUSTOM_DOMAIN,
|
|
handleCodeInApp: true,
|
|
android: { packageName: ANDROID_PACKAGE_NAME }
|
|
};
|
|
const VALID_LINK_DOMAIN = 'jscore-sandbox.testdomaindonotuse.com';
|
|
const INVALID_LINK_DOMAIN = 'invalid.testdomaindonotuse.com';
|
|
const INVALID_LINK_DOMAIN_ERROR = 'auth/invalid-hosting-link-domain';
|
|
const TEST_TENANT_ID = 'passpol-tenant-d7hha';
|
|
|
|
beforeEach(function () {
|
|
auth = getTestInstance();
|
|
email = randomEmail();
|
|
|
|
if (getEmulatorUrl()) {
|
|
this.skip();
|
|
}
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await cleanUpTestInstance(auth);
|
|
});
|
|
|
|
it('allows user to sign in with default firebase hosting link', async () => {
|
|
// Sends email link to user using default hosting link.
|
|
await sendSignInLinkToEmail(auth, email, BASE_SETTINGS);
|
|
});
|
|
|
|
it('allows user to sign in to a tenant with default firebase hosting link', async () => {
|
|
auth.tenantId = TEST_TENANT_ID;
|
|
// Sends email link to user using default hosting link.
|
|
await sendSignInLinkToEmail(auth, email, BASE_SETTINGS);
|
|
});
|
|
|
|
it('allows user to sign in with custom firebase hosting link', async () => {
|
|
// Sends email link to user using custom hosting link.
|
|
await sendSignInLinkToEmail(auth, email, {
|
|
...BASE_SETTINGS,
|
|
linkDomain: VALID_LINK_DOMAIN
|
|
});
|
|
});
|
|
|
|
it('allows user to sign in to a tenant with custom firebase hosting link', async () => {
|
|
// Sends email link to user using custom hosting link.
|
|
auth.tenantId = TEST_TENANT_ID;
|
|
await sendSignInLinkToEmail(auth, email, {
|
|
...BASE_SETTINGS,
|
|
linkDomain: VALID_LINK_DOMAIN
|
|
});
|
|
});
|
|
|
|
it('sign in with invalid firebase hosting link throws exception', async () => {
|
|
// Throws an exception while sening email link to user using invalid hosting link.
|
|
await expect(
|
|
sendSignInLinkToEmail(auth, email, {
|
|
...BASE_SETTINGS,
|
|
linkDomain: INVALID_LINK_DOMAIN
|
|
})
|
|
).to.be.rejectedWith(
|
|
FirebaseError,
|
|
new RegExp('.*' + INVALID_LINK_DOMAIN_ERROR + '.*')
|
|
);
|
|
});
|
|
});
|