In the auth spec tests, step 4, there are various test cases defined to test SASLprep behavior.
Examples are given of how usernames and passwords containing unicode characters that need to be UTF-8 encoded and escaped would be specified in a connection string, e.g.
- mongodb://IX:I%C2%ADX@mongodb.example.com/admin
- mongodb://%E2%85%A8:IV@mongodb.example.com/admin
- mongodb://%E2%85%A8:I%C2%ADV@mongodb.example.com/admin
It seems that since these cases are in the spec libmongoc should be able to successfully parse all these URIs. However, these cases yield the following errors, respectively:
- Incorrect URI escapes in password
- Incorrect URI escapes in username. Percent-encode username and password according to RFC 3986
- Incorrect URI escapes in username. Percent-encode username and password according to RFC 3986
libmongoc does seem to implement corresponding tests that set these usernames and password via setters (see https://github.com/mongodb/mongo-c-driver/blob/116cde0c2ff07f59ee0afa7831577700d4beb026/src/libmongoc/tests/test-mongoc-scram.c#L515) but I cannot find tests setting them via the connection string.