From 4df4d013263dc92edd563c290463fe3c0e3abffa Mon Sep 17 00:00:00 2001
From: Albin Henriksson <albhe428@student.liu.se>
Date: Fri, 9 Apr 2021 11:05:09 +0200
Subject: [PATCH] add back jwt_required, fix tests

---
 client/src/actions/presentation.ts            |  2 -
 client/src/pages/admin/AdminPage.test.tsx     | 37 ++++++++++++++++++
 .../src/pages/views/AudienceViewPage.test.tsx | 12 ++++--
 client/src/pages/views/JudgeViewPage.test.tsx | 38 ++++++++++++++++++-
 .../pages/views/ParticipantViewPage.test.tsx  |  8 +++-
 .../pages/views/PresenterViewPage.test.tsx    | 33 +++++++++++++++-
 .../views/components/SlideDisplay.test.tsx    | 10 ++++-
 server/app/apis/competitions.py               |  1 +
 server/app/apis/teams.py                      |  2 +
 9 files changed, 133 insertions(+), 10 deletions(-)

diff --git a/client/src/actions/presentation.ts b/client/src/actions/presentation.ts
index 43232014..9e482d2b 100644
--- a/client/src/actions/presentation.ts
+++ b/client/src/actions/presentation.ts
@@ -7,7 +7,6 @@ export const getPresentationCompetition = (id: string) => async (dispatch: AppDi
   await axios
     .get(`/competitions/${id}`)
     .then((res) => {
-      console.log(res)
       dispatch({
         type: Types.SET_PRESENTATION_COMPETITION,
         payload: res.data,
@@ -22,7 +21,6 @@ export const getPresentationTeams = (id: string) => async (dispatch: AppDispatch
   await axios
     .get(`/competitions/${id}/teams`)
     .then((res) => {
-      console.log(res)
       dispatch({
         type: Types.SET_PRESENTATION_TEAMS,
         payload: res.data.items,
diff --git a/client/src/pages/admin/AdminPage.test.tsx b/client/src/pages/admin/AdminPage.test.tsx
index efb56bb2..ab694cee 100644
--- a/client/src/pages/admin/AdminPage.test.tsx
+++ b/client/src/pages/admin/AdminPage.test.tsx
@@ -1,4 +1,5 @@
 import { render } from '@testing-library/react'
+import mockedAxios from 'axios'
 import React from 'react'
 import { Provider } from 'react-redux'
 import { BrowserRouter } from 'react-router-dom'
@@ -6,6 +7,42 @@ import store from '../../store'
 import AdminPage from './AdminPage'
 
 it('renders admin view', () => {
+  const cityRes: any = {
+    data: {
+      items: [
+        {
+          id: 1,
+          name: 'Link\u00f6ping',
+        },
+        {
+          id: 2,
+          name: 'Stockholm',
+        },
+      ],
+      count: 2,
+      total_count: 3,
+    },
+  }
+  const rolesRes: any = {
+    data: {
+      items: [
+        {
+          id: 1,
+          name: 'role1',
+        },
+        {
+          id: 2,
+          name: 'role2',
+        },
+      ],
+      count: 2,
+      total_count: 3,
+    },
+  }
+  ;(mockedAxios.get as jest.Mock).mockImplementation((path: string, params?: any) => {
+    if (path === '/misc/cities') return Promise.resolve(cityRes)
+    else return Promise.resolve(rolesRes)
+  })
   render(
     <Provider store={store}>
       <BrowserRouter>
diff --git a/client/src/pages/views/AudienceViewPage.test.tsx b/client/src/pages/views/AudienceViewPage.test.tsx
index 984ee7f2..d00d4277 100644
--- a/client/src/pages/views/AudienceViewPage.test.tsx
+++ b/client/src/pages/views/AudienceViewPage.test.tsx
@@ -1,7 +1,13 @@
-import { Slide } from '@material-ui/core'
 import { render } from '@testing-library/react'
 import React from 'react'
+import { Provider } from 'react-redux'
+import store from '../../store'
+import AudienceViewPage from './AudienceViewPage'
 
-it('renders slide', () => {
-  render(<Slide />)
+it('renders audience view page', () => {
+  render(
+    <Provider store={store}>
+      <AudienceViewPage />
+    </Provider>
+  )
 })
diff --git a/client/src/pages/views/JudgeViewPage.test.tsx b/client/src/pages/views/JudgeViewPage.test.tsx
index 5ff1cc5d..537dae4c 100644
--- a/client/src/pages/views/JudgeViewPage.test.tsx
+++ b/client/src/pages/views/JudgeViewPage.test.tsx
@@ -1,7 +1,43 @@
 import { render } from '@testing-library/react'
+import mockedAxios from 'axios'
 import React from 'react'
+import { Provider } from 'react-redux'
+import { BrowserRouter } from 'react-router-dom'
+import store from '../../store'
 import JudgeViewPage from './JudgeViewPage'
 
 it('renders judge view page', () => {
-  render(<JudgeViewPage />)
+  const compRes: any = {
+    data: {
+      slides: [{ id: 0, title: '' }],
+    },
+  }
+  const teamsRes: any = {
+    data: {
+      items: [
+        {
+          id: 1,
+          name: 'team1',
+        },
+        {
+          id: 2,
+          name: 'team2',
+        },
+      ],
+      count: 2,
+      total_count: 3,
+    },
+  }
+
+  ;(mockedAxios.get as jest.Mock).mockImplementation((path: string, params?: any) => {
+    if (path.endsWith('/teams')) return Promise.resolve(teamsRes)
+    else return Promise.resolve(compRes)
+  })
+  render(
+    <BrowserRouter>
+      <Provider store={store}>
+        <JudgeViewPage />
+      </Provider>
+    </BrowserRouter>
+  )
 })
diff --git a/client/src/pages/views/ParticipantViewPage.test.tsx b/client/src/pages/views/ParticipantViewPage.test.tsx
index f7154a9d..85360e4f 100644
--- a/client/src/pages/views/ParticipantViewPage.test.tsx
+++ b/client/src/pages/views/ParticipantViewPage.test.tsx
@@ -1,7 +1,13 @@
 import { render } from '@testing-library/react'
 import React from 'react'
+import { Provider } from 'react-redux'
+import store from '../../store'
 import ParticipantViewPage from './ParticipantViewPage'
 
 it('renders participant view page', () => {
-  render(<ParticipantViewPage />)
+  render(
+    <Provider store={store}>
+      <ParticipantViewPage />
+    </Provider>
+  )
 })
diff --git a/client/src/pages/views/PresenterViewPage.test.tsx b/client/src/pages/views/PresenterViewPage.test.tsx
index 0647a875..fd7b0a96 100644
--- a/client/src/pages/views/PresenterViewPage.test.tsx
+++ b/client/src/pages/views/PresenterViewPage.test.tsx
@@ -1,12 +1,43 @@
 import { render } from '@testing-library/react'
+import mockedAxios from 'axios'
 import React from 'react'
+import { Provider } from 'react-redux'
 import { BrowserRouter } from 'react-router-dom'
+import store from '../../store'
 import PresenterViewPage from './PresenterViewPage'
 
 it('renders presenter view page', () => {
+  const compRes: any = {
+    data: {
+      slides: [{ id: 0, title: '' }],
+    },
+  }
+  const teamsRes: any = {
+    data: {
+      items: [
+        {
+          id: 1,
+          name: 'team1',
+        },
+        {
+          id: 2,
+          name: 'team2',
+        },
+      ],
+      count: 2,
+      total_count: 3,
+    },
+  }
+
+  ;(mockedAxios.get as jest.Mock).mockImplementation((path: string, params?: any) => {
+    if (path.endsWith('/teams')) return Promise.resolve(teamsRes)
+    else return Promise.resolve(compRes)
+  })
   render(
     <BrowserRouter>
-      <PresenterViewPage />
+      <Provider store={store}>
+        <PresenterViewPage />
+      </Provider>
     </BrowserRouter>
   )
 })
diff --git a/client/src/pages/views/components/SlideDisplay.test.tsx b/client/src/pages/views/components/SlideDisplay.test.tsx
index b3cfb1dc..1a661d33 100644
--- a/client/src/pages/views/components/SlideDisplay.test.tsx
+++ b/client/src/pages/views/components/SlideDisplay.test.tsx
@@ -1,7 +1,13 @@
 import { render } from '@testing-library/react'
 import React from 'react'
+import { Provider } from 'react-redux'
+import store from '../../../store'
 import SlideDisplay from './SlideDisplay'
 
-it('renders audience view page', () => {
-  render(<SlideDisplay />)
+it('renders slide display', () => {
+  render(
+    <Provider store={store}>
+      <SlideDisplay />
+    </Provider>
+  )
 })
diff --git a/server/app/apis/competitions.py b/server/app/apis/competitions.py
index 8cdaf6da..9f17a932 100644
--- a/server/app/apis/competitions.py
+++ b/server/app/apis/competitions.py
@@ -38,6 +38,7 @@ class CompetitionsList(Resource):
 @api.route("/<ID>")
 @api.param("ID")
 class Competitions(Resource):
+    @jwt_required
     def get(self, ID):
         item = get_comp(ID)
         return item_response(schema.dump(item))
diff --git a/server/app/apis/teams.py b/server/app/apis/teams.py
index 3eb09bc2..bec6cb6a 100644
--- a/server/app/apis/teams.py
+++ b/server/app/apis/teams.py
@@ -18,10 +18,12 @@ def get_comp(CID):
 @api.route("/")
 @api.param("CID")
 class TeamsList(Resource):
+    @jwt_required
     def get(self, CID):
         item_comp = get_comp(CID)
         return list_response(list_schema.dump(item_comp.teams))
 
+    @jwt_required
     def post(self, CID):
         parser = reqparse.RequestParser()
         parser.add_argument("name", type=str, location="json")
-- 
GitLab