jXMPP, a FOSS XMPP-base library, has just been extended by a testframework for “XMPP-Strings”. Currently, this is limited to Local-, Domain- and Resourceparts and the various XMPP address types, but may be extended to future Strings found in XMPP-land.
The testframework comes with a corpus of known valid and invalid XMPP addresses (JIDs). I am happy about feedback and contributions to the corpus. Hopefully it becomes a useful resource for XMPP developers. You can find the corpus under
The testframework currently uses the following libraries to prepare and enforce the Strings:
- GNU libidn
- xmpp.rocks’s PRECIS
a further minimalistic implementation, called “simple”, is part of jXMPP.
You can run the testframework simply by
git clone https://github.com/igniterealtime/jxmpp.git cd jxmpp ./test-xmpp-strings
if you have
python3 in your path.
Please note that ICU4J and libidn (and “simple”) do not currently provide the required PRECIS profile and hence the older Stringprep profiles are used.
Feel free to use the provided infrastructure to test your own implementation. Thanks to JNI and the polyglot programming feature of the GraalVM, it should be easily possible. Please contact me if you need assistance.