Bien, resulta que la URL me conecta con heroku_app########
base de datos, pero luego intento acceder a la base de datos llamada test
así que obviamente no estoy autenticado. Hubiera sido bueno que Mongo hubiera devuelto un error especificando que había iniciado sesión pero no en la base de datos correcta. Bueno.
No había prestado suficiente atención al formato del uri, que es
mongodb://username:[email protected]:port/database
Resulta que la parte de la base de datos es... bastante importante.
(De hecho, encontré la respuesta a esto mientras escribía la prueba, pero si esta respuesta hubiera existido, podría haberme ahorrado una vergonzosa cantidad de tiempo, así que la escribiré de nuevo y la responderé yo mismo).