UNPKG

mongodb-stitch

Version:

[![Join the chat at https://gitter.im/mongodb/stitch](https://badges.gitter.im/mongodb/stitch.svg)](https://gitter.im/mongodb/stitch?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

105 lines (97 loc) 4.95 kB
const StitchMongoFixture = require('../fixtures/stitch_mongo_fixture'); import { buildAdminTestHarness, extractTestFixtureDataPoints } from '../testutil'; const validConfig = { emailConfirmationUrl: 'http://emailConfirmURL.com', resetPasswordUrl: 'http://resetPasswordURL.com', confirmEmailSubject: 'email subject', resetPasswordSubject: 'password subject' }; describe('Auth Providers', ()=>{ let test = new StitchMongoFixture(); let th; let authProviders; beforeAll(() => test.setup()); afterAll(() => test.teardown()); beforeEach(async() => { const { apiKey, groupId, serverUrl } = extractTestFixtureDataPoints(test); th = await buildAdminTestHarness(true, apiKey, groupId, serverUrl); authProviders = th.app().authProviders(); }); afterEach(async() => th.cleanup()); it('listing auth providers should return list', async() => { let providers = await authProviders.list(); expect(providers.length).toEqual(1); expect(providers[0].name).toEqual('api-key'); expect(providers[0].type).toEqual('api-key'); }); it('creating auth provider should work', async() => { let newProvider = await authProviders.create({type: 'local-userpass', config: validConfig}); expect(newProvider.type).toEqual('local-userpass'); expect(newProvider.name).toEqual('local-userpass'); expect(newProvider.config).toBeUndefined(); let providers = await authProviders.list(); expect(providers).toHaveLength(2); expect(providers[0].type).toEqual('api-key'); expect(providers[1].type).toEqual(newProvider.type); }); it('invalid create requests should fail', async() => { await expect(authProviders.create({type: 'local-userpass'})).rejects.toBeDefined(); await expect(authProviders.create({type: 'bad#type'})).rejects.toBeDefined(); }); it('fetching auth provider should work', async() => { let newAuthProvider = await authProviders.create({type: 'local-userpass', config: validConfig}); expect(newAuthProvider.type).toEqual('local-userpass'); let provider = await authProviders.authProvider(newAuthProvider._id).get(); expect(provider.type).toEqual(provider.type); }); it('enabling auth provider should work', async() => { let newAuthProvider = await authProviders.create({type: 'local-userpass', config: validConfig, disabled: true}); expect(newAuthProvider.type).toEqual('local-userpass'); let fetchedProvider = await authProviders.authProvider(newAuthProvider._id).get(); expect(newAuthProvider._id).toEqual(fetchedProvider._id); await authProviders.authProvider(newAuthProvider._id).enable(); let provider = await authProviders.authProvider(newAuthProvider._id).get(); expect(provider.type).toEqual(provider.type); expect(provider.disabled).toEqual(false); }); it('disabling auth provider should work', async() => { let newAuthProvider = await authProviders.create({type: 'local-userpass', config: validConfig, disabled: false}); expect(newAuthProvider.type).toEqual('local-userpass'); let provider = await authProviders.authProvider(newAuthProvider._id).get(); expect(provider.disabled).toEqual(false); await authProviders.authProvider(newAuthProvider._id).disable(); provider = await authProviders.authProvider(newAuthProvider._id).get(); expect(provider.disabled).toEqual(true); }); it('deleting an auth provider should work', async() => { let newAuthProvider = await authProviders.create({type: 'local-userpass', config: validConfig}); let providers = await authProviders.list(); expect(providers).toHaveLength(2); await authProviders.authProvider(newAuthProvider._id).disable(); await authProviders.authProvider(newAuthProvider._id).remove(); providers = await authProviders.list(); expect(providers).toHaveLength(1); }); it('deleting an auth provider should fail if the auth provider is still enabled', async() => { let newAuthProvider = await authProviders.create({type: 'local-userpass', config: validConfig}); let providers = await authProviders.list(); expect(providers).toHaveLength(2); await expect(authProviders.authProvider(newAuthProvider._id).remove()).rejects.toBeDefined(); }); it('updating auth provider should work', async() => { let newAuthProvider = await authProviders.create({type: 'local-userpass', config: validConfig}); await authProviders.authProvider(newAuthProvider._id).update({ config: { confirmEmailSubject: 'updated email subject', resetPasswordSubject: 'updated password subject' } }); let authProvider = await authProviders.authProvider(newAuthProvider._id).get(); expect(authProvider.config).toEqual({ emailConfirmationUrl: 'http://emailConfirmURL.com', resetPasswordUrl: 'http://resetPasswordURL.com', confirmEmailSubject: 'updated email subject', resetPasswordSubject: 'updated password subject' }); }); });