🔧 extjs-dev-webmailsim
Development Package providing fake endpoints for the development of extjs-app-webmail.
The package intercepts outgoing network requests to all urls matching a specific regular expression. Additionally, you can configure whether the package's intercepting should be enabled or disabled - this makes it easier to use this package in environments where you have to test for fully functional network behavior with real HTTP-requests and live- and mock-data should be used side-by-side.
Use this package, if you...
- are developing with conjoon and want to use demo data with extjs-app-webmail
Installation
info
This package is automatically installed with conjoon when used in a --save-dev
context.
$ npm i --save-dev @conjoon/extjs-dev-webmailsim
If you want to develop with this package, run the build:dev
-script:
$ npm run build:dev
Testing environment will then be available via
$ npm test
Configuring Sencha Ext JS
Make sure your ExtJS workspace.json
is properly configured to look up local repositories in the node_modules
-directory.
{
"packages": {
"dir": "${workspace.dir}/node_modules/@l8js,${workspace.dir}/node_modules/@conjoon,...",
"extract": "${workspace.dir}/packages/remote"
}
}
Update the app.json
of the application by specifying this package in the uses
-property in
either the development
and/or production
section:
{
"development": {
"uses": [
"extjs-dev-imapusersim",
"extjs-app-imapuser",
"extjs-app-webmail",
"extjs-dev-webmailsim"
]
},
"production": {
"uses": [
"extjs-app-imapuser",
"extjs-app-webmail"
]
}
}
Configuration
extjs-dev-webmailsim is a coon.js package and is tagged as such in the
package.json
:
{
"coon-js": {
"package": {
"autoLoad": {
"registerController": true
},
"config" : "${package.resourcePath}/extjs-dev-webmailsim.conf.json"
}
}
}
By default, this package's configuration can be found in this package's resources
folder
in a file named extjs-dev-webmailsim.conf.json
.
What goes into an extjs-dev-webmailsim
configuration?
conjoon.conf.json
The following can be applied directly to conjoon.dev.conf.json
. Refer to the configuration guide!
The configuration file for this package has various entries representing entities endpoints for accessing them:
mailAccount
, mailFolder
, messageItem
and attachment
:
{
"attachment": {
"url": "https://ddev-ms-email.ddev.site/rest-api-email/api/v.*?/MailAccounts/(.+)/MailFolders/(.+)/MessageItems/(.+)/Attachments(/.*)?",
"enabled": true,
"delay": 250
},
"messageItem": {
"url": "https://ddev-ms-email.ddev.site/rest-api-email/api/v.*?/MailAccounts/(.+)/MailFolders/(.+)/MessageItems(/.*)?",
"enabled": true,
"delay": 250
},
"mailFolder": {
"url": "https://ddev-ms-email.ddev.site/rest-api-email/api/v.*?/MailAccounts/(.+)/MailFolders(/.*)?",
"enabled": true,
"delay": 250
},
"mailAccount": {
"url": "https://ddev-ms-email.ddev.site/rest-api-email/api/v.*?/MailAccounts(/d+)?",
"enabled": true,
"delay": 250
}
}
Each entry in the configuration can be configured with
url
- Type:
String
In order to properly intercept outgoing requests to the services as described in rest-api-mail, the package needs to be configured with a regular expression for matching urls that should be intercepted for accessing the represented entity.
info
The package is pre-configured with these regular expressions. For example, HTTP-requests to the following URLs are intercepted by this package:
https://dev-ms-email.ddev.site/rest-api-email/api/v0/MailAccounts
https://dev-ms-email.ddev.site/rest-api-email/api/v1/MailAccounts/dev/MailFolders/INBOX.Sent/MessageItems/123
enabled
- Type:
Bool
If this package is used with your development or production environment, intercepting urls can be enabled/disabled by changing the property enabled
to either true
or false
delay
- Type:
Integer
The delay (in milliseconds) for responses to be returned, to mimic network latency.
Order of matching URLs
URL-matching is considered in the order the urls are configured. Make sure more specific regular expressions are defined first, followed by more common ones.
For example, the url https://dev-ms-email.ddev.site/rest-api-email/api/v1/MailAccounts/dev/MailFolders/INBOX.Sent/MessageItems/123
would be intercepted by the regular expression defined with mailFolder
(because it is defined at first), although it should be intercepted by messageItem
:
{
"mailFolder": {
"url": "https://ddev-ms-email.ddev.site/rest-api-email/api/v.*?/MailAccounts/(.+)/MailFolders(/.*)?",
"enabled": true,
"delay": 250
},
"messageItem": {
"url": "https://ddev-ms-email.ddev.site/rest-api-email/api/v.*?/MailAccounts/(.+)/MailFolders/(.+)/MessageItems(/.*)?",
"enabled": true,
"delay": 250
}
}
Changing Response Data
If an url was intercepted, static data is returned, complying with REST API. Static data can be edited in the files src/data/table/MessageTable.js
(message envelopes and bodies) and src/data/table/AttachmentTable.js
(attachments), which are both part of this package.