diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..a033693 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,24 @@ +image: node:latest + +stages: + - build + - test + +cache: + paths: + - smart-hut/node_modules/ + +install_dependencies: + stage: build + script: + - cd smart-hut + - yarn install + artifacts: + paths: + - smart-hut/node_modules/ + +testing_testing: + stage: test + script: + - cd smart-hut + - yarn test \ No newline at end of file diff --git a/smart-hut/src/App.js b/smart-hut/src/App.js index ea84497..592ecdc 100644 --- a/smart-hut/src/App.js +++ b/smart-hut/src/App.js @@ -1,9 +1,10 @@ import React from "react"; -import { Switch, Route, Redirect } from "react-router-dom"; +import {BrowserRouter, Switch, Route, Redirect } from "react-router-dom"; import Home from "./views/Home"; import Dashboard from "./views/DashboardTest"; import Signup from "./views/Signup"; import Login from "./views/Login"; +import FourOhFour from "./views/FourOhFour"; import ForgotPass from "./views/Forgot-password"; import ChangePass from "./views/Forgot-pass-reset"; import queryString from 'query-string'; @@ -33,10 +34,12 @@ class App extends React.Component { } componentDidMount() { - const values = queryString.parse(this.props.location.search); - this.setState({ - query : values - }); + if (this.props.location) { + const values = queryString.parse(this.props.location.search); + this.setState({ + query : values + }); + } } auth(data) { @@ -77,6 +80,7 @@ class App extends React.Component { render() { return ( + @@ -89,10 +93,12 @@ class App extends React.Component { - - + + + + ); } } diff --git a/smart-hut/src/App.test.js b/smart-hut/src/App.test.js index 4db7ebc..dd1c60a 100644 --- a/smart-hut/src/App.test.js +++ b/smart-hut/src/App.test.js @@ -1,9 +1,16 @@ import React from 'react'; import { render } from '@testing-library/react'; +import { Router } from "react-router"; +import { createMemoryHistory } from "history"; import App from './App'; -test('renders learn react link', () => { - const { getByText } = render(); - const linkElement = getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); +test("redirects to homepage", () => { + const history = createMemoryHistory(); + render( + + + + ); + expect(history.location.pathname).toBe("/"); }); + diff --git a/smart-hut/src/client_server.js b/smart-hut/src/client_server.js index b8ed670..427d1db 100644 --- a/smart-hut/src/client_server.js +++ b/smart-hut/src/client_server.js @@ -8,7 +8,7 @@ export var call = { .then(res => { return res; }).catch(err => { - return err; + return {status : "Errore"}; }); }, register: function(data, headers) { @@ -17,7 +17,23 @@ export var call = { return res; }).catch(err => { //console.error(err); - return err; + return {status : "Errore"}; }); }, + initResetPassword: function(data, headers) { + return axios.post(config + 'register/init-reset-password', data) + .then(res => { + return res; + }).catch(err => { + return {status : "Errore"}; + }); + }, + resetPassword: function(data, headers) { + return axios.put(config + 'register/reset-password', data) + .then(res => { + return res; + }).catch(err => { + return {status : "Errore"}; + }); + }, }; diff --git a/smart-hut/src/index.js b/smart-hut/src/index.js index 1ec8388..840e490 100644 --- a/smart-hut/src/index.js +++ b/smart-hut/src/index.js @@ -3,17 +3,13 @@ import ReactDOM from 'react-dom'; import App from './App'; import * as serviceWorker from './serviceWorker'; //React Router -import { BrowserRouter, Route, Switch } from "react-router-dom"; +//import { BrowserRouter, Route, Switch } from "react-router-dom"; -const routes = ( - - - - - +const index = ( + ); ReactDOM.render( - routes + index , document.getElementById('root')); serviceWorker.unregister(); diff --git a/smart-hut/src/views/Forgot-pass-reset.js b/smart-hut/src/views/Forgot-pass-reset.js index 39496d5..170bf1d 100644 --- a/smart-hut/src/views/Forgot-pass-reset.js +++ b/smart-hut/src/views/Forgot-pass-reset.js @@ -1,6 +1,6 @@ import React, {Component} from 'react'; import {Button, Form, Grid, Header, Image, Icon, Message} from 'semantic-ui-react'; -//import { call } from '../client_server'; +import { call } from '../client_server'; export default class ChangePass extends Component { @@ -31,7 +31,20 @@ export default class ChangePass extends Component { }; handleChangePassword = (e) => { - + const params = { + "confirmationToken" : this.props.query.confirmationToken , + "password" : this.state.password + } + call.resetPassword(params) + .then(res => { + if (res.status === "Errore") { + this.setState({ error: { state: true, + message: "Errore"}}); + } + // else set a message that an email has been sent + }).catch(err => { + console.log(err); + }); }; render() { diff --git a/smart-hut/src/views/Forgot-password.js b/smart-hut/src/views/Forgot-password.js index b3f1e93..99a454d 100644 --- a/smart-hut/src/views/Forgot-password.js +++ b/smart-hut/src/views/Forgot-password.js @@ -1,6 +1,6 @@ import React, {Component} from 'react'; import {Button, Form, Grid, Header, Image, Icon, Message} from 'semantic-ui-react'; -//import { call } from '../client_server'; +import { call } from '../client_server'; export default class ForgotPass extends Component { @@ -22,7 +22,21 @@ export default class ForgotPass extends Component { }; handleSendEmail = (e) => { + e.preventDefault(); + const params = { + "email" : this.state.user, + } + call.initResetPassword(params) + .then(res => { + if (res.status === "Errore") { + this.setState({ error: { state: true, + message: "Errore"}}); + } + //set a message that an email has been sent + }).catch(err => { + console.log(err); + }); }; render() { diff --git a/smart-hut/src/views/FourOhFour.js b/smart-hut/src/views/FourOhFour.js new file mode 100644 index 0000000..99cca6c --- /dev/null +++ b/smart-hut/src/views/FourOhFour.js @@ -0,0 +1,19 @@ +import React, {Component} from 'react'; +import { Message} from 'semantic-ui-react'; +import {Link } from "react-router-dom"; + + +export default class FourOhFour extends Component { + + render() { + return ( + + 404 Page Not Found +

+ Hey what are you doing here? + Go back to our homepage +

+
+ ) + } +} \ No newline at end of file