mirror of
https://github.com/minio/minio.git
synced 2025-01-12 15:33:22 -05:00
add min length validation to access key and secret key (#7721)
While changing the credentials through MinIO browser, Update button will be disabled if keys are lesser than minimum length. Fixes #7713
This commit is contained in:
parent
a73da7755e
commit
8528017ad3
@ -24,6 +24,7 @@ import classNames from "classnames"
|
|||||||
|
|
||||||
import { Modal, ModalBody, ModalHeader } from "react-bootstrap"
|
import { Modal, ModalBody, ModalHeader } from "react-bootstrap"
|
||||||
import InputGroup from "./InputGroup"
|
import InputGroup from "./InputGroup"
|
||||||
|
import { ACCESS_KEY_MIN_LENGTH, SECRET_KEY_MIN_LENGTH } from "../constants"
|
||||||
|
|
||||||
export class ChangePasswordModal extends React.Component {
|
export class ChangePasswordModal extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -110,8 +111,8 @@ export class ChangePasswordModal extends React.Component {
|
|||||||
return (
|
return (
|
||||||
this.state.currentAccessKey.length > 0 &&
|
this.state.currentAccessKey.length > 0 &&
|
||||||
this.state.currentSecretKey.length > 0 &&
|
this.state.currentSecretKey.length > 0 &&
|
||||||
this.state.newAccessKey.length > 0 &&
|
this.state.newAccessKey.length >= ACCESS_KEY_MIN_LENGTH &&
|
||||||
this.state.newSecretKey.length > 0
|
this.state.newSecretKey.length >= SECRET_KEY_MIN_LENGTH
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ jest.mock("../../web", () => ({
|
|||||||
currentAccessKey == "minio" &&
|
currentAccessKey == "minio" &&
|
||||||
currentSecretKey == "minio123" &&
|
currentSecretKey == "minio123" &&
|
||||||
newAccessKey == "test" &&
|
newAccessKey == "test" &&
|
||||||
newSecretKey == "test123"
|
newSecretKey == "test1234"
|
||||||
) {
|
) {
|
||||||
return Promise.resolve({})
|
return Promise.resolve({})
|
||||||
} else {
|
} else {
|
||||||
@ -122,6 +122,24 @@ describe("ChangePasswordModal", () => {
|
|||||||
expect(wrapper.find("#newAccesskey").exists()).toBeFalsy()
|
expect(wrapper.find("#newAccesskey").exists()).toBeFalsy()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should disble Update button for invalid accessKey or secretKey", () => {
|
||||||
|
const showAlert = jest.fn()
|
||||||
|
const wrapper = shallow(
|
||||||
|
<ChangePasswordModal serverInfo={serverInfo} showAlert={showAlert} />
|
||||||
|
)
|
||||||
|
wrapper
|
||||||
|
.find("#currentAccessKey")
|
||||||
|
.simulate("change", { target: { value: "minio" } })
|
||||||
|
wrapper
|
||||||
|
.find("#currentSecretKey")
|
||||||
|
.simulate("change", { target: { value: "minio123" } })
|
||||||
|
wrapper.find("#newAccessKey").simulate("change", { target: { value: "t" } })
|
||||||
|
wrapper
|
||||||
|
.find("#newSecretKey")
|
||||||
|
.simulate("change", { target: { value: "t1" } })
|
||||||
|
expect(wrapper.find("#update-keys").prop("disabled")).toBeTruthy()
|
||||||
|
})
|
||||||
|
|
||||||
it("should update accessKey and secretKey when Update button is clicked", () => {
|
it("should update accessKey and secretKey when Update button is clicked", () => {
|
||||||
const showAlert = jest.fn()
|
const showAlert = jest.fn()
|
||||||
const wrapper = shallow(
|
const wrapper = shallow(
|
||||||
@ -138,7 +156,8 @@ describe("ChangePasswordModal", () => {
|
|||||||
.simulate("change", { target: { value: "test" } })
|
.simulate("change", { target: { value: "test" } })
|
||||||
wrapper
|
wrapper
|
||||||
.find("#newSecretKey")
|
.find("#newSecretKey")
|
||||||
.simulate("change", { target: { value: "test123" } })
|
.simulate("change", { target: { value: "test1234" } })
|
||||||
|
expect(wrapper.find("#update-keys").prop("disabled")).toBeFalsy()
|
||||||
wrapper.find("#update-keys").simulate("click")
|
wrapper.find("#update-keys").simulate("click")
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
expect(showAlert).toHaveBeenCalledWith({
|
expect(showAlert).toHaveBeenCalledWith({
|
||||||
|
@ -28,3 +28,6 @@ export const NONE = "none"
|
|||||||
export const SHARE_OBJECT_EXPIRY_DAYS = 5
|
export const SHARE_OBJECT_EXPIRY_DAYS = 5
|
||||||
export const SHARE_OBJECT_EXPIRY_HOURS = 0
|
export const SHARE_OBJECT_EXPIRY_HOURS = 0
|
||||||
export const SHARE_OBJECT_EXPIRY_MINUTES = 0
|
export const SHARE_OBJECT_EXPIRY_MINUTES = 0
|
||||||
|
|
||||||
|
export const ACCESS_KEY_MIN_LENGTH = 3
|
||||||
|
export const SECRET_KEY_MIN_LENGTH = 8
|
||||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user