Los nombres de las clases UsuarioP y UsuarioF son poco felices, poco cuesta poner el nombre completo, por otra parte no me parece bien que un usuario q se registra sea UsuarioP hasta que se confirma y ahi se pasa a UsuarioF y tener que andar distinguiendo por todo el sistema si preguntamos por uno o el otro, amen de que tiene otro problema conceptual un poco mayor que hace que el usuario pierda la identidad en el paso de UsuarioP a UsuarioF, recordemos que la identidad de los objetos debe ser la misma durante toda su vida util en el sistema.
Un usuario que agrega a un amigo no deberia llamar al metodo aceptar del otro usuario, ya que esto y la ausencia total de la confirmacion es lo mismo...
Los test unitarios deberian ser unitarios, es decir, cada metodo @Test deberia probar una funcionalidad, y si varios test comparten algun codigo comun este deberia ir en el @Before (con esto apunto al test de las fotos, donde en un solo metodo se prueban 4 funcionalidades distintas).
Los clientes de mis objetos no deberian conocer mi implementacion interna (encapsulamiento), es decir el cliente no tiene por q saber q tengo una coleccion de mensajes y tener q obtenerla y hacer un .contains() para saber si mi objeto tiene determinado mensaje, mi objeto deberia exponer un .tengoMensaje(Mensaje m) e internamente hacer eso.
Maven es una buena recomendacion para la proxima!
Para ser la primer entrega el tp en su conjunto esta muy bien (Aprobado), recuerden corregir estas cosas para la proxima