snapshot of https://github.com/mattermost/mattermost.git (master, 2026-09-16; blobs > 131072B omitted)
Some checks failed
Server CI / Postgres (shard 0) (push) Has been skipped
Server CI / Postgres (shard 3) (push) Has been skipped
BuildEnv Docker Image / build-image (push) Failing after 4s
BuildEnv Docker Image / build-image-fips (push) Failing after 4s
Migration Review & Release Notes / Generate migration review & release notes (push) Failing after 3s
Server CI / Build Environment (push) Failing after 3s
Server CI / Postgres (shard 1) (push) Has been skipped
Tools CI / check-style (mattermost-govet) (push) Failing after 4s
Server CI / Postgres (shard 2) (push) Has been skipped
Tools CI / check-style (mmgotool) (push) Failing after 3s
Server CI / Elasticsearch v8 Compatibility (push) Has been skipped
Server CI / OpenSearch v2 Compatibility (push) Has been skipped
Server CI / Postgres FIPS (shard 0) (push) Has been skipped
Tools CI / Test (mattermost-govet) (push) Failing after 3s
Server CI / Postgres FIPS (shard 1) (push) Has been skipped
Server CI / Postgres FIPS (shard 2) (push) Has been skipped
Tools CI / Test (mmgotool) (push) Failing after 3s
Server CI / Postgres FIPS (shard 3) (push) Has been skipped
Server CI / Run mmctl tests (push) Has been skipped
Server CI / Run mmctl tests (FIPS) (push) Has been skipped
Server CI / Merge Postgres Test Results (push) Has been skipped
Server CI / Merge Postgres FIPS Test Results (push) Has been skipped
Server CI / Check backport migrations (push) Has been skipped
Server CI / Check generated files (push) Has been skipped
Server CI / check-style (push) Has been skipped
Server CI / Vet API (push) Has been skipped
Server CI / Build mattermost server app (push) Has been skipped
Server CI / Server CI Complete (push) Failing after 2s
Server CI / Server CI Artifacts (push) Has been skipped
Server CI / Sentry Upload (push) Has been skipped
Server CI / Server CI Report (push) Failing after 5m1s
Server CI Nightly Race / Race Detector (push) Has been skipped
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Webapp CI Cache Warm / Warm Webapp node_modules Cache (push) Has been cancelled
E2E CI Cache Warm / Warm E2E npm Registry Cache (push) Has been cancelled
API / build (push) Has been cancelled
Web App CI / check-types (push) Has been cancelled
Web App CI / check-lint (push) Has been cancelled
Web App CI / check-i18n (push) Has been cancelled
Web App CI / check-external-links (push) Has been cancelled
Web App CI / test (platform) (push) Has been cancelled
Web App CI / test (mattermost-redux) (push) Has been cancelled
Web App CI / test (channels shard 1/4) (push) Has been cancelled
Web App CI / test (channels shard 2/4) (push) Has been cancelled
Web App CI / test (channels shard 3/4) (push) Has been cancelled
Web App CI / test (channels shard 4/4) (push) Has been cancelled
Web App CI / upload-coverage (push) Has been cancelled
Web App CI / build (push) Has been cancelled
YAML Lint / yamllint (push) Has been cancelled
Push mirrored docker images / cd/Push mirrored docker images (push) Has been cancelled
docs-cd / Build and deploy docs (push) Has been cancelled
Docs CI / build (push) Has been cancelled
E2E Cache Warm: Cypress deps / Warm Cypress deps cache (push) Has been cancelled
Scorecards supply-chain security / Scorecard analysis (push) Has been cancelled
Server CI Weekly / Postgres FIPS (push) Has been skipped
Server CI Weekly / Run mmctl tests (FIPS) (push) Has been skipped
Server CI Weekly / Postgres with binary parameters (push) Has been skipped
Server CI Weekly / Build Environment (push) Failing after 1s
Server CI Cache Warm / Warm Go Module and Build Cache (push) Failing after 2s
Server CI Nightly Race / Build Environment (push) Failing after 1s

This commit is contained in:
upstream-mirror
2026-09-16 00:29:55 +05:00
commit 240db4e2a7
15309 changed files with 2173406 additions and 0 deletions

BIN
server/tests/10000x1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

BIN
server/tests/1x10000.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

55
server/tests/README.md Normal file
View File

