@allsquare/react-apple-signin-auth
Version:
Apple signin for React using the official Apple JS SDK
86 lines (76 loc) • 4.15 kB
JavaScript
;
var _ = _interopRequireDefault(require("."));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
/** Demo auth options */
var _authOptions = {
clientId: 'com.example.web',
scope: 'email name',
redirectURI: 'https://example.com',
state: 'state',
nonce: 'nonce',
usePopup: true
};
/** Response */
var AppleIDAuthSignInFnResponse = {
success: true
};
describe('appleAuthHelpers', function () {
var AppleIDAuthInitFn;
var AppleIDAuthSignInFn;
beforeEach(function () {
/** Mock apple funcs */
AppleIDAuthInitFn = jest.fn(function () {
return Promise.resolve(true);
});
AppleIDAuthSignInFn = jest.fn(function () {
return Promise.resolve(AppleIDAuthSignInFnResponse);
});
/** Mock window object */
window.AppleID = {
auth: {
init: AppleIDAuthInitFn,
signIn: AppleIDAuthSignInFn
}
};
});
it('should call apple functions with proper params upon signIn', /*#__PURE__*/_asyncToGenerator(function* () {
var input = {
authOptions: _authOptions
};
yield _.default.signIn(input);
expect(window.AppleID.auth.init).toHaveBeenCalled();
expect(window.AppleID.auth.init.mock.calls[0][0]).toEqual(expect.objectContaining(_objectSpread({}, input.authOptions)));
expect(window.AppleID.auth.init.mock.calls[0]).toBeDefined();
}));
it('should return undefined and log error if apple script is not loaded', /*#__PURE__*/_asyncToGenerator(function* () {
window.AppleID = null;
var input = {
authOptions: _authOptions
};
var response = yield _.default.signIn(input);
expect(response).toBeUndefined();
}));
it('should return undefined and call onError if apple script is not loaded', /*#__PURE__*/_asyncToGenerator(function* () {
window.AppleID = null;
var input = {
authOptions: _authOptions,
onError: jest.fn()
};
var response = yield _.default.signIn(input);
expect(response).toBeUndefined();
expect(input.onError.mock.calls[0][0]).toEqual(expect.any(Error));
}));
it('should call onSuccess upon success', /*#__PURE__*/_asyncToGenerator(function* () {
var input = {
authOptions: _authOptions,
onSuccess: jest.fn()
};
yield _.default.signIn(input);
expect(input.onSuccess.mock.calls[0][0]).toEqual(AppleIDAuthSignInFnResponse);
}));
});