passbolt-styleguide 3.7.3 → 3.7.4-alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/launch.json +22 -0
- package/.vscode/settings.json +3 -0
- package/build/css/help.min.css +3 -3
- package/build/css/public.min.css +2 -2
- package/build/css/themes/default/api_authentication.min.css +3 -3
- package/build/css/themes/default/api_cloud.min.css +3 -3
- package/build/css/themes/default/api_main.min.css +3 -3
- package/build/css/themes/default/api_reports.min.css +3 -3
- package/build/css/themes/default/api_webinstaller.min.css +3 -3
- package/build/css/themes/default/ext_app.min.css +3 -3
- package/build/css/themes/default/ext_authentication.min.css +3 -3
- package/build/css/themes/default/ext_external.min.css +2 -2
- package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/default/ext_quickaccess.min.css +3 -3
- package/build/css/themes/midgar/api_authentication.min.css +3 -3
- package/build/css/themes/midgar/api_main.min.css +3 -3
- package/build/css/themes/midgar/api_reports.min.css +3 -3
- package/build/css/themes/midgar/ext_app.min.css +3 -3
- package/build/css/themes/midgar/ext_authentication.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
- package/build/js/dist/api-account-recovery.js +1 -1
- package/build/js/dist/api-app.js +1 -1
- package/build/js/dist/api-recover.js +1 -1
- package/build/js/dist/api-setup.js +1 -1
- package/build/js/dist/api-triage.js +1 -1
- package/build/js/dist/api-vendors.js +1 -1
- package/build/js/dist/api-vendors.js.LICENSE.txt +54 -44
- package/commits.md +17 -0
- package/package.json +2 -2
- package/src/img/illustrations/wave-pin_my_extension.svg +1 -1
- package/src/img/third_party/brave.svg +1 -0
- package/src/img/third_party/chrome.svg +1 -0
- package/src/img/third_party/edge.svg +1 -0
- package/src/img/third_party/firefox.svg +1 -0
- package/src/img/third_party/vivaldi.svg +1 -0
- package/src/locales/en-UK/common.json +3 -5
- package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +8 -2
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.js +51 -13
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.js +32 -9
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.page.js +13 -10
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.js +0 -3
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.js +1 -1
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.page.js +6 -6
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +2 -0
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.js +2 -2
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.test.js +7 -3
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +3 -3
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.js +2 -2
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +3 -3
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.js +2 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.js +2 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.js +3 -2
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.js +1 -1
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.js +2 -2
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +2 -1
- package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.stories.js +12 -15
- package/src/img/third_party/firefox_logo-black.png +0 -0
- package/src/img/third_party/firefox_logo-white.png +0 -0
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @since 2.11.0
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import {render} from "@testing-library/react";
|
|
15
|
+
import {fireEvent, render, waitFor} from "@testing-library/react";
|
|
16
16
|
import React from "react";
|
|
17
17
|
import DisplayBrowserNotSupported from "./DisplayBrowserNotSupported";
|
|
18
18
|
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
@@ -47,24 +47,27 @@ export default class DisplayBrowserNotSupportedPage {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
-
* Returns the download
|
|
50
|
+
* Returns the download button
|
|
51
51
|
*/
|
|
52
|
-
get
|
|
53
|
-
return this._page.container.
|
|
52
|
+
get downloadButton() {
|
|
53
|
+
return this._page.container.querySelector('.browser-not-supported .form-actions .button.primary.big').textContent;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
|
-
* Returns the download
|
|
57
|
+
* Returns the current link on the download button
|
|
58
58
|
*/
|
|
59
|
-
get
|
|
60
|
-
return this._page.container.
|
|
59
|
+
get downloadLink() {
|
|
60
|
+
return this._page.container.querySelector('.browser-not-supported .form-actions .button.primary.big').getAttribute('href');
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
64
|
-
*
|
|
64
|
+
* Simulate a click on the desired button from the browser button list.
|
|
65
|
+
* @param {number} buttonIndex
|
|
65
66
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
async clickOnBrowserButton(buttonIndex) {
|
|
68
|
+
const button = this._page.container.querySelectorAll('.browser-not-supported .browser-button-list button')[buttonIndex];
|
|
69
|
+
fireEvent.click(button, {button: 0});
|
|
70
|
+
await waitFor(() => {});
|
|
68
71
|
}
|
|
69
72
|
|
|
70
73
|
/**
|
|
@@ -157,9 +157,6 @@ class AcceptLoginServerKeyChange extends Component {
|
|
|
157
157
|
<label htmlFor="accept-new-key">
|
|
158
158
|
<Trans>Yes I checked and it is all fine.</Trans>
|
|
159
159
|
</label>
|
|
160
|
-
{this.state.hasBeenValidated && this.state.errors.hasNotAccepted &&
|
|
161
|
-
<div className="has-not-accepted error-message"><Trans>You must accept the new server key</Trans></div>
|
|
162
|
-
}
|
|
163
160
|
</div>
|
|
164
161
|
<div className="form-actions">
|
|
165
162
|
<button
|
|
@@ -47,6 +47,6 @@ describe("AcceptLoginServerKeyChange", () => {
|
|
|
47
47
|
expect.assertions(2);
|
|
48
48
|
await page.accept();
|
|
49
49
|
expect(props.onAccept).not.toHaveBeenCalled();
|
|
50
|
-
expect(page.
|
|
50
|
+
expect(page.inputContainer.className).toBe("input checkbox error");
|
|
51
51
|
});
|
|
52
52
|
});
|
|
@@ -41,17 +41,17 @@ export default class AcceptLoginServerKeyChangePage {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
* Returns the
|
|
44
|
+
* Returns the input container
|
|
45
45
|
*/
|
|
46
|
-
get
|
|
47
|
-
return this._page.container.querySelector('
|
|
46
|
+
get inputContainer() {
|
|
47
|
+
return this._page.container.querySelector('.input.checkbox');
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
* Returns the
|
|
51
|
+
* Returns the check input
|
|
52
52
|
*/
|
|
53
|
-
get
|
|
54
|
-
return this._page.container.querySelector(
|
|
53
|
+
get checkedInput() {
|
|
54
|
+
return this._page.container.querySelector('#accept-new-key');
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/**
|
package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js
CHANGED
|
@@ -536,7 +536,9 @@ class DisplayResourcesList extends React.Component {
|
|
|
536
536
|
|
|
537
537
|
return (
|
|
538
538
|
<tr id={`resource_${resource.id}`} key={key} draggable="true" className={isSelected ? "selected" : ""}
|
|
539
|
+
/* eslint-disable react/no-unknown-property */
|
|
539
540
|
unselectable={this.state.selectStrategy === "range" ? "on" : ""}
|
|
541
|
+
/* eslint-enable react/no-unknown-property */
|
|
540
542
|
onClick={ev => this.handleResourceSelected(ev, resource)}
|
|
541
543
|
onContextMenu={ev => this.handleResourceRightClick(ev, resource)}
|
|
542
544
|
onDragStart={event => this.handleDragStartEvent(event, resource)}
|
|
@@ -387,7 +387,7 @@ class DisplayResourceDetailsInformation extends React.Component {
|
|
|
387
387
|
</li>
|
|
388
388
|
<li className="modified">
|
|
389
389
|
<span className="label"><Trans>Modified</Trans></span>
|
|
390
|
-
<span className="value">{modifiedDateTimeAgo}</span>
|
|
390
|
+
<span className="value" title={this.resource.modified}>{modifiedDateTimeAgo}</span>
|
|
391
391
|
</li>
|
|
392
392
|
<li className="modified-by">
|
|
393
393
|
<span className="label"><Trans>Modified by</Trans></span>
|
|
@@ -395,7 +395,7 @@ class DisplayResourceDetailsInformation extends React.Component {
|
|
|
395
395
|
</li>
|
|
396
396
|
<li className="modified">
|
|
397
397
|
<span className="label"><Trans>Created</Trans></span>
|
|
398
|
-
<span className="value">{createdDateTimeAgo}</span>
|
|
398
|
+
<span className="value" title={this.resource.created}>{createdDateTimeAgo}</span>
|
|
399
399
|
</li>
|
|
400
400
|
<li className="modified-by">
|
|
401
401
|
<span className="label"><Trans>Created by</Trans></span>
|
|
@@ -56,9 +56,11 @@ describe("See information", () => {
|
|
|
56
56
|
page = new DisplayResourceDetailsInformationPage(context, props);
|
|
57
57
|
await waitFor(() => {});
|
|
58
58
|
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
|
|
59
|
+
const absoluteModificationDate = props.resourceWorkspaceContext.details.resource.modified;
|
|
60
|
+
const modificationDate = DateTime.fromISO(absoluteModificationDate).toRelative();
|
|
61
|
+
const absoluteCreationDate = props.resourceWorkspaceContext.details.resource.created;
|
|
62
|
+
const creationDate = DateTime.fromISO(absoluteCreationDate).toRelative();
|
|
63
|
+
expect.assertions(18);
|
|
62
64
|
expect(page.displayInformationList.usernameLabel).toBe('Username');
|
|
63
65
|
expect(page.displayInformationList.username.textContent).toBe(props.resourceWorkspaceContext.details.resource.username);
|
|
64
66
|
expect(page.displayInformationList.passwordLabel).toBe('Password');
|
|
@@ -67,10 +69,12 @@ describe("See information", () => {
|
|
|
67
69
|
expect(page.displayInformationList.uri.textContent).toBe(props.resourceWorkspaceContext.details.resource.uri);
|
|
68
70
|
expect(page.displayInformationList.modifiedLabel(1)).toBe('Modified');
|
|
69
71
|
expect(page.displayInformationList.modified(1).textContent).toBe(modificationDate);
|
|
72
|
+
expect(page.displayInformationList.modified(1).getAttribute("title")).toBe(absoluteModificationDate);
|
|
70
73
|
expect(page.displayInformationList.modifiedByLabel(1)).toBe('Modified by');
|
|
71
74
|
expect(page.displayInformationList.modifiedBy(1).textContent).toBe('ada@passbolt.com');
|
|
72
75
|
expect(page.displayInformationList.modifiedLabel(2)).toBe('Created');
|
|
73
76
|
expect(page.displayInformationList.modified(2).textContent).toBe(creationDate);
|
|
77
|
+
expect(page.displayInformationList.modified(2).getAttribute("title")).toBe(absoluteCreationDate);
|
|
74
78
|
expect(page.displayInformationList.modifiedByLabel(2)).toBe('Created by');
|
|
75
79
|
expect(page.displayInformationList.modifiedBy(2).textContent).toBe('ada@passbolt.com');
|
|
76
80
|
expect(page.displayInformationList.locationLabel).toBe('Location');
|
package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js
CHANGED
|
@@ -246,8 +246,8 @@ class CreateResourceFolder extends Component {
|
|
|
246
246
|
if (!name.length) {
|
|
247
247
|
nameError = this.translate("A name is required.");
|
|
248
248
|
}
|
|
249
|
-
if (name.length >
|
|
250
|
-
nameError = this.translate("A name can not be more than
|
|
249
|
+
if (name.length > 256) {
|
|
250
|
+
nameError = this.translate("A name can not be more than 256 char in length.");
|
|
251
251
|
}
|
|
252
252
|
return new Promise(resolve => {
|
|
253
253
|
this.setState({nameError: nameError}, resolve);
|
|
@@ -293,7 +293,7 @@ class CreateResourceFolder extends Component {
|
|
|
293
293
|
<input id="folder-name-input" name="name"
|
|
294
294
|
ref={this.nameRef}
|
|
295
295
|
type="text" value={this.state.name} placeholder={this.translate("Untitled folder")}
|
|
296
|
-
maxLength="
|
|
296
|
+
maxLength="256" required="required"
|
|
297
297
|
disabled={this.hasAllInputDisabled()}
|
|
298
298
|
onChange={this.handleInputChange}
|
|
299
299
|
autoComplete='off' autoFocus={true}
|
|
@@ -78,9 +78,9 @@ describe("Create Folder", () => {
|
|
|
78
78
|
expect(page.hasInvalidName).toBeTruthy();
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
it('AS LU I should not fill a folder name longer than
|
|
81
|
+
it('AS LU I should not fill a folder name longer than 256 characters', async() => {
|
|
82
82
|
expect.assertions(1);
|
|
83
|
-
await page.create({name: '
|
|
83
|
+
await page.create({name: '11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'});
|
|
84
84
|
expect(page.hasInvalidName).toBeTruthy();
|
|
85
85
|
});
|
|
86
86
|
});
|
package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js
CHANGED
|
@@ -276,8 +276,8 @@ class RenameResourceFolder extends Component {
|
|
|
276
276
|
if (!name.length) {
|
|
277
277
|
nameError = this.translate("A name is required.");
|
|
278
278
|
}
|
|
279
|
-
if (name.length >
|
|
280
|
-
nameError = this.translate("A name can not be more than
|
|
279
|
+
if (name.length > 256) {
|
|
280
|
+
nameError = this.translate("A name can not be more than 256 char in length.");
|
|
281
281
|
}
|
|
282
282
|
return new Promise(resolve => {
|
|
283
283
|
this.setState({nameError: nameError}, resolve);
|
|
@@ -323,7 +323,7 @@ class RenameResourceFolder extends Component {
|
|
|
323
323
|
<input id="folder-name-input" name="name"
|
|
324
324
|
ref={this.nameRef}
|
|
325
325
|
type="text" value={this.state.name} placeholder={this.translate("Untitled folder")}
|
|
326
|
-
maxLength="
|
|
326
|
+
maxLength="256" required="required"
|
|
327
327
|
onChange={this.handleInputChange}
|
|
328
328
|
disabled={this.hasAllInputDisabled()}
|
|
329
329
|
autoComplete="off" autoFocus={true}
|
|
@@ -78,9 +78,9 @@ describe("Rename Folder", () => {
|
|
|
78
78
|
expect(page.hasInvalidName).toBeTruthy();
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
it('AS LU I should not fill a folder name longer than
|
|
81
|
+
it('AS LU I should not fill a folder name longer than 256 characters', async() => {
|
|
82
82
|
expect.assertions(1);
|
|
83
|
-
await page.rename({name: '
|
|
83
|
+
await page.rename({name: '11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'});
|
|
84
84
|
expect(page.hasInvalidName).toBeTruthy();
|
|
85
85
|
});
|
|
86
86
|
});
|
|
@@ -155,7 +155,7 @@ class DisplayResourceFolderDetailsInformation extends React.Component {
|
|
|
155
155
|
</li>
|
|
156
156
|
<li className="modified">
|
|
157
157
|
<span className="label"><Trans>Modified</Trans></span>
|
|
158
|
-
<span className="value">{modifiedDateTimeAgo}</span>
|
|
158
|
+
<span className="value" title={this.folder.modified}>{modifiedDateTimeAgo}</span>
|
|
159
159
|
</li>
|
|
160
160
|
<li className="modified-by">
|
|
161
161
|
<span className="label"><Trans>Modified by</Trans></span>
|
|
@@ -163,7 +163,7 @@ class DisplayResourceFolderDetailsInformation extends React.Component {
|
|
|
163
163
|
</li>
|
|
164
164
|
<li className="modified">
|
|
165
165
|
<span className="label"><Trans>Created</Trans></span>
|
|
166
|
-
<span className="value">{createdDateTimeAgo}</span>
|
|
166
|
+
<span className="value" title={this.folder.created}>{createdDateTimeAgo}</span>
|
|
167
167
|
</li>
|
|
168
168
|
<li className="modified-by">
|
|
169
169
|
<span className="label"><Trans>Created by</Trans></span>
|
|
@@ -57,16 +57,17 @@ describe("See information", () => {
|
|
|
57
57
|
it('I should be able to identify each information name', async() => {
|
|
58
58
|
mockContextRequest(copyClipboardMockImpl);
|
|
59
59
|
jest.spyOn(ActionFeedbackContext._currentValue, 'displaySuccess').mockImplementation(() => {});
|
|
60
|
-
|
|
61
|
-
expect.assertions(12);
|
|
60
|
+
expect.assertions(14);
|
|
62
61
|
expect(page.displayInformationList.usernameLabel).toBe('Name');
|
|
63
62
|
expect(page.displayInformationList.username.textContent).toBe(props.resourceWorkspaceContext.details.folder.name);
|
|
64
63
|
expect(page.displayInformationList.modifiedLabel(1)).toBe('Modified');
|
|
65
64
|
expect(page.displayInformationList.modified(1).textContent).toContain('ago');
|
|
65
|
+
expect(page.displayInformationList.modified(1).getAttribute("title")).toBe('2020-02-01T00:00:00+00:00');
|
|
66
66
|
expect(page.displayInformationList.modifiedByLabel(1)).toBe('Modified by');
|
|
67
67
|
expect(page.displayInformationList.modifiedBy(1).textContent).toBe('ada@passbolt.com');
|
|
68
68
|
expect(page.displayInformationList.modifiedLabel(2)).toBe('Created');
|
|
69
69
|
expect(page.displayInformationList.modified(2).textContent).toContain('ago');
|
|
70
|
+
expect(page.displayInformationList.modified(2).getAttribute("title")).toBe('2020-02-01T00:00:00+00:00');
|
|
70
71
|
expect(page.displayInformationList.modifiedByLabel(2)).toBe('Created by');
|
|
71
72
|
expect(page.displayInformationList.modifiedBy(2).textContent).toBe('ada@passbolt.com');
|
|
72
73
|
expect(page.displayInformationList.locationLabel).toBe('Location');
|
|
@@ -158,7 +158,7 @@ class DisplayUserDetailsInformation extends React.Component {
|
|
|
158
158
|
</li>
|
|
159
159
|
<li className="modified">
|
|
160
160
|
<span className="label"><Trans>Modified</Trans></span>
|
|
161
|
-
<span className="value">{modified}</span>
|
|
161
|
+
<span className="value" title={this.user.modified}>{modified}</span>
|
|
162
162
|
</li>
|
|
163
163
|
<li className="status">
|
|
164
164
|
<span className="label"><Trans>Status</Trans></span>
|
|
@@ -107,11 +107,11 @@ class DisplayUserGroupDetailsInformation extends React.Component {
|
|
|
107
107
|
<ul>
|
|
108
108
|
<li className="created">
|
|
109
109
|
<span className="label"><Trans>Created</Trans></span>
|
|
110
|
-
<span className="value">{created}</span>
|
|
110
|
+
<span className="value" title={this.group.created}>{created}</span>
|
|
111
111
|
</li>
|
|
112
112
|
<li className="modified">
|
|
113
113
|
<span className="label"><Trans>Modified</Trans></span>
|
|
114
|
-
<span className="value">{modified}</span>
|
|
114
|
+
<span className="value" title={this.group.modified}>{modified}</span>
|
|
115
115
|
</li>
|
|
116
116
|
<li className="modified-by">
|
|
117
117
|
<span className="label"><Trans>Modified by</Trans></span>
|
package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js
CHANGED
|
@@ -274,6 +274,7 @@ class EnterNewPassphrase extends React.Component {
|
|
|
274
274
|
}
|
|
275
275
|
|
|
276
276
|
render() {
|
|
277
|
+
const entropy = this.state.hintClassNames.notInDictionary === "error" ? 0 : this.state.passphraseEntropy;
|
|
277
278
|
return (
|
|
278
279
|
<div className="grid grid-responsive-12 profile-passphrase">
|
|
279
280
|
<div className="row">
|
|
@@ -291,7 +292,7 @@ class EnterNewPassphrase extends React.Component {
|
|
|
291
292
|
securityToken={this.props.context.userSettings.getSecurityToken()}
|
|
292
293
|
onChange={this.handlePassphraseChange}
|
|
293
294
|
disabled={!this.areActionsAllowed}/>
|
|
294
|
-
<PasswordComplexity entropy={
|
|
295
|
+
<PasswordComplexity entropy={entropy}/>
|
|
295
296
|
</div>
|
|
296
297
|
<div className="password-hints">
|
|
297
298
|
<ul>
|
|
@@ -42,21 +42,18 @@ const getTemplateArgs = () => ({
|
|
|
42
42
|
accountRecoveryContext: {
|
|
43
43
|
status: "approved",
|
|
44
44
|
loadAccountRecoveryPolicy: () => {},
|
|
45
|
-
getPolicy: () => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
fingerprint: "848E95CC7493129AD862583129B81CA8936023DD"
|
|
58
|
-
}};
|
|
59
|
-
},
|
|
45
|
+
getPolicy: () => ({
|
|
46
|
+
policy: "opt-out",
|
|
47
|
+
}),
|
|
48
|
+
getRequestor: () => ({
|
|
49
|
+
profile: {
|
|
50
|
+
first_name: "Ada",
|
|
51
|
+
last_name: "Lovelace"
|
|
52
|
+
},
|
|
53
|
+
gpgkey: {
|
|
54
|
+
fingerprint: "848E95CC7493129AD862583129B81CA8936023DD"
|
|
55
|
+
}
|
|
56
|
+
}),
|
|
60
57
|
getRequestedDate: () => "2021-05-25T09:08:34.123"
|
|
61
58
|
}
|
|
62
59
|
});
|
|
Binary file
|
|
Binary file
|