From 8c13f38c9950563326744befbd39b625e0f3e2c8 Mon Sep 17 00:00:00 2001 From: Philipp Czora Date: Tue, 6 Nov 2018 17:29:08 +0100 Subject: [PATCH] Added method to change password as a user --- .../src/users/components/SetUserPassword.js | 4 +-- scm-ui/src/users/components/changePassword.js | 32 +++++++++++++++++++ scm-ui/src/users/components/updatePassword.js | 15 --------- .../users/components/updatePassword.test.js | 30 +++++++++++------ 4 files changed, 55 insertions(+), 26 deletions(-) create mode 100644 scm-ui/src/users/components/changePassword.js delete mode 100644 scm-ui/src/users/components/updatePassword.js diff --git a/scm-ui/src/users/components/SetUserPassword.js b/scm-ui/src/users/components/SetUserPassword.js index ff859f59bf..76afbea5da 100644 --- a/scm-ui/src/users/components/SetUserPassword.js +++ b/scm-ui/src/users/components/SetUserPassword.js @@ -9,7 +9,7 @@ import { } from "@scm-manager/ui-components"; import * as userValidator from "./userValidation"; import { translate } from "react-i18next"; -import { updatePassword } from "./updatePassword"; +import { setPassword } from "./changePassword"; type Props = { user: User, @@ -79,7 +79,7 @@ class SetUserPassword extends React.Component { const { user } = this.props; const { password } = this.state; this.setLoadingState(); - updatePassword(user._links.password.href, password) + setPassword(user._links.password.href, password) .then(result => { if (result.error) { this.setErrorState(result.error); diff --git a/scm-ui/src/users/components/changePassword.js b/scm-ui/src/users/components/changePassword.js new file mode 100644 index 0000000000..8df632308f --- /dev/null +++ b/scm-ui/src/users/components/changePassword.js @@ -0,0 +1,32 @@ +//@flow +import { apiClient } from "@scm-manager/ui-components"; +const CONTENT_TYPE_PASSWORD_OVERWRITE = + "application/vnd.scmm-passwordOverwrite+json;v=2"; +const CONTENT_TYPE_PASSWORD_CHANGE = + "application/vnd.scmm-passwordChange+json;v=2"; + +export function setPassword(url: string, password: string) { + return apiClient + .put(url, { newPassword: password }, CONTENT_TYPE_PASSWORD_OVERWRITE) + .then(response => { + return response; + }) + .catch(err => { + return { error: err }; + }); +} + +export function updatePassword( + url: string, + oldPassword: string, + newPassword: string +) { + return apiClient + .put(url, { oldPassword, newPassword }, CONTENT_TYPE_PASSWORD_CHANGE) + .then(response => { + return response; + }) + .catch(err => { + return { error: err }; + }); +} diff --git a/scm-ui/src/users/components/updatePassword.js b/scm-ui/src/users/components/updatePassword.js deleted file mode 100644 index 3915c90bd9..0000000000 --- a/scm-ui/src/users/components/updatePassword.js +++ /dev/null @@ -1,15 +0,0 @@ -//@flow -import { apiClient } from "@scm-manager/ui-components"; -const CONTENT_TYPE_PASSWORD_OVERWRITE = - "application/vnd.scmm-passwordOverwrite+json;v=2"; - -export function updatePassword(url: string, password: string) { - return apiClient - .put(url, { newPassword: password }, CONTENT_TYPE_PASSWORD_OVERWRITE) - .then(response => { - return response; - }) - .catch(err => { - return { error: err }; - }); -} diff --git a/scm-ui/src/users/components/updatePassword.test.js b/scm-ui/src/users/components/updatePassword.test.js index a5762406b2..4a525cc2a5 100644 --- a/scm-ui/src/users/components/updatePassword.test.js +++ b/scm-ui/src/users/components/updatePassword.test.js @@ -1,23 +1,35 @@ //@flow import fetchMock from "fetch-mock"; -import { updatePassword } from "./updatePassword"; +import { setPassword, updatePassword } from "./changePassword"; -describe("get content type", () => { - const PASSWORD_URL = "/users/testuser/password"; - const password = "testpw123"; +describe("password change", () => { + const SET_PASSWORD_URL = "/users/testuser/password"; + const CHANGE_PASSWORD_URL = "/me/password"; + const oldPassword = "old"; + const newPassword = "testpw123"; afterEach(() => { fetchMock.reset(); fetchMock.restore(); }); - it("should update password", done => { - - fetchMock.put("/api/v2" + PASSWORD_URL, 204); - - updatePassword(PASSWORD_URL, password).then(content => { + // TODO: Verify content type + it("should set password", done => { + fetchMock.put("/api/v2" + SET_PASSWORD_URL, 204); + setPassword(SET_PASSWORD_URL, newPassword).then(content => { done(); }); }); + + // TODO: Verify content type + it("should update password", done => { + fetchMock.put("/api/v2" + CHANGE_PASSWORD_URL, 204); + + updatePassword(CHANGE_PASSWORD_URL, oldPassword, newPassword).then( + content => { + done(); + } + ); + }); });