diff --git a/spec/route.private.spec.js b/spec/route.private.spec.js
new file mode 100644
index 0000000..70f3e50
--- /dev/null
+++ b/spec/route.private.spec.js
@@ -0,0 +1,42 @@
+import React from 'react'
+import { shallow } from 'enzyme'
+import { Redirect, Route } from 'react-router-dom'
+
+import PrivateRoute from '../src/route.private'
+
+describe('Private Route', () => {
+ let auth0MockResult
+
+ beforeEach(() => {
+ auth0MockResult = {
+ isLoggedIn: jest.fn(),
+ setNextPath: jest.fn(),
+ options: {
+ loginRoot: '/login',
+ },
+ }
+
+ window.ReactRouterAuth0Provider = auth0MockResult
+ })
+
+ it('should set a return path and redirect when user is not logged in', () => {
+ auth0MockResult.isLoggedIn = jest.fn().mockReturnValue(false)
+
+ const wrapper = shallow()
+
+ expect(window.ReactRouterAuth0Provider.isLoggedIn).toHaveBeenCalled()
+ expect(window.ReactRouterAuth0Provider.setNextPath).toHaveBeenCalled()
+ expect(wrapper.find(Redirect)).toHaveLength(1)
+ })
+
+
+ it('should render a react router Route when user is logged in', () => {
+ auth0MockResult.isLoggedIn = jest.fn().mockReturnValue(true)
+
+ const wrapper = shallow()
+
+ expect(window.ReactRouterAuth0Provider.isLoggedIn).toHaveBeenCalled()
+ expect(window.ReactRouterAuth0Provider.setNextPath).not.toHaveBeenCalled()
+ expect(wrapper.find(Route)).toHaveLength(1)
+ })
+})
diff --git a/src/route.private.jsx b/src/route.private.jsx
index 4869ecb..4b8d53e 100644
--- a/src/route.private.jsx
+++ b/src/route.private.jsx
@@ -4,7 +4,7 @@ import { Route, Redirect } from 'react-router-dom'
export default class PrivateRoute extends Route {
render() {
if (!window.ReactRouterAuth0Provider.isLoggedIn()) {
- window.ReactRouterAuth0Provider.setNextPath(this.props.location.pathname)
+ window.ReactRouterAuth0Provider.setNextPath(this.props.location && this.props.location.pathname)
return
}