From 2e62f81e80b9f4a2e92901b539263bb49424a341 Mon Sep 17 00:00:00 2001 From: ManosAngelidis <angelidis@fortiss.org> Date: Tue, 27 Apr 2021 09:35:34 +0200 Subject: [PATCH] [NRRPLT-8250] Added GDPR status set and get functions - Implements the communication with the proxy - GET function that receives whether the user has accepted the GPDR terms. On the proxy side checks the GDPR table in the storage - SET function that sets the accepted status (only positive) when the user has accepted the GDPR terms. On the proxy side adds the status in the GDPR table --- src/mocks/handlers.js | 11 ++++++++++- src/mocks/mock_gdpr.json | 3 +++ .../proxy/__tests__/nrp-user-service.test.js | 8 ++++++++ src/services/proxy/data/endpoints.json | 3 ++- src/services/proxy/nrp-user-service.js | 18 +++++++++++++++++- 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/mocks/mock_gdpr.json diff --git a/src/mocks/handlers.js b/src/mocks/handlers.js index c6ca5a9..fefc3d9 100644 --- a/src/mocks/handlers.js +++ b/src/mocks/handlers.js @@ -9,6 +9,7 @@ import MockServerConfig from './mock_server-config.json'; import MockUsers from './mock_users.json'; import MockSimulations from './mock_simulations.json'; import MockUserGroups from './mock_user-groups.json'; +import MockGDPR from './mock_gdpr.json'; import ImageAI from '../assets/images/Artificial_Intelligence_2.jpg'; @@ -48,7 +49,15 @@ export const handlers = [ rest.get(`${config.api.proxy.url}${endpoints.proxy.identity.me.groups.url}`, (req, res, ctx) => { return res(ctx.json(MockUserGroups)); }), + rest.get(`${config.api.proxy.url}${endpoints.proxy.identity.url}${endpoints.proxy.identity.gdpr}`, + (req, res, ctx) => { + return res(ctx.json(MockGDPR)); + }), rest.get(`${config.api.proxy.url}${endpoints.proxy.identity.url}/:userID`, (req, res, ctx) => { return res(ctx.json(MockUsers[1])); - }) + }), + rest.post(`${config.api.proxy.url}${endpoints.proxy.identity.url}${endpoints.proxy.identity.gdpr}`, + (req, res, ctx) => { + return res(ctx.json({"status":"success"})); + }) ]; \ No newline at end of file diff --git a/src/mocks/mock_gdpr.json b/src/mocks/mock_gdpr.json new file mode 100644 index 0000000..5f7e96e --- /dev/null +++ b/src/mocks/mock_gdpr.json @@ -0,0 +1,3 @@ +{ + "gdpr": false +} \ No newline at end of file diff --git a/src/services/proxy/__tests__/nrp-user-service.test.js b/src/services/proxy/__tests__/nrp-user-service.test.js index 7561dcf..b3c184e 100644 --- a/src/services/proxy/__tests__/nrp-user-service.test.js +++ b/src/services/proxy/__tests__/nrp-user-service.test.js @@ -71,4 +71,12 @@ test('can determine group membership for administrators', async () => { test('can retrieve cluster reservations', async () => { expect(await NrpUserService.instance.getReservation()).toBe(undefined); +}); + +test('can retrieve false gdpr status', async () => { + expect(await NrpUserService.instance.getGdpr()).toEqual({"gdpr": false}); +}); + +test('can set gdpr status', async () => { + expect(await NrpUserService.instance.setGdpr()).toEqual({"status":"success"}); }); \ No newline at end of file diff --git a/src/services/proxy/data/endpoints.json b/src/services/proxy/data/endpoints.json index 2ab2653..d1ced87 100644 --- a/src/services/proxy/data/endpoints.json +++ b/src/services/proxy/data/endpoints.json @@ -16,7 +16,8 @@ "groups": { "url": "/identity/me/groups" } - } + }, + "gdpr": "/gdpr" }, "server": { "url": "/server" diff --git a/src/services/proxy/nrp-user-service.js b/src/services/proxy/nrp-user-service.js index 58d8ac2..5bd1c50 100644 --- a/src/services/proxy/nrp-user-service.js +++ b/src/services/proxy/nrp-user-service.js @@ -14,7 +14,7 @@ const PROXY_URL = config.api.proxy.url; const IDENTITY_BASE_URL = `${PROXY_URL}${endpoints.proxy.identity.url}`; const IDENTITY_ME_URL = `${PROXY_URL}${endpoints.proxy.identity.me.url}`; const IDENTITY_ME_GROUPS_URL = `${PROXY_URL}${endpoints.proxy.identity.me.groups.url}`; - +const GDPR_URL = `${IDENTITY_BASE_URL}${endpoints.proxy.identity.gdpr}`; /** * Service managing all data related to NRP users. */ @@ -112,6 +112,22 @@ class NrpUserService extends HttpService { getReservation() { return window.sessionStorage.getItem('clusterReservation'); } + + /** + * Get the GDPR status for current user. + * @returns {promise} Contains the GDPR status for the current user + */ + async getGdpr() { + return await (await this.httpRequestGET(GDPR_URL)).json(); + } + + /** + * Set the accepted GDPR status for current user. + * @returns {promise} Response for the current user + */ + async setGdpr() { + return await (await this.httpRequestPOST(GDPR_URL)).json(); + } } export default NrpUserService; -- GitLab