Skip to content

Commit 6a597bc

Browse files
authored
[Improvement-17874][ApiServer] Remove the default value of expireTime and let the user choose the time (#17907)
1 parent e55c321 commit 6a597bc

File tree

3 files changed

+32
-7
lines changed
  • dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security
  • dolphinscheduler-ui/src/views/security/token-manage/components

3 files changed

+32
-7
lines changed

dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/security/TokenPage.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import org.apache.dolphinscheduler.e2e.pages.common.NavBarPage;
2222
import org.apache.dolphinscheduler.e2e.pages.security.SecurityPage.Tab;
2323

24+
import java.time.LocalDateTime;
25+
import java.time.format.DateTimeFormatter;
2426
import java.util.List;
2527

2628
import lombok.Getter;
@@ -33,6 +35,7 @@
3335
import org.openqa.selenium.support.FindBys;
3436
import org.openqa.selenium.support.PageFactory;
3537
import org.openqa.selenium.support.ui.ExpectedConditions;
38+
import org.openqa.selenium.support.ui.WebDriverWait;
3639

3740
import com.google.common.base.Strings;
3841

@@ -69,6 +72,7 @@ public TokenPage create(String userName) {
6972

7073
WebDriverWaitFactory.createWebDriverWait(driver)
7174
.until(ExpectedConditions.elementToBeClickable(createTokenForm().selectUserNameDropdown()));
75+
setExpireTime(30);
7276
createTokenForm().selectUserNameDropdown().click();
7377
WebDriverWaitFactory.createWebDriverWait(driver)
7478
.until(ExpectedConditions.visibilityOfElementLocated(new By.ByClassName(
@@ -161,4 +165,25 @@ public class TokenForm {
161165
private WebElement buttonCancel;
162166

163167
}
168+
169+
private void setExpireTime(int daysAfter) {
170+
try {
171+
By dateTimePickerInputLocator = By.cssSelector(".n-date-picker input[type='text']");
172+
WebDriverWait wait = WebDriverWaitFactory.createWebDriverWait(driver);
173+
WebElement dateTimeInput = wait.until(ExpectedConditions.elementToBeClickable(dateTimePickerInputLocator));
174+
175+
LocalDateTime futureDateTime = LocalDateTime.now().plusDays(daysAfter);
176+
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
177+
String futureDateTimeStr = futureDateTime.format(dateTimeFormatter);
178+
179+
((JavascriptExecutor) driver).executeScript(
180+
"arguments[0].value = arguments[1]; " +
181+
"arguments[0].dispatchEvent(new Event('input')); " +
182+
"arguments[0].dispatchEvent(new Event('change')); ",
183+
dateTimeInput, futureDateTimeStr);
184+
} catch (Exception e) {
185+
throw new RuntimeException(
186+
"Failed to set expire time after " + daysAfter + " days. Error: " + e.getMessage(), e);
187+
}
188+
}
164189
}

dolphinscheduler-ui/src/views/security/token-manage/components/token-modal.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ const TokenModal = defineComponent({
7171
(userStore.getUserInfo as UserInfoRes).userType === 'GENERAL_USER'
7272
? (userStore.getUserInfo as UserInfoRes).id
7373
: null
74-
variables.model.expireTime = Date.now()
74+
variables.model.expireTime = null
7575
variables.model.token = ''
7676
} else {
7777
variables.model.userId = props.row.userId
@@ -110,7 +110,7 @@ const TokenModal = defineComponent({
110110
(userStore.getUserInfo as UserInfoRes).userType === 'GENERAL_USER'
111111
? (userStore.getUserInfo as UserInfoRes).id
112112
: null
113-
variables.model.expireTime = Date.now()
113+
variables.model.expireTime = null
114114
variables.model.token = ''
115115
} else {
116116
variables.model.id = props.row.id

dolphinscheduler-ui/src/views/security/token-manage/components/use-modal.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export function useModal(
4444
? (userStore.getUserInfo as UserInfoRes).id
4545
: null
4646
),
47-
expireTime: ref(Date.now()),
47+
expireTime: null as number | null,
4848
token: ref(''),
4949
generalOptions: []
5050
},
@@ -101,7 +101,7 @@ export function useModal(
101101
const getToken = () => {
102102
const data = {
103103
userId: (userStore.getUserInfo as UserInfoRes).id,
104-
expireTime: format(variables.model.expireTime, 'yyyy-MM-dd HH:mm:ss')
104+
expireTime: format(variables.model.expireTime!, 'yyyy-MM-dd HH:mm:ss')
105105
}
106106

107107
useAsyncState(
@@ -129,7 +129,7 @@ export function useModal(
129129
const submitTokenModal = () => {
130130
const data = {
131131
userId: Number(variables.model.userId),
132-
expireTime: format(variables.model.expireTime, 'yyyy-MM-dd HH:mm:ss'),
132+
expireTime: format(variables.model.expireTime!, 'yyyy-MM-dd HH:mm:ss'),
133133
token: variables.model.token
134134
}
135135

@@ -138,7 +138,7 @@ export function useModal(
138138
(userStore.getUserInfo as UserInfoRes).userType === 'GENERAL_USER'
139139
? (userStore.getUserInfo as UserInfoRes).id
140140
: null
141-
variables.model.expireTime = Date.now()
141+
variables.model.expireTime = null
142142
variables.model.token = ''
143143
ctx.emit('confirmModal', props.showModalRef)
144144
})
@@ -148,7 +148,7 @@ export function useModal(
148148
const data = {
149149
id: variables.model.id,
150150
userId: Number(variables.model.userId),
151-
expireTime: format(variables.model.expireTime, 'yyyy-MM-dd HH:mm:ss'),
151+
expireTime: format(variables.model.expireTime!, 'yyyy-MM-dd HH:mm:ss'),
152152
token: variables.model.token
153153
}
154154

0 commit comments

Comments
 (0)