@@ -0,0 +1,55 @@
# Testing Text Processing
The text processing tests located in the [doc/developer/tests folder](https://github.com/mattermost/platform/tree/master/doc/developer/tests) are designed for use with the `/test url` command in isolated non-production test environments. This command posts the raw contents of a specified `.md` file in the `doc/developer/tests` folder into Mattermost.
## Turning on /test
Access the **System Console** from the Main Menu. Under *Environment > Developer* make sure that *Enable Testing Commands* is set to `true`, then click **Save**. You may also change this setting from `config.json` by setting `"EnableTesting": true`. This setting is intended only for isolated non-production environments with test users and sample data, and must never be enabled in production. Changing this setting requires a server restart to take effect.
## Running the Tests
In the text input box in Mattermost, type: `/test url [file-name-in-testing-folder].md`. Some examples:
`/test url test-emoticons.md`
`/test url test-links.md`
#### Notes:
1. If a test has prerequisites, make sure your Mattermost setup meets the requirements described at the top of the test file.
2. Some tests are over 4000 characters in length and will render across multiple posts.
## Manual Testing
It is possible to manually test specific sections of any test, instead of using the /test command. Do this by clicking **Raw** in the header for the file when it’s open in GitHub, then copy and paste any section into Mattermost to post it. Manual testing only supports sections of 4000 characters or less per post.
## Test plugins
There are three test plugins: `testplugin.tar.gz`, `testplugin-v0.0.2.tar.gz`, and `testplugin2.tar.gz`. These are use in some integration tests in the `api4` package. Any changes to the plugin bundles require updating the corresponding signatures.
First, import the public and private development key:
```sh
gpg --import ./development-public-key.gpg
gpg --import ./development-private-key.asc
```
This has to be done only once.
Then update the signatures:
```sh
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign testplugin.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign --armor testplugin.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign testplugin-v0.0.2.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign --armor testplugin-v0.0.2.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign testplugin2.tar.gz
gpg -u F3FACE45E0DE642C8BD6A8E64C7C6562C192CC1F --verbose --personal-digest-preferences SHA256 --detach-sign --armor testplugin2.tar.gz
```
Finally, include the updates bundles and signatures in your commit.
## Image fixtures
The `api4` package tests compare server-generated image thumbnails and previews against fixture files (e.g. `orientation_test_1_expected_thumb.jpeg`). Comparisons are pixel-based with a small tolerance, so minor encoder drift across patch releases is handled automatically.
However, Go's `image/jpeg` encoder has changed incompatibly across major versions (e.g. Go 1.25 → 1.26). When upgrading Go, regenerate the JPEG fixtures by running:
```sh
go test -run "TestUploadFiles/.*thumbnail" ./channels/api4/ -args -update-fixtures
go test -run "TestGenerateMiniPreviewImage" ./channels/app/imaging/ -args -update-fixtures
```
Run both from `server/`. Commit the updated fixture files alongside the Go version bump.

View File

@@ -0,0 +1,17 @@
"let p be ""higher-scoped scheme has the permission""","let q be ""permission is moderated""","let r be ""channel scheme has the permission""","let s be ""channel role is channel_admin""","""channel role has the permission"" = p ∧ (s ∨ (q → r))"
TRUE,TRUE,TRUE,TRUE,TRUE
TRUE,TRUE,TRUE,FALSE,TRUE
TRUE,TRUE,FALSE,TRUE,TRUE
TRUE,TRUE,FALSE,FALSE,FALSE
TRUE,FALSE,TRUE,TRUE,TRUE
TRUE,FALSE,TRUE,FALSE,TRUE
TRUE,FALSE,FALSE,TRUE,TRUE
TRUE,FALSE,FALSE,FALSE,TRUE
FALSE,TRUE,TRUE,TRUE,FALSE
FALSE,TRUE,TRUE,FALSE,FALSE
FALSE,TRUE,FALSE,TRUE,FALSE
FALSE,TRUE,FALSE,FALSE,FALSE
FALSE,FALSE,TRUE,TRUE,FALSE
FALSE,FALSE,TRUE,FALSE,FALSE
FALSE,FALSE,FALSE,TRUE,FALSE
FALSE,FALSE,FALSE,FALSE,FALSE
1 let p be "higher-scoped scheme has the permission" let q be "permission is moderated" let r be "channel scheme has the permission" let s be "channel role is channel_admin" "channel role has the permission" = p ∧ (s ∨ (q → r))
2 TRUE TRUE TRUE TRUE TRUE
3 TRUE TRUE TRUE FALSE TRUE
4 TRUE TRUE FALSE TRUE TRUE
5 TRUE TRUE FALSE FALSE FALSE
6 TRUE FALSE TRUE TRUE TRUE
7 TRUE FALSE TRUE FALSE TRUE
8 TRUE FALSE FALSE TRUE TRUE
9 TRUE FALSE FALSE FALSE TRUE
10 FALSE TRUE TRUE TRUE FALSE
11 FALSE TRUE TRUE FALSE FALSE
12 FALSE TRUE FALSE TRUE FALSE
13 FALSE TRUE FALSE FALSE FALSE
14 FALSE FALSE TRUE TRUE FALSE
15 FALSE FALSE TRUE FALSE FALSE
16 FALSE FALSE FALSE TRUE FALSE
17 FALSE FALSE FALSE FALSE FALSE

View File

@@ -0,0 +1,55 @@
dn: cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.4203.666.1.101
NAME 'textCustomAttribute'
DESC 'A text custom attribute for inetOrgPerson'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.4203.666.1.104
NAME 'dateCustomAttribute'
DESC 'A date attribute'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.4203.666.1.105
NAME 'selectCustomAttribute'
DESC 'A selection attribute with values: option1, option2, option3'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.4203.666.1.106
NAME 'multiSelectCustomAttribute'
DESC 'A multi-selection attribute with values: choice1, choice2, choice3, choice4'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.4203.666.1.107
NAME 'userReferenceCustomAttribute'
DESC 'A reference to a single user'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
SINGLE-VALUE )
-
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.4203.666.1.108
NAME 'multiUserReferenceCustomAttribute'
DESC 'References to multiple users'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
add: olcObjectClasses
olcObjectClasses: ( 1.3.6.1.4.1.4203.666.1.103
NAME 'customInetOrgPerson'
DESC 'inetOrgPerson with custom attributes'
SUP top
AUXILIARY
MAY ( textCustomAttribute $ dateCustomAttribute $ selectCustomAttribute $ multiSelectCustomAttribute $ userReferenceCustomAttribute $ multiUserReferenceCustomAttribute))

View File

@@ -0,0 +1,14 @@
dn: cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: ( 1.2.840.113556.1.4.2 NAME 'objectGUID'
DESC 'AD object GUID'
EQUALITY octetStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
SINGLE-VALUE )
-
add: olcObjectClasses
olcObjectClasses: ( 1.2.840.113556.1.5.256 NAME 'activeDSObject'
DESC 'Active Directory Schema Object'
SUP top AUXILIARY
MAY ( objectGUID ) )

View File

@@ -0,0 +1,82 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
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
9ZvfTj7FR/OcwlB77uGrGoi3EQ==
=F0gN
-----END PGP PRIVATE KEY BLOCK-----

View File

@@ -0,0 +1,41 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=qIjw
-----END PGP PUBLIC KEY BLOCK-----

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1011 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

View File

@@ -0,0 +1,8 @@
"let p be ""system role has permission""","let q be ""is group member""","let r be ""group role has permission""","""permission granted"" = p ∨ (q ∧ r)"
TRUE,TRUE,TRUE,TRUE
TRUE,TRUE,FALSE,TRUE
TRUE,FALSE,TRUE,TRUE
TRUE,FALSE,FALSE,TRUE
FALSE,TRUE,TRUE,TRUE
FALSE,TRUE,FALSE,FALSE
FALSE,FALSE,TRUE,FALSE
1 let p be "system role has permission" let q be "is group member" let r be "group role has permission" "permission granted" = p ∨ (q ∧ r)
2 TRUE TRUE TRUE TRUE
3 TRUE TRUE FALSE TRUE
4 TRUE FALSE TRUE TRUE
5 TRUE FALSE FALSE TRUE
6 FALSE TRUE TRUE TRUE
7 FALSE TRUE FALSE FALSE
8 FALSE FALSE TRUE FALSE

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

103
server/tests/qa-data.ldif Normal file
View File

@@ -0,0 +1,103 @@
dn: ou=groups,dc=mm,dc=test,dc=com
changetype: add
objectclass: organizationalunit
dn: ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: organizationalunit
dn: uid=corey.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: Corey
sn: Test
mail: corey.test@simulator.amazonses.com
userPassword: Password1
dn: uid=william.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: William
sn: Test
mail: william.test@simulator.amazonses.com
userPassword: Password1
dn: uid=linda.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: Linda
sn: Test
mail: linda.test@simulator.amazonses.com
userPassword: Password1
dn: uid=lindy.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: Lindy
sn: Test
mail: lindy.test@simulator.amazonses.com
userPassword: Password1
dn: uid=george.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: George
sn: Test
mail: george.test@simulator.amazonses.com
userPassword: Password1
dn: uid=jesus.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: Jesus
sn: Test
mail: jesus.test@simulator.amazonses.com
userPassword: Password1
dn: uid=carlos.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: Carlos
sn: Test
mail: carlos.test@simulator.amazonses.com
userPassword: Password1
dn: uid=jesse.test,ou=users,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
cn: Jesse
sn: Test
mail: jesse.test@simulator.amazonses.com
userPassword: Password1
dn: cn=engineering,ou=groups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
member: uid=corey.test,ou=users,dc=mm,dc=test,dc=com
member: cn=qa,ou=groups,dc=mm,dc=test,dc=com
member: cn=developers,ou=groups,dc=mm,dc=test,dc=com
dn: cn=qa,ou=groups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
member: uid=lindy.test,ou=users,dc=mm,dc=test,dc=com
member: uid=linda.test,ou=users,dc=mm,dc=test,dc=com
dn: cn=developers,ou=groups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
member: uid=william.test,ou=users,dc=mm,dc=test,dc=com
member: cn=xyz,ou=groups,dc=mm,dc=test,dc=com
member: cn=abc,ou=groups,dc=mm,dc=test,dc=com
dn: cn=xyz,ou=groups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
member: uid=jesus.test,ou=users,dc=mm,dc=test,dc=com
member: uid=george.test,ou=users,dc=mm,dc=test,dc=com
dn: cn=abc,ou=groups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
member: uid=carlos.test,ou=users,dc=mm,dc=test,dc=com
member: uid=jesse.test,ou=users,dc=mm,dc=test,dc=com

BIN
server/tests/sample-doc.doc Normal file

Binary file not shown.

Binary file not shown.

BIN
server/tests/sample-doc.odp Normal file

Binary file not shown.

BIN
server/tests/sample-doc.odt Normal file

Binary file not shown.

BIN
server/tests/sample-doc.pdf Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,17 @@
{\rtf1\ansi\deff3\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\froman\fprq2\fcharset0 Liberation Sans{\*\falt Arial};}{\f5\fnil\fprq2\fcharset0 Noto Serif CJK SC;}{\f6\fnil\fprq2\fcharset0 Noto Sans CJK SC;}{\f7\fnil\fprq2\fcharset0 FreeSans;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}
{\stylesheet{\s0\snext0\dbch\af5\langfe2052\dbch\af7\afs24\alang1081\ql\widctlpar\hyphpar0\sb0\sa0\ltrpar\cf0\loch\f3\fs24\lang1033\kerning1 Normal;}
{\s15\sbasedon0\snext16\dbch\af6\langfe2052\dbch\af7\afs28\alang1081\ql\widctlpar\hyphpar0\sb240\sa120\keepn\ltrpar\cf0\loch\f4\fs28\lang1033\kerning1 Heading;}
{\s16\sbasedon0\snext16\dbch\af5\langfe2052\dbch\af7\afs24\alang1081\sl276\slmult1\ql\widctlpar\hyphpar0\sb0\sa140\ltrpar\cf0\loch\f3\fs24\lang1033\kerning1 Text Body;}
{\s17\sbasedon16\snext17\dbch\af5\langfe2052\dbch\af7\afs24\alang1081\sl276\slmult1\ql\widctlpar\hyphpar0\sb0\sa140\ltrpar\cf0\loch\f3\fs24\lang1033\kerning1 List;}
{\s18\sbasedon0\snext18\dbch\af5\langfe2052\dbch\af7\afs24\alang1081\ai\ql\widctlpar\hyphpar0\sb120\sa120\noline\ltrpar\cf0\loch\f3\fs24\lang1033\i\kerning1 Caption;}
{\s19\sbasedon0\snext19\dbch\af5\langfe2052\dbch\af7\afs24\alang1081\ql\widctlpar\hyphpar0\sb0\sa0\noline\ltrpar\cf0\loch\f3\fs24\lang1033\kerning1 Index;}
}{\*\generator LibreOffice/7.0.1.2$Linux_X86_64 LibreOffice_project/00$Build-2}{\info{\creatim\yr2020\mo9\dy25\hr10\min37}{\revtim\yr2020\mo9\dy25\hr10\min38}{\printim\yr0\mo0\dy0\hr0\min0}}{\*\userprops}\deftab709
\hyphauto1\viewscale180
{\*\pgdsctbl
{\pgdsc0\pgdscuse451\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Default Page Style;}}
\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgndec\sftnnar\saftnnrlc\sectunlocked1\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc\htmautsp
{\*\ftnsep\chftnsep}\pgndec\pard\plain \s0\dbch\af5\langfe2052\dbch\af7\afs24\alang1081\ql\widctlpar\hyphpar0\sb0\sa0\ltrpar\cf0\loch\f3\fs24\lang1033\kerning1\ql\ltrpar{\loch
This is a simple document that contains some text.}
\par }

View File

@@ -0,0 +1,95 @@
// This file is a Go text/template used by TestPluginRPCSharedChannelSync in
// channels/app/shared_channel_test.go. It is compiled into a real plugin binary
// at test time to exercise the full plugin RPC layer (gob serialization and
// MuxBroker streaming) for the ReceiveSharedChannel* plugin APIs.
// Template fields (e.g. {{.ChannelID}}) are populated by the test before compilation.
package main
import (
"bytes"
"fmt"
"image"
"image/color"
"image/png"
"github.com/mattermost/mattermost/server/public/model"
"github.com/mattermost/mattermost/server/public/plugin"
)
type TestPlugin struct {
plugin.MattermostPlugin
}
func (p *TestPlugin) OnActivate() error {
channelID := "{{.ChannelID}}"
remoteID := "{{.RemoteID}}"
syncUserID := "{{.SyncUserID}}"
syncPostID := "{{.SyncPostID}}"
// --- Step 1: Sync a user + post via ReceiveSharedChannelSyncMsg ---
msg := model.NewSyncMsg(channelID)
msg.Users = map[string]*model.User{
syncUserID: {
Id: syncUserID,
Username: "rpc-synced-user",
Email: syncUserID + "@remote.test",
RemoteId: model.NewPointer(remoteID),
},
}
msg.Posts = []*model.Post{
{
Id: syncPostID,
ChannelId: channelID,
UserId: syncUserID,
Message: "hello from plugin over RPC",
CreateAt: model.GetMillis(),
RemoteId: model.NewPointer(remoteID),
},
}
resp, err := p.API.ReceiveSharedChannelSyncMsg(remoteID, msg)
if err != nil {
return fmt.Errorf("ReceiveSharedChannelSyncMsg failed: %w", err)
}
if len(resp.UserErrors) > 0 {
return fmt.Errorf("ReceiveSharedChannelSyncMsg had user errors: %v", resp.UserErrors)
}
if len(resp.PostErrors) > 0 {
return fmt.Errorf("ReceiveSharedChannelSyncMsg had post errors: %v", resp.PostErrors)
}
// --- Step 2: Sync a file attachment via ReceiveSharedChannelAttachmentSyncMsg ---
fileData := []byte("attachment data streamed over MuxBroker")
fi := &model.FileInfo{
CreatorId: syncUserID,
Name: "test.txt",
Size: int64(len(fileData)),
}
savedFI, err := p.API.ReceiveSharedChannelAttachmentSyncMsg(remoteID, channelID, fi, bytes.NewReader(fileData))
if err != nil {
return fmt.Errorf("ReceiveSharedChannelAttachmentSyncMsg failed: %w", err)
}
if savedFI == nil || savedFI.Id == "" {
return fmt.Errorf("ReceiveSharedChannelAttachmentSyncMsg returned nil FileInfo")
}
// --- Step 3: Sync a profile image via ReceiveSharedChannelProfileImageSyncMsg ---
img := image.NewRGBA(image.Rect(0, 0, 1, 1))
img.Set(0, 0, color.White)
var pngBuf bytes.Buffer
if err := png.Encode(&pngBuf, img); err != nil {
return fmt.Errorf("failed to encode test PNG: %w", err)
}
if err := p.API.ReceiveSharedChannelProfileImageSyncMsg(remoteID, syncUserID, pngBuf.Bytes()); err != nil {
return fmt.Errorf("ReceiveSharedChannelProfileImageSyncMsg failed: %w", err)
}
return nil
}
func main() {
plugin.ClientMain(&TestPlugin{})
}

View File

@@ -0,0 +1,148 @@
# Testing Files and Attachments
This test contains instructions for the core team to manually test common attachment types. All files for testing are stored in the [mm_file_testing](https://drive.google.com/drive/folders/0B9-SWBTtyOCBRlEyaW1IdkZ4X1k) Drive folder. Follow these instructions:
1. Download the entire [mm_file_testing](https://drive.google.com/drive/folders/0B9-SWBTtyOCBRlEyaW1IdkZ4X1k) folder.
2. Drag and drop each file type into Mattermost to upload it (upload some as multiple attachments on the same post)
3. Post the file attachment
**Notes:**
- All file types should upload and post.
- Read the expected for details on the behavior of the thumbnail and preview window.
- The expected behavior of video and audio formats depends on the operating system, browser and plugins. View the permalinks to the Public Test Channel on Pre-Release Core to see the expected cases.
- If the browser can play the media file, media player controls should appear. If the browser cannot play the file, it should appear as a regular attachment without the media controls.
### Images
**JPG**
`Images/JPG.jpg`
Expected: Scaled thumbnail & preview window
[Permalink](https://pre-release.mattermost.com/core/pl/bgx3wcd9ppdo7fz9zqokofg7sc)
**PNG**
`Images/PNG.png`
Expected: Scaled thumbnail & preview window
[Permalink](https://pre-release.mattermost.com/core/pl/zra4yhm69j8ij81iy5hw7983qe)
**BMP**
`Images/BMP.bmp`
Expected: Scaled thumbnail & preview window
[Permalink](https://pre-release.mattermost.com/core/pl/1hx7x7t1npn4jqyr5rb1qhbj3h)
**GIF**
`Images/GIF.gif`
Expected: Scaled thumbnail & preview window. GIF should auto-play in the preview window.
[Permalink](https://pre-release.mattermost.com/core/pl/j49fowdkstr57g3ed9bgpfoo5w)
**TIFF**
`Images/TIFF.tiff`
Expected: Generic attachment thumbnail & preview window
[Permalink](https://pre-release.mattermost.com/core/pl/6yad4jydaidr3pc3tihp8n8bge)
**PSD**
`Images/PSD.psd`
Expected: Generic attachment thumbnail & preview window
[Permalink](https://pre-release.mattermost.com/core/pl/4kitwk7pi78c9ck4i98f9xnzoe)
### Documents
**PDF Files**
`Documents/PDF.pdf`
Expected: Generic PDF thumbnail. File previewer shows first 5 pages of the PDF.
[Permalink](https://pre-release.mattermost.com/core/pl/o1dg6menetdszrhyxmtoqjfi8h)
**Excel**
`Documents/Excel.xlsx`
Expected: Generic Excel thumbnail & preview window.
[Permalink](https://pre-release.mattermost.com/core/pl/71wwezy3f7drze6ipundscb17y)
**PPT**
`Documents/PPT.pptx`
Expected: Generic Powerpoint thumbnail & preview window.
[Permalink](https://pre-release.mattermost.com/core/pl/mx37h4znwb8f5ffuoajusqhiew)
**Word**
`Documents/Word.docx`
Expected: Generic Word thumbnail & preview window.
[Permalink](https://pre-release.mattermost.com/core/pl/d7s76wp6kjdwfp4hgrwpijsnyy)
**Text**
`Documents/Text.txt`
Expected: Generic code thumbnail & file previewer.
[Permalink](https://pre-release.mattermost.com/core/pl/cpw539wcxtdmzeh5ju71y73o4e)
### Videos
**MP4**
`Videos/MP4.mp4`
Expected: Generic video thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/5dx5qx9t9brqfnhohccxjynx7c)
**AVI**
`Videos/AVI.avi`
Expected: Generic video thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/qwn9eiy7j3rkjyruxhcugpogdw)
**MKV**
`Videos/MKV.mkv`
Expected: Generic video thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/tszyjkr1cidhxjgiusa4mde3ja)
**MOV**
`Videos/MOV.mov`
Expected: Generic video thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/ienzppz5i3f7tbt5jiujn8uuir)
**MPG**
`Videos/MPG.mpg`
Expected: Generic video thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/skggdq1hfpritc6c88bi481p5a)
**Webm**
`Videos/WEBM.webm`
Expected: Generic video thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/7h8tysuxgfgsxeht3sbn7e4h6y)
**WMV**
`Videos/WMV.wmv`
Expected: Generic video thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/kaom7j7uyjra7bzhrre6qwdrbw)
### Audio
**MP3**
`Audio/MP3.mp3`
Expected: Generic audio thumbnail & playable preview window
[Permalink](https://pre-release.mattermost.com/core/pl/if4gn8dbrjgx8fmqmkukzefyme)
**M4A**
`Audio/M4a.m4a`
Expected: Generic audio thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/6c7qsw48ybd88bktgeykodsrrc)
**AAC**
`Audio/AAC.aac`
Expected: Generic audio thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/3naoy5pr5tydbk1m6yo1ast9ny)
**FLAC**
`Audio/FLAC.flac`
Expected: Generic audio thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/kf4cmy44dfya5efmse7rg43eih)
**OGG**
`Audio/OGG.ogg`
Expected: Generic audio thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/dezrcpbxapyexe77rjuzkrp63r)
**WAV**
`Audio/WAV.wav`
Expected: Generic audio thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/pdkxx1udepdnbmi9j8kyas5xbh)
**WMA**
`Audio/WMA.wma`
Expected: Generic audio thumbnail, view Permalink for preview window behavior. Expected depends on the operating system, browser and plugins.
[Permalink](https://pre-release.mattermost.com/core/pl/756wrmdd57dcig3m4emypp6i1h)

View File

@@ -0,0 +1,377 @@
{
"ServiceSettings": {
"SiteURL": "",
"WebsocketURL": "",
"LicenseFileLocation": "",
"ListenAddress": ":8065",
"ConnectionSecurity": "",
"TLSCertFile": "",
"TLSKeyFile": "",
"UseLetsEncrypt": false,
"LetsEncryptCertificateCacheFile": "./config/letsencrypt.cache",
"Forward80To443": false,
"ReadTimeout": 300,
"WriteTimeout": 300,
"MaximumLoginAttempts": 10,
"GoroutineHealthThreshold": -1,
"GoogleDeveloperKey": "",
"EnableOAuthServiceProvider": false,
"EnableIncomingWebhooks": true,
"EnableOutgoingWebhooks": true,
"EnableCommands": true,
"EnablePostUsernameOverride": false,
"EnablePostIconOverride": false,
"EnableLinkPreviews": false,
"EnablePermalinkPreviews": false,
"EnableTesting": false,
"EnableDeveloper": false,
"EnableSecurityFixAlert": true,
"EnableInsecureOutgoingConnections": false,
"AllowedUntrustedInternalConnections": "",
"EnableMultifactorAuthentication": false,
"EnforceMultifactorAuthentication": false,
"EnableUserAccessTokens": false,
"DCRRedirectURIAllowlist": [],
"AllowCorsFrom": "",
"AllowCookiesForSubdomains": false,
"ExtendSessionLengthWithActivity": true,
"SessionLengthWebInDays": 30,
"SessionLengthMobileInDays": 30,
"SessionLengthSSOInDays": -1,
"SessionLengthSSOInHours": 720,
"SessionCacheInMinutes": 10,
"SessionIdleTimeoutInMinutes": 0,
"WebsocketSecurePort": 443,
"WebsocketPort": 80,
"WebserverMode": "gzip",
"EnableCustomEmoji": false,
"EnableEmojiPicker": true,
"PostEditTimeLimit": -1,
"TimeBetweenUserTypingUpdatesMilliseconds": 5000,
"EnableCrossTeamSearch": true,
"EnablePostSearch": true,
"MinimumHashtagLength": 3,
"EnableUserTypingMessages": true,
"EnableChannelViewedMessages": true,
"EnableUserStatuses": true,
"ExperimentalEnableAuthenticationTransfer": true,
"ClusterLogTimeoutMilliseconds": 2000,
"EnableTutorial": true,
"EnableOnboardingFlow": true,
"ExperimentalEnableDefaultChannelLeaveJoinMessages": true,
"ExperimentalGroupUnreadChannels": "disabled",
"EnableAPITeamDeletion": false,
"EnableAPITriggerAdminNotifications": false,
"EnableHardenedMode": false
},
"TeamSettings": {
"SiteName": "Mattermost",
"MaxUsersPerTeam": 50,
"EnableUserCreation": true,
"EnableOpenServer": false,
"EnableUserDeactivation": false,
"RestrictCreationToDomains": "",
"EnableCustomBrand": false,
"CustomBrandText": "",
"CustomDescriptionText": "",
"RestrictDirectMessage": "any",
"UserStatusAwayTimeout": 300,
"MaxChannelsPerTeam": 2000,
"MaxNotificationsPerChannel": 1000,
"EnableConfirmNotificationsToChannel": true,
"TeammateNameDisplay": "username",
"ExperimentalEnableAutomaticReplies": false,
"ExperimentalPrimaryTeam": ""
},
"ClientRequirements": {
"AndroidLatestVersion": "",
"AndroidMinVersion": "",
"IosLatestVersion": "",
"IosMinVersion": ""
},
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mmuser:mostest_password@localhost:5432/mattermost_test?sslmode=disable\u0026connect_timeout=10",
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
"Trace": false,
"QueryTimeout": 30
},
"LogSettings": {
"EnableConsole": true,
"ConsoleLevel": "DEBUG",
"ConsoleJson": true,
"EnableFile": true,
"FileLevel": "INFO",
"FileJson": true,
"FileLocation": "",
"EnableWebhookDebugging": true,
"EnableDiagnostics": true
},
"PasswordSettings": {
"MinimumLength": 5,
"Lowercase": false,
"Number": false,
"Uppercase": false,
"Symbol": false,
"EnableForgotLink": true
},
"FileSettings": {
"EnableFileAttachments": true,
"EnableMobileUpload": true,
"EnableMobileDownload": true,
"MaxFileSize": 52428800,
"MaxImageResolution": 33177600,
"DriverName": "local",
"Directory": "./data/",
"EnablePublicLink": false,
"PublicLinkSalt": "3xh7ztscuezjp1jkdjybtejrtw59xjt1",
"InitialFont": "luximbi.ttf",
"AmazonS3AccessKeyId": "",
"AmazonS3SecretAccessKey": "",
"AmazonS3Bucket": "",
"AmazonS3Region": "",
"AmazonS3Endpoint": "s3.amazonaws.com",
"AmazonS3SSL": true,
"AmazonS3SignV2": false,
"AmazonS3SSE": false,
"AmazonS3Trace": false,
"AmazonS3StorageClass": ""
},
"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
"SendEmailNotifications": true,
"UseChannelInEmailNotifications": false,
"RequireEmailVerification": false,
"FeedbackName": "",
"FeedbackEmail": "test@example.com",
"ReplyToAddress": "test@example.com",
"FeedbackOrganization": "",
"EnableSMTPAuth": false,
"SMTPUsername": "",
"SMTPPassword": "",
"SMTPServer": "localhost",
"SMTPPort": "2500",
"ConnectionSecurity": "",
"SendPushNotifications": false,
"PushNotificationServer": "",
"PushNotificationContents": "generic",
"EnableEmailBatching": false,
"EmailBatchingBufferSize": 256,
"EmailBatchingInterval": 30,
"EnablePreviewModeBanner": true,
"SkipServerCertificateVerification": false,
"EmailNotificationContentsType": "full"
},
"RateLimitSettings": {
"Enable": false,
"PerSec": 10,
"MaxBurst": 100,
"MemoryStoreSize": 10000,
"VaryByRemoteAddr": true,
"VaryByUser": false,
"VaryByHeader": ""
},
"PrivacySettings": {
"ShowEmailAddress": true,
"ShowFullName": true
},
"SupportSettings": {
"TermsOfServiceLink": "https://mattermost.com/pl/terms-of-use/",
"PrivacyPolicyLink": "https://mattermost.com/pl/privacy-policy/",
"AboutLink": "https://mattermost.com/default-about/",
"HelpLink": "https://mattermost.com/pl/help/",
"ReportAProblemLink": "https://mattermost.com/pl/report-a-bug",
"ReportAProblemType": "link",
"ForgotPasswordLink": "",
"SupportEmail": "feedback@mattermost.com"
},
"AnnouncementSettings": {
"EnableBanner": false,
"BannerText": "",
"BannerColor": "#f2a93b",
"BannerTextColor": "#333333",
"AllowBannerDismissal": true
},
"ThemeSettings": {
"EnableThemeSelection": true,
"DefaultTheme": "default",
"AllowCustomThemes": true,
"AllowedThemes": []
},
"GitLabSettings": {
"Enable": false,
"Secret": "",
"Id": "",
"Scope": "",
"AuthEndpoint": "",
"TokenEndpoint": "",
"UserApiEndpoint": ""
},
"GoogleSettings": {
"Enable": false,
"Secret": "",
"Id": "",
"Scope": "profile email",
"AuthEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
"TokenEndpoint": "https://www.googleapis.com/oauth2/v4/token",
"UserApiEndpoint": "https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata"
},
"Office365Settings": {
"Enable": false,
"Secret": "",
"Id": "",
"Scope": "User.Read",
"AuthEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
"TokenEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
"UserApiEndpoint": "https://graph.microsoft.com/v1.0/me",
"DirectoryId": ""
},
"LdapSettings": {
"Enable": false,
"EnableSync": false,
"LdapServer": "",
"LdapPort": 389,
"ConnectionSecurity": "",
"BaseDN": "",
"BindUsername": "",
"BindPassword": "",
"UserFilter": "",
"FirstNameAttribute": "",
"LastNameAttribute": "",
"EmailAttribute": "",
"UsernameAttribute": "",
"NicknameAttribute": "",
"IdAttribute": "",
"PositionAttribute": "",
"LoginIdAttribute": "",
"SyncIntervalMinutes": 60,
"SkipCertificateVerification": false,
"QueryTimeout": 60,
"MaxPageSize": 0,
"LoginFieldName": ""
},
"ComplianceSettings": {
"Enable": false,
"Directory": "./data/",
"EnableDaily": false
},
"LocalizationSettings": {
"DefaultServerLocale": "en",
"DefaultClientLocale": "en",
"AvailableLocales": ""
},
"SamlSettings": {
"Enable": false,
"EnableSyncWithLdap": false,
"Verify": true,
"Encrypt": true,
"IdpUrl": "",
"IdpDescriptorUrl": "",
"IdpMetadataUrl": "",
"AssertionConsumerServiceURL": "",
"ScopingIDPProviderId": "",
"ScopingIDPName": "",
"IdpCertificateFile": "",
"PublicCertificateFile": "",
"PrivateKeyFile": "",
"FirstNameAttribute": "",
"LastNameAttribute": "",
"EmailAttribute": "",
"UsernameAttribute": "",
"NicknameAttribute": "",
"LocaleAttribute": "",
"PositionAttribute": "",
"LoginButtonText": "With SAML"
},
"NativeAppSettings": {
"AppDownloadLink": "https://mattermost.com/download/",
"AndroidAppDownloadLink": "https://mattermost.com/pl/android-app/",
"IosAppDownloadLink": "https://mattermost.com/pl/ios-app/"
},
"ClusterSettings": {
"Enable": false,
"ClusterName": "",
"OverrideHostname": "",
"UseIPAddress": true,
"UseExperimentalGossip": true,
"ReadOnlyConfig": true,
"GossipPort": 8074
},
"MetricsSettings": {
"Enable": false,
"BlockProfileRate": 0,
"ListenAddress": ":8067"
},
"ExperimentalSettings": {
},
"AnalyticsSettings": {
"MaxUsersForStatistics": 2500
},
"ElasticsearchSettings": {
"ConnectionUrl": "http://localhost:9200",
"Backend": "elasticsearch",
"Username": "elastic",
"Password": "changeme",
"EnableIndexing": false,
"EnableSearching": false,
"EnableAutocomplete": false,
"Sniff": true,
"PostIndexReplicas": 1,
"PostIndexShards": 1,
"ChannelIndexReplicas": 1,
"ChannelIndexShards": 1,
"UserIndexReplicas": 1,
"UserIndexShards": 1,
"AggregatePostsAfterDays": 365,
"PostsAggregatorJobStartTime": "03:00",
"IndexPrefix": "",
"LiveIndexingBatchSize": 1,
"BatchSize": 10000,
"RequestTimeoutSeconds": 30
},
"DataRetentionSettings": {
"EnableMessageDeletion": false,
"EnableFileDeletion": false,
"MessageRetentionDays": 365,
"FileRetentionDays": 365,
"DeletionJobStartTime": "02:00"
},
"MessageExportSettings": {
"EnableExport": false,
"ExportFormat": "actiance",
"DailyRunTime": "01:00",
"ExportFromTimestamp": 0,
"BatchSize": 10000,
"GlobalRelaySettings": {
"CustomerType": "A9",
"SMTPUsername": "",
"SMTPPassword": "",
"EmailAddress": ""
}
},
"JobSettings": {
"RunJobs": true,
"RunScheduler": true
},
"PluginSettings": {
"Enable": true,
"EnableUploads": true,
"Directory": "./test-plugins",
"ClientDirectory": "./test-client-plugins",
"Plugins": {},
"PluginStates": {
"jira": {
"Enable": true
},
"testplugin": {
"Enable": false
}
}
},
"DisplaySettings": {
"CustomUrlSchemes": []
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

424
server/tests/test-data.ldif Normal file
View File

@@ -0,0 +1,424 @@
dn: ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: organizationalunit
# generic test users
dn: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Test1
title: Test1 Title
mail: success+testone@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Test User 1
dateCustomAttribute: 20240217120000Z
selectCustomAttribute: option1
multiSelectCustomAttribute: choice1
multiSelectCustomAttribute: choice2
userReferenceCustomAttribute: uid=test.two,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=test.three,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=test.four,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=test.two,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Test2
title: Test2 Title
mail: success+testtwo@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Test User 2
dateCustomAttribute: 20240217130000Z
selectCustomAttribute: option2
multiSelectCustomAttribute: choice2
multiSelectCustomAttribute: choice3
userReferenceCustomAttribute: uid=test.three,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=test.four,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=test.five,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=test.three,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Test3
title: Test3 Title
mail: success+testthree@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Test User 3
dateCustomAttribute: 20240217140000Z
selectCustomAttribute: option3
multiSelectCustomAttribute: choice3
multiSelectCustomAttribute: choice4
userReferenceCustomAttribute: uid=test.four,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=test.five,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev-ops.one,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=test.four,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Test4
title: Test4 Title
mail: success+testfour@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Test User 4
dateCustomAttribute: 20240217150000Z
selectCustomAttribute: option1
multiSelectCustomAttribute: choice4
multiSelectCustomAttribute: choice2
userReferenceCustomAttribute: uid=test.five,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev-ops.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.one,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=test.five,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Test5
# No title to allow testing that path
mail: success+testfive@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Test User 5
dateCustomAttribute: 20240217160000Z
selectCustomAttribute: option2
multiSelectCustomAttribute: choice1
multiSelectCustomAttribute: choice2
userReferenceCustomAttribute: uid=dev-ops.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.two,ou=testusers,dc=mm,dc=test,dc=com
# developers
dn: uid=dev-ops.one,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Dev3
title: DevOps Engineer
mail: success+devopsone@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for DevOps 1
dateCustomAttribute: 20240217170000Z
selectCustomAttribute: option3
multiSelectCustomAttribute: choice2
multiSelectCustomAttribute: choice3
userReferenceCustomAttribute: uid=dev.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.two,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.three,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=dev.one,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Dev1
title: Senior Software Design Engineer
mail: success+devone@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Dev 1
dateCustomAttribute: 20240217180000Z
selectCustomAttribute: option1
multiSelectCustomAttribute: choice3
multiSelectCustomAttribute: choice4
userReferenceCustomAttribute: uid=dev.two,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.three,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.four,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=dev.two,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Dev2
title: Software Design Engineer ||
mail: success+devtwo@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Dev 2
dateCustomAttribute: 20240217190000Z
selectCustomAttribute: option2
multiSelectCustomAttribute: choice4
multiSelectCustomAttribute: choice1
userReferenceCustomAttribute: uid=dev.three,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=dev.four,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=exec.one,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=dev.three,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Dev3
title: Software Design Engineer
mail: success+devthree@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Dev 3
dateCustomAttribute: 20240217200000Z
selectCustomAttribute: option3
multiSelectCustomAttribute: choice1
multiSelectCustomAttribute: choice2
userReferenceCustomAttribute: uid=dev.four,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=exec.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=exec.two,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=dev.four,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Dev4
title: Staff Software Design Engineer
mail: success+devfour@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Dev 4
dateCustomAttribute: 20240217210000Z
selectCustomAttribute: option1
multiSelectCustomAttribute: choice2
multiSelectCustomAttribute: choice3
userReferenceCustomAttribute: uid=exec.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=exec.two,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=board.one,ou=testusers,dc=mm,dc=test,dc=com
# executive
dn: uid=exec.one,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Exec1
title: CEO
mail: success+execone@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Exec 1
dateCustomAttribute: 20240217220000Z
selectCustomAttribute: option2
multiSelectCustomAttribute: choice3
multiSelectCustomAttribute: choice4
userReferenceCustomAttribute: uid=exec.two,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=board.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=board.two,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=exec.two,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Exec2
title: CTO
mail: success+exectwo@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Exec 2
dateCustomAttribute: 20240217230000Z
selectCustomAttribute: option3
multiSelectCustomAttribute: choice4
multiSelectCustomAttribute: choice1
userReferenceCustomAttribute: uid=board.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=board.two,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=board.three,ou=testusers,dc=mm,dc=test,dc=com
# board of directors
dn: uid=board.one,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Board1
title: Director
mail: success+boardone@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Board 1
dateCustomAttribute: 20240218000000Z
selectCustomAttribute: option1
multiSelectCustomAttribute: choice1
multiSelectCustomAttribute: choice2
userReferenceCustomAttribute: uid=board.two,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=board.three,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=firstloginuser.one,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=board.two,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Board2
title: Inside Director
mail: success+boardtwo@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Board 2
dateCustomAttribute: 20240218010000Z
selectCustomAttribute: option2
multiSelectCustomAttribute: choice2
multiSelectCustomAttribute: choice3
userReferenceCustomAttribute: uid=board.three,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=firstloginuser.one,ou=testusers,dc=mm,dc=test,dc=com
multiUserReferenceCustomAttribute: uid=firstloginuser.two,ou=testusers,dc=mm,dc=test,dc=com
dn: uid=board.three,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
objectclass: customInetOrgPerson
sn: User
cn: Board3
title: Outside Director
mail: success+boardthree@simulator.amazonses.com
userPassword: Password1
textCustomAttribute: Custom Value for Board 3
dateCustomAttribute: 20240218020000Z
dn: uid=firstloginuser.one,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
sn: User
cn: FirstLogin1
mail: success+firstloginuser.one@simulator.amazonses.com
userPassword: Password1
dn: uid=firstloginuser.two,ou=testusers,dc=mm,dc=test,dc=com
changetype: add
objectclass: iNetOrgPerson
objectclass: activeDSObject
sn: User
cn: FirstLogin2
mail: success+firstloginuser.two@simulator.amazonses.com
userPassword: Password1
dn: ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: organizationalunit
# groupOfNames
# groupOfNames with Base64 Encoded ObjectGUID
dn: cn=outsiders,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
objectclass: activeDSObject
objectGUID:: UcVUS/HonkGbqAAAAAAAAA==
member: uid=board.three,ou=testusers,dc=mm,dc=test,dc=com
# groupOfNames with Hex Separated ObjectGUID
dn: cn=board,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
objectclass: activeDSObject
objectGUID: \56\6d\95\5b\a8\9a\9c\42\a4\61\00\00\00\00\00\00
member: uid=board.one,ou=testusers,dc=mm,dc=test,dc=com
member: uid=board.two,ou=testusers,dc=mm,dc=test,dc=com
member: cn=outsiders,ou=testgroups,dc=mm,dc=test,dc=com
# groupOfNames with Binary Encoded ObjectGUID
dn: cn=executive,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
objectclass: activeDSObject
objectGUID:: EBYPDQ4NDAsKCQgHBgUEAwIBAA==
member: uid=exec.one,ou=testusers,dc=mm,dc=test,dc=com
member: uid=exec.two,ou=testusers,dc=mm,dc=test,dc=com
member: cn=board,ou=testgroups,dc=mm,dc=test,dc=com
dn: cn=tgroup-84,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
objectclass: activeDSObject
objectGUID:: YB4aM/vJn0CfhQAAAAAAAA==
member: cn=tgroup-9,ou=testgroups,dc=mm,dc=test,dc=com
member: uid=test.five,ou=testusers,dc=mm,dc=test,dc=com
dn: cn=tgroup-9,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
objectclass: activeDSObject
objectGUID:: ZA9bHYy+n0KVlgAAAAAAAA==
member: cn=tgroup-97,ou=testgroups,dc=mm,dc=test,dc=com
dn: cn=tgroup-97,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfNames
objectclass: activeDSObject
objectGUID:: aS77A+eDnke+7AAAAAAAAA==
member: uid=test.four,ou=testusers,dc=mm,dc=test,dc=com
# groupOfUniqueNames
dn: cn=tgroup,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: bThfVKmRn0S5mQAAAAAAAA==
uniqueMember: uid=test.one,ou=testusers,dc=mm,dc=test,dc=com
dn: cn=ugroup,cn=tgroup,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: cEdgf5/JnkCZtQAAAAAAAA==
uniqueMember: uid=test.two,ou=testusers,dc=mm,dc=test,dc=com
dn: cn=vgroup,cn=tgroup,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: dUvgN8VXnkC9EQAAAAAAAAA==
uniqueMember: uid=test.three,ou=testusers,dc=mm,dc=test,dc=com
# Adds a group with a cycle
dn: cn=team-one-a,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: eXyMRG3BnUCJsQAAAAAAAA==
uniqueMember: uid=dev.four,ou=testusers,dc=mm,dc=test,dc=com
uniqueMember: cn=developers,ou=testgroups,dc=mm,dc=test,dc=com
dn: cn=team-one,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: fM8fdh6MnUGsYQAAAAAAAA==
uniqueMember: uid=dev.one,ou=testusers,dc=mm,dc=test,dc=com
uniqueMember: uid=dev.three,ou=testusers,dc=mm,dc=test,dc=com
uniqueMember: cn=team-one-a,ou=testgroups,dc=mm,dc=test,dc=com
dn: cn=team-two,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: gI9GHKjnn0G7LQAAAAAAAAA==
uniqueMember: uid=dev.two,ou=testusers,dc=mm,dc=test,dc=com
dn: cn=developers,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: hKDpuRd+nECFKwAAAAAAAA==
uniqueMember: uid=dev-ops.one,ou=testusers,dc=mm,dc=test,dc=com
uniqueMember: cn=team-one,ou=testgroups,dc=mm,dc=test,dc=com
uniqueMember: cn=team-two,ou=testgroups,dc=mm,dc=test,dc=com
dn: cn=firstlogingroup,ou=testgroups,dc=mm,dc=test,dc=com
changetype: add
objectclass: groupOfUniqueNames
objectclass: activeDSObject
objectGUID:: iS3dxTuwnkC2MQAAAAAAAAA==
uniqueMember: uid=firstloginuser.one,ou=testusers,dc=mm,dc=test,dc=com
uniqueMember: uid=firstloginuser.two,ou=testusers,dc=mm,dc=test,dc=com

View File

@@ -0,0 +1,12 @@
# Emoji Testing
Verify that all emoji and emoticons render.
:mattermost:
### Emoticons - Punctuation
:) :-) ;) ;-) :o :O :-o :-O :] :-] :d :-D x-d x-D :p :-P :( :-( :'( :/ :-/ :s :-s :| :-| :$ :-$ :-x <3 :+1: :-1:
### Emoji - People (continued in test-emoticons2.md)
:grinning: :smiley: :smile: :grin: :laughing: :satisfied: :sweat_smile: :joy: :rofl: :relaxed: :blush: :innocent: :slightly_smiling_face: :upside_down_face: :wink: :relieved: :heart_eyes: :kissing_heart: :kissing: :kissing_smiling_eyes: :kissing_closed_eyes: :yum: :stuck_out_tongue_winking_eye: :stuck_out_tongue_closed_eyes: :stuck_out_tongue: :money_mouth_face: :hugs: :nerd_face: :sunglasses: :clown_face: :cowboy_hat_face: :smirk: :unamused: :disappointed: :pensive: :worried: :confused: :slightly_frowning_face: :frowning_face: :imp: :japanese_ogre: :japanese_goblin: :hankey: :poop: :shit: :ghost: :skull: :skull_and_crossbones: :alien: :space_invader: :robot: :jack_o_lantern: :smiley_cat: :smile_cat: :joy_cat: :heart_eyes_cat: :smirk_cat: :kissing_cat: :scream_cat: :crying_cat_face: :pouting_cat: :open_hands: :raised_hands: :clap: :pray: :handshake: :+1: :thumbsup: :-1: :thumbsdown: :fist_oncoming: :facepunch: :punch: :fist_raised: :fist: :fist_left: :fist_right: :crossed_fingers: :v: :persevere: :confounded: :tired_face: :weary: :triumph: :angry: :rage: :pout: :no_mouth: :neutral_face: :expressionless: :hushed: :frowning: :anguished: :open_mouth: :astonished: :dizzy_face: :flushed: :scream: :fearful: :cold_sweat: :cry: :disappointed_relieved: :drooling_face: :sob: :sweat: :sleepy: :sleeping: :roll_eyes: :thinking: :lying_face: :grimacing: :zipper_mouth_face: :nauseated_face: :sneezing_face: :mask: :face_with_thermometer: :face_with_head_bandage: :smiling_imp: :metal: :ok_hand: :point_left: :point_right: :point_up_2: :point_down: :point_up: :hand: :raised_hand: :raised_back_of_hand: :raised_hand_with_fingers_splayed: :vulcan_salute: :wave: :call_me_hand: :muscle: :middle_finger: :fu: :writing_hand: :selfie: :nail_care: :ring: :lipstick: :kiss: :lips: :tongue: :ear: :nose: :footprints: :eye: :eyes: :speaking_head: :bust_in_silhouette: :busts_in_silhouette: :baby: :boy: :girl: :man: :woman: :blonde_woman: :blonde_man: :person_with_blond_hair: :older_man: :older_woman: :man_with_gua_pi_mao: :woman_with_turban: :man_with_turban: :policewoman: :policeman: :cop: :construction_worker_woman: :construction_worker_man: :construction_worker: :guardswoman: :guardsman: :female_detective: :male_detective: :detective: :woman_health_worker: :man_health_worker: :woman_farmer: :man_farmer: :woman_cook: :man_cook: :woman_student: :man_student: :woman_singer: :man_singer: :woman_teacher: :man_teacher: :woman_factory_worker: :man_factory_worker: :woman_technologist: :man_technologist: :woman_office_worker: :man_office_worker: :woman_mechanic: :man_mechanic: :woman_scientist: :man_scientist: :woman_artist: :man_artist: :woman_firefighter: :man_firefighter: :woman_pilot: :man_pilot: :woman_astronaut: :man_astronaut: :woman_judge: :man_judge: :mrs_claus: :santa: :princess: :prince: :bride_with_veil: :man_in_tuxedo: :angel: :pregnant_woman: :bowing_woman: :bowing_man: :bow: :tipping_hand_woman: :information_desk_person: :tipping_hand_man: :no_good_woman: :no_good: :ng_woman: :no_good_man: :ng_man: :ok_woman: :ok_man: :raising_hand_woman: :raising_hand: :raising_hand_man: :woman_facepalming: :man_facepalming: :woman_shrugging: :man_shrugging: :pouting_woman: :person_with_pouting_face: :pouting_man: :frowning_woman: :person_frowning: :frowning_man: :haircut_woman: :haircut: :haircut_man: :massage_woman: :massage: :massage_man: :business_suit_levitating: :dancer: :man_dancing: :dancing_women: :dancing_men: :walking_woman: :walking_man: :walking: :running_woman: :running_man: :runner: :running: :couple: :two_women_holding_hands: :two_men_holding_hands: :couple_with_heart_woman_man: :couple_with_heart: :couple_with_heart_woman_woman: :couple_with_heart_man_man:

View File

@@ -0,0 +1,7 @@
### Emoji - People (continued from test-emoticons1.md)
:couplekiss_man_woman: :couplekiss_woman_woman: :couplekiss_man_man: :family_man_woman_boy: :family: :family_man_woman_girl: :family_man_woman_girl_boy: :family_man_woman_boy_boy: :family_man_woman_girl_girl: :family_woman_woman_boy: :family_woman_woman_girl: :family_woman_woman_girl_boy: :family_woman_woman_boy_boy: :family_woman_woman_girl_girl: :family_man_man_boy: :family_man_man_girl: :family_man_man_girl_boy: :family_man_man_boy_boy: :family_man_man_girl_girl: :family_woman_boy: :family_woman_girl: :family_woman_girl_boy: :family_woman_boy_boy: :family_woman_girl_girl: :family_man_boy: :family_man_girl: :family_man_girl_boy: :family_man_boy_boy: :family_man_girl_girl: :womans_clothes: :shirt: :tshirt: :jeans: :necktie: :dress: :bikini: :kimono: :high_heel: :sandal: :boot: :mans_shoe: :shoe: :athletic_shoe: :womans_hat: :tophat: :mortar_board: :crown: :rescue_worker_helmet: :school_satchel: :pouch: :purse: :handbag: :briefcase: :eyeglasses: :dark_sunglasses: :closed_umbrella: :open_umbrella:
### Emoji - Food
:green_apple: :apple: :pear: :tangerine: :orange: :mandarin: :lemon: :banana: :watermelon: :grapes: :strawberry: :melon: :cherries: :peach: :pineapple: :kiwi_fruit: :avocado: :tomato: :eggplant: :cucumber: :carrot: :corn: :hot_pepper: :potato: :sweet_potato: :chestnut: :peanuts: :honey_pot: :croissant: :bread: :baguette_bread: :cheese: :egg: :fried_egg: :bacon: :pancakes: :fried_shrimp: :poultry_leg: :meat_on_bone: :pizza: :hotdog: :hamburger: :fries: :stuffed_flatbread: :taco: :burrito: :green_salad: :shallow_pan_of_food: :spaghetti: :ramen: :stew: :fish_cake: :sushi: :bento: :curry: :rice: :rice_ball: :rice_cracker: :oden: :dango: :shaved_ice: :ice_cream: :icecream: :cake: :birthday: :custard: :lollipop: :candy: :chocolate_bar: :popcorn: :doughnut: :cookie: :milk_glass: :baby_bottle: :coffee: :tea: :sake: :beer: :beers: :clinking_glasses: :wine_glass: :tumbler_glass: :cocktail: :tropical_drink: :champagne: :spoon: :fork_and_knife: :plate_with_cutlery:

View File

@@ -0,0 +1,7 @@
### Emoji - Nature
:dog: :cat: :mouse: :hamster: :rabbit: :fox_face: :bear: :panda_face: :koala: :tiger: :lion: :cow: :pig: :pig_nose: :frog: :monkey_face: :see_no_evil: :hear_no_evil: :speak_no_evil: :monkey: :chicken: :penguin: :bird: :baby_chick: :hatching_chick: :hatched_chick: :duck: :eagle: :owl: :bat: :wolf: :boar: :horse: :unicorn: :bee: :honeybee: :bug: :butterfly: :snail: :shell: :beetle: :ant: :spider: :spider_web: :turtle: :snake: :lizard: :scorpion: :crab: :squid: :octopus: :shrimp: :tropical_fish: :fish: :blowfish: :dolphin: :flipper: :shark: :whale: :whale2: :crocodile: :leopard: :tiger2: :water_buffalo: :ox: :cow2: :deer: :dromedary_camel: :camel: :elephant: :rhinoceros: :gorilla: :racehorse: :pig2: :goat: :ram: :sheep: :dog2: :poodle: :cat2: :rooster: :turkey: :dove: :rabbit2: :mouse2: :rat: :chipmunk: :feet: :paw_prints: :dragon: :dragon_face: :cactus: :christmas_tree: :evergreen_tree: :deciduous_tree: :palm_tree: :seedling: :herb: :shamrock: :four_leaf_clover: :bamboo: :tanabata_tree: :leaves: :fallen_leaf: :maple_leaf: :mushroom: :ear_of_rice: :bouquet: :tulip: :rose: :wilted_flower: :sunflower: :blossom: :cherry_blossom: :hibiscus: :earth_americas: :earth_africa: :earth_asia: :full_moon: :waning_gibbous_moon: :last_quarter_moon: :waning_crescent_moon: :new_moon: :waxing_crescent_moon: :first_quarter_moon: :moon: :waxing_gibbous_moon: :new_moon_with_face: :full_moon_with_face: :sun_with_face: :first_quarter_moon_with_face: :last_quarter_moon_with_face: :crescent_moon: :dizzy: :star: :star2: :sparkles: :zap: :fire: :boom: :collision: :comet: :sunny: :sun_behind_small_cloud: :partly_sunny: :sun_behind_large_cloud: :sun_behind_rain_cloud: :rainbow: :cloud: :cloud_with_rain: :cloud_with_lightning_and_rain: :cloud_with_lightning: :cloud_with_snow: :snowman_with_snow: :snowman: :snowflake: :wind_face: :dash: :tornado: :fog: :ocean: :droplet: :sweat_drops: :umbrella:
### Emoji - Activity
:soccer: :basketball: :football: :baseball: :tennis: :volleyball: :rugby_football: :8ball: :ping_pong: :badminton: :goal_net: :ice_hockey: :field_hockey: :cricket: :golf: :bow_and_arrow: :fishing_pole_and_fish: :boxing_glove: :martial_arts_uniform: :ice_skate: :ski: :skier: :snowboarder: :weight_lifting_woman: :weight_lifting_man: :person_fencing: :women_wrestling: :men_wrestling: :woman_cartwheeling: :man_cartwheeling: :basketball_woman: :basketball_man: :woman_playing_handball: :man_playing_handball: :golfing_woman: :golfing_man: :surfing_woman: :surfing_man: :surfer: :swimming_woman: :swimming_man: :swimmer: :woman_playing_water_polo: :man_playing_water_polo: :rowing_woman: :rowing_man: :rowboat: :horse_racing: :biking_woman: :biking_man: :bicyclist: :mountain_biking_woman: :mountain_biking_man: :mountain_bicyclist: :running_shirt_with_sash: :medal_sports: :medal_military: :1st_place_medal: :2nd_place_medal: :3rd_place_medal: :trophy: :rosette: :reminder_ribbon: :ticket: :tickets: :circus_tent: :woman_juggling: :man_juggling: :performing_arts: :art: :clapper: :microphone: :headphones: :musical_score: :musical_keyboard: :drum: :saxophone: :trumpet: :guitar: :violin: :game_die: :dart: :bowling: :video_game: :slot_machine:

View File

@@ -0,0 +1,7 @@
### Emoji - Travel
:car: :red_car: :taxi: :blue_car: :bus: :trolleybus: :racing_car: :police_car: :ambulance: :fire_engine: :minibus: :truck: :articulated_lorry: :tractor: :kick_scooter: :bike: :motor_scooter: :motorcycle: :rotating_light: :oncoming_police_car: :oncoming_bus: :oncoming_automobile: :oncoming_taxi: :aerial_tramway: :mountain_cableway: :suspension_railway: :railway_car: :train: :mountain_railway: :monorail: :bullettrain_side: :bullettrain_front: :light_rail: :steam_locomotive: :train2: :metro: :tram: :station: :helicopter: :small_airplane: :airplane: :flight_departure: :flight_arrival: :rocket: :artificial_satellite: :seat: :canoe: :boat: :sailboat: :motor_boat: :speedboat: :passenger_ship: :ferry: :ship: :anchor: :construction: :fuelpump: :busstop: :vertical_traffic_light: :traffic_light: :world_map: :moyai: :statue_of_liberty: :fountain: :tokyo_tower: :european_castle: :japanese_castle: :stadium: :ferris_wheel: :roller_coaster: :carousel_horse: :parasol_on_ground: :beach_umbrella: :desert_island: :mountain: :mountain_snow: :mount_fuji: :volcano: :desert: :camping: :tent: :railway_track: :motorway: :building_construction: :factory: :house: :house_with_garden: :houses: :derelict_house: :office: :department_store: :post_office: :european_post_office: :hospital: :bank: :hotel: :convenience_store: :school: :love_hotel: :wedding: :classical_building: :church: :mosque: :synagogue: :kaaba: :shinto_shrine: :japan: :rice_scene: :national_park: :sunrise: :sunrise_over_mountains: :stars: :sparkler: :fireworks: :city_sunrise: :city_sunset: :cityscape: :night_with_stars: :milky_way: :bridge_at_night: :foggy:
### Emoji - Objects
:watch: :iphone: :calling: :computer: :keyboard: :desktop_computer: :printer: :computer_mouse: :trackball: :joystick: :clamp: :minidisc: :floppy_disk: :cd: :dvd: :vhs: :camera: :camera_flash: :video_camera: :movie_camera: :film_projector: :film_strip: :telephone_receiver: :phone: :telephone: :pager: :fax: :tv: :radio: :studio_microphone: :level_slider: :control_knobs: :stopwatch: :timer_clock: :alarm_clock: :mantelpiece_clock: :hourglass: :hourglass_flowing_sand: :satellite: :battery: :electric_plug: :bulb: :flashlight: :candle: :wastebasket: :oil_drum: :money_with_wings: :dollar: :yen: :euro: :pound: :moneybag: :credit_card: :gem: :balance_scale: :wrench: :hammer: :hammer_and_pick: :hammer_and_wrench: :pick: :nut_and_bolt: :gear: :chains: :gun: :bomb: :hocho: :knife: :dagger: :crossed_swords: :shield: :smoking: :coffin: :funeral_urn: :amphora: :crystal_ball: :prayer_beads: :barber: :alembic: :telescope: :microscope: :hole: :pill: :syringe: :thermometer: :toilet: :potable_water: :shower: :bathtub: :bath: :bellhop_bell: :key: :old_key: :door: :couch_and_lamp: :bed: :sleeping_bed: :framed_picture: :shopping: :shopping_cart: :gift: :balloon: :flags: :ribbon: :confetti_ball: :tada: :dolls: :izakaya_lantern: :lantern: :wind_chime: :email: :envelope: :envelope_with_arrow: :incoming_envelope: :e-mail: :love_letter: :inbox_tray: :outbox_tray: :package: :label: :mailbox_closed: :mailbox: :mailbox_with_mail: :mailbox_with_no_mail: :postbox: :postal_horn: :scroll: :page_with_curl: :page_facing_up: :bookmark_tabs: :bar_chart: :chart_with_upwards_trend: :chart_with_downwards_trend: :spiral_notepad: :spiral_calendar: :calendar: :date: :card_index: :card_file_box: :ballot_box: :file_cabinet: :clipboard: :file_folder: :open_file_folder: :card_index_dividers: :newspaper_roll: :newspaper: :notebook: :notebook_with_decorative_cover: :ledger: :closed_book: :green_book: :blue_book: :orange_book: :books: :book: :open_book: :bookmark: :link: :paperclip: :paperclips: :triangular_ruler: :straight_ruler: :pushpin: :round_pushpin: :scissors: :pen: :fountain_pen: :black_nib: :paintbrush: :crayon: :memo: :pencil2: :mag: :mag_right: :lock_with_ink_pen: :closed_lock_with_key: :lock: :unlock:

View File

@@ -0,0 +1,3 @@
### Emoji - Symbols
:heart: :yellow_heart: :green_heart: :blue_heart: :purple_heart: :black_heart: :broken_heart: :heavy_heart_exclamation: :two_hearts: :revolving_hearts: :heartbeat: :heartpulse: :sparkling_heart: :cupid: :gift_heart: :heart_decoration: :peace_symbol: :latin_cross: :star_and_crescent: :om: :wheel_of_dharma: :star_of_david: :six_pointed_star: :menorah: :yin_yang: :orthodox_cross: :place_of_worship: :ophiuchus: :aries: :taurus: :gemini: :cancer: :leo: :virgo: :libra: :scorpius: :sagittarius: :capricorn: :aquarius: :pisces: :id: :atom_symbol: :accept: :radioactive: :biohazard: :mobile_phone_off: :vibration_mode: :u6709: :u7121: :u7533: :u55b6: :u6708: :eight_pointed_black_star: :vs: :white_flower: :ideograph_advantage: :secret: :congratulations: :u5408: :u6e80: :u5272: :u7981: :a: :b: :ab: :cl: :o2: :sos: :x: :o: :stop_sign: :no_entry: :name_badge: :no_entry_sign: :100: :anger: :hotsprings: :no_pedestrians: :do_not_litter: :no_bicycles: :non-potable_water: :underage: :no_mobile_phones: :no_smoking: :exclamation: :heavy_exclamation_mark: :grey_exclamation: :question: :grey_question: :bangbang: :interrobang: :low_brightness: :high_brightness: :part_alternation_mark: :warning: :children_crossing: :trident: :fleur_de_lis: :beginner: :recycle: :white_check_mark: :u6307: :chart: :sparkle: :eight_spoked_asterisk: :negative_squared_cross_mark: :globe_with_meridians: :diamond_shape_with_a_dot_inside: :m: :cyclone: :zzz: :atm: :wc: :wheelchair: :parking: :u7a7a: :sa: :passport_control: :customs: :baggage_claim: :left_luggage: :mens: :womens: :baby_symbol: :restroom: :put_litter_in_its_place: :cinema: :signal_strength: :koko: :symbols: :information_source: :abc: :abcd: :capital_abcd: :ng: :ok: :up: :cool: :new: :free: :zero: :one: :two: :three: :four: :five: :six: :seven: :eight: :nine: :keycap_ten: :1234: :hash: :asterisk: :arrow_forward: :pause_button: :play_or_pause_button: :stop_button: :record_button: :next_track_button: :previous_track_button: :fast_forward: :rewind: :arrow_double_up: :arrow_double_down: :arrow_backward: :arrow_up_small: :arrow_down_small: :arrow_right: :arrow_left: :arrow_up: :arrow_down: :arrow_upper_right: :arrow_lower_right: :arrow_lower_left: :arrow_upper_left: :arrow_up_down: :left_right_arrow: :arrow_right_hook: :leftwards_arrow_with_hook: :arrow_heading_up: :arrow_heading_down: :twisted_rightwards_arrows: :repeat: :repeat_one: :arrows_counterclockwise: :arrows_clockwise: :musical_note: :notes: :heavy_plus_sign: :heavy_minus_sign: :heavy_division_sign: :heavy_multiplication_x: :heavy_dollar_sign: :currency_exchange: :tm: :copyright: :registered: :wavy_dash: :curly_loop: :loop: :end: :back: :on: :top: :soon: :heavy_check_mark: :ballot_box_with_check: :radio_button: :white_circle: :black_circle: :red_circle: :large_blue_circle: :small_red_triangle: :small_red_triangle_down: :small_orange_diamond: :small_blue_diamond: :large_orange_diamond: :large_blue_diamond: :white_square_button: :black_square_button: :black_small_square: :white_small_square: :black_medium_small_square: :white_medium_small_square: :black_medium_square: :white_medium_square: :black_large_square: :white_large_square: :speaker: :mute: :sound: :loud_sound: :bell: :no_bell: :mega: :loudspeaker: :eye_speech_bubble: :speech_balloon: :thought_balloon: :right_anger_bubble: :spades: :clubs: :hearts: :diamonds: :black_joker: :flower_playing_cards: :mahjong: :clock1: :clock2: :clock3: :clock4: :clock5: :clock6: :clock7: :clock8: :clock9: :clock10: :clock11: :clock12: :clock130: :clock230: :clock330: :clock430: :clock530: :clock630: :clock730: :clock830: :clock930: :clock1030: :clock1130: :clock1230:

View File

@@ -0,0 +1,21 @@
### Emoji - Flags
:white_flag: :black_flag: :checkered_flag: :triangular_flag_on_post: :rainbow_flag: :afghanistan: :aland_islands: :albania: :algeria: :american_samoa: :andorra: :angola: :anguilla: :antarctica: :antigua_barbuda: :argentina: :armenia: :aruba: :australia: :austria: :azerbaijan: :bahamas: :bahrain: :bangladesh: :barbados: :belarus: :belgium: :belize: :benin: :bermuda: :bhutan: :bolivia: :caribbean_netherlands: :bosnia_herzegovina: :botswana: :brazil: :british_indian_ocean_territory: :british_virgin_islands: :brunei: :bulgaria: :burkina_faso: :burundi: :cape_verde: :cambodia: :cameroon: :canada: :canary_islands: :cayman_islands: :central_african_republic: :chad: :chile: :cn: :christmas_island: :cocos_islands: :colombia: :comoros: :congo_brazzaville: :congo_kinshasa: :cook_islands: :costa_rica: :cote_divoire: :croatia: :cuba: :curacao: :cyprus: :czech_republic: :denmark: :djibouti: :dominica: :dominican_republic: :ecuador: :egypt: :el_salvador: :equatorial_guinea: :eritrea: :estonia: :ethiopia: :eu: :european_union: :falkland_islands: :faroe_islands: :fiji: :finland: :fr: :french_guiana: :french_polynesia: :french_southern_territories: :gabon: :gambia: :georgia: :de: :ghana: :gibraltar: :greece: :greenland: :grenada: :guadeloupe: :guam: :guatemala: :guernsey: :guinea: :guinea_bissau: :guyana: :haiti: :honduras: :hong_kong: :hungary: :iceland: :india: :indonesia: :iran: :iraq: :ireland: :isle_of_man: :israel: :it: :jamaica: :jp: :crossed_flags: :jersey: :jordan: :kazakhstan: :kenya: :kiribati: :kosovo: :kuwait: :kyrgyzstan: :laos: :latvia: :lebanon: :lesotho: :liberia: :libya: :liechtenstein: :lithuania: :luxembourg: :macau: :macedonia: :madagascar: :malawi: :malaysia: :maldives: :mali: :malta: :marshall_islands: :martinique: :mauritania: :mauritius: :mayotte: :mexico: :micronesia: :moldova: :monaco: :mongolia: :montenegro: :montserrat: :morocco: :mozambique: :myanmar: :namibia: :nauru: :nepal: :netherlands: :new_caledonia: :new_zealand: :nicaragua: :niger: :nigeria: :niue: :norfolk_island: :northern_mariana_islands: :north_korea: :norway: :oman: :pakistan: :palau: :palestinian_territories: :panama: :papua_new_guinea: :paraguay: :peru: :philippines: :pitcairn_islands: :poland: :portugal: :puerto_rico: :qatar: :reunion: :romania: :ru: :rwanda: :st_barthelemy: :st_helena: :st_kitts_nevis: :st_lucia: :st_pierre_miquelon: :st_vincent_grenadines: :samoa: :san_marino: :sao_tome_principe: :saudi_arabia: :senegal: :serbia: :seychelles: :sierra_leone: :singapore: :sint_maarten: :slovakia: :slovenia: :solomon_islands: :somalia: :south_africa: :south_georgia_south_sandwich_islands: :kr: :south_sudan: :es: :sri_lanka: :sudan: :suriname: :swaziland: :sweden: :switzerland: :syria: :taiwan: :tajikistan: :tanzania: :thailand: :timor_leste: :togo: :tokelau: :tonga: :trinidad_tobago: :tunisia: :tr: :turkmenistan: :turks_caicos_islands: :tuvalu: :uganda: :ukraine: :united_arab_emirates: :gb: :uk: :us: :us_virgin_islands: :uruguay: :uzbekistan: :vanuatu: :vatican_city: :venezuela: :vietnam: :wallis_futuna: :western_sahara: :yemen: :zambia: :zimbabwe:
### Emoji - Special
:bowtie: :feelsgood: :finnadie: :goberserk: :godmode: :hurtrealbad: :neckbeard: :octocat: :rage1: :rage2: :rage3: :rage4: :shipit: :squirrel: :suspect: :trollface: :mattermost:
### Emoji - Without space separator
`:dolphin::hamster::strawberry:` should render as emoticons below:
:dolphin::hamster::strawberry:
### Emoji - In headings
`# Squirrel: :squirrel:` should render emoticon scaled to match heading text size (except in compact view, which renders all headings the same size, boldface):
# H1 Squirrel: :squirrel:
## H2 Squirrel: :squirrel:
### H3 Squirrel: :squirrel:

View File

@@ -0,0 +1,20 @@
# Hashtag Testing
Hashtags in Mattermosts should render as specified below.
#### These strings should auto-link:
#testing
#testing123
#test-test
#test_test
#test! (punctuation should be excluded from linking)
#test1 #test2
#hüllo
#### These strings should not auto-link:
#123test
#?test
#-test

View File

@@ -0,0 +1,53 @@
# Link Preview Tests
Link previews should embed previews of the contents of a hyperlink from a message or comment in the center channel directly below the message or comment.
Post location variation:
1. Post message in center channel with RHS closed (Expected: preview of first link renders under message)
2. Post message in center channel with RHS open (Expected: preview of first link renders under message)
3. Post comment in RHS (Expected: link preview does not render)
4. View comment in center channel with RHS closed (Expected: preview of first link renders under message)
5. View comment in center channel with RHS open (Expected: preview of first link renders under message)
6. Search for post in RHS with link (Expected: no previews render in search results)
Test the above variations with the below sample messages (e.g. 1-A, 2-B, 3-C, 4-D, etc.)
```
#### A) No link preview
Link 1 example: https://en.wikipedia.org/wiki/Olympus_Mons
Link 2 example: http://www.techmeme.com/
Link 3 example: https://about.gitlab.com/
```
```
#### B) Link preview without an image
Link 1 example: https://coveralls.io/builds/9818822/source?filename=app%2Faudit.go
```
```
#### C) Link preview with image in top right corner
Link 1 example: http://www.theglobeandmail.com/news/national/three-canadians-shortlisted-for-global-teacher-prize/article33429901/
Link 2 example: https://twitter.com/ArchieComics/status/813007703861841920
Link 3 example: https://github.com/mattermost
Link 4 example: http://stackoverflow.com/questions/36650437/using-mattermost-api-via-gitlab-oauth-as-an-end-user-with-username-and-password
```
```
#### D) Link preview with image at the bottom
If "Account Settings > Display > Default appearance of image link previews" is set to "Collapsed", you must click the expand arrows to display the image.
Link 1 example: https://www.yahoo.com/news/panasonic-unveils-solar-roof-may-212400917.html
Link 2 example: https://mattermost.com
```

View File

@@ -0,0 +1,92 @@
# Link Testing
Links in Mattermosts should render as specified below.
#### These strings should auto-link:
http://example.com
https://example.com
www.example.com
www.example.com/index
www.example.com/index.html
www.example.com/index/sub
www.example.com/index?params=1
www.example.com/index?params=1&other=2
www.example.com/index?params=1;other=2
http://example.com:8065
http://www.example.com/_/page
www.example.com/_/page
https://en.wikipedia.org/wiki/🐬
https://en.wikipedia.org/wiki/Rendering_(computer_graphics)
http://127.0.0.1
http://192.168.1.1:4040
http://[::1]:80
http://[::1]:8065
https://[::1]:80
http://[2001:0:5ef5:79fb:303a:62d5:3312:ff42]
http://[2001:0:5ef5:79fb:303a:62d5:3312:ff42]:8065
https://[2001:0:5ef5:79fb:303a:62d5:3312:ff42]
test@example.com
http://example.com/more_(than)_one_(parens)
http://example.com/(something)?after=parens
http://foo.com/unicode_(✪)_in_parens
http://✪df.ws/1234
*https://example.com*
_https://example.com_
**https://example.com**
__https://example.com__
***https://example.com***
___https://example.com___
<https://example.com>
<https://en.wikipedia.org/wiki/Rendering_(computer_graphics)>
www1.example.com
[This whole #sentence should be a link](https://example.com)
https://groups.google.com/forum/#!msg
#### These strings should not auto-link:
example.com
readme.md
@example.com
./make-compiled-client.sh
test.:test
`https://example.com`
#### Only the links within these sentences should auto-link:
(http://example.com)
(see http://example.com)
(http://example.com watch this)
(test@example.com)
This is a sentence with a http://example.com in it.
This is a sentence with a [link](http://example.com) in it.
This is a sentence with a http://example.com/_/underscore in it.
This is a sentence with a link (http://example.com) in it.
This is a sentence with a (https://en.wikipedia.org/wiki/Rendering_(computer_graphics)) in it.
This is a sentence with a http://192.168.1.1:4040 in it.
This is a sentence with a https://[::1]:80 in it.
This is a link to http://example.com.
This is a link containing http://example.com/something?with,commas,in,url, but not at end
This is a question about a link http://example.com?
#### These links should auto-link to the specified location:
[example link](example.com) links to `http://example.com`
[example.com](example.com) links to `http://example.com`
[example.com/other](example.com) links to `http://example.com`
[example.com/other_link](example.com/example) links to `http://example.com/example`
www.example.com links to `http://www.example.com`
https://example.com links to `https://example.com` and not `http://example.com`
https://en.wikipedia.org/wiki/🐬 links to the Wikipedia article on dolphins
https://en.wikipedia.org/wiki/URLs#Syntax links to the Syntax section of the Wikipedia article on URLs
test@example.com links to `mailto:test@example.com`
[email link](mailto:test@example.com) links to `mailto:test@example.com` and not `http://mailto:test@example.com`
[other link](ts3server://example.com) links to `ts3server://example.com` and not `http://ts3server://example.com`
test_underscore@example.com links to `mailto:test_underscore@example.com`
<test@example.com> with angle brackets links to `mailto:test@example.com` and not `http://mailto:test@example.com`
[link with spaces](example.com/ spaces in the url) links to either `http://example.com/ spaces in the url` or `http://example.com/%20spaces%20in%20the%20url`
#### These links should have tooltips when you hover over them
[link](example.com "catch phrase!") should have the tooltip `catch phrase!`
[link](example.com "title with "quotes"") should have the tooltip `title with "quotes"`
[link with spaces](example.com/ spaces in the url "and a title") should have the tooltip `and a title`

Some files were not shown because too many files have changed in this diff Show More