If the light fixture itself is rated as a junction box, then no box is needed in the wall. This usually is the case with fluorescent fixtures into which the cable is led via a small hole; such fixtures have no mounting provision for an octagon box. If the fixture has been made to mount on an octagon box, then of course it ought to have been mounted on one, which would require a much larger hole in the mirror.
Assuming the OP is in the US, he might find a solution using the
12/2/2 cable that I hear is available there; use one pair to feed the receptacle on a 20A breaker and the other pair would junction onto the old 14/2 to go to the light on a 15A breaker. A huge waste of copper and he's already pulled 12/2 to the outlet, so this is not an appealing solution, but it might be a consideration for someone else who's facing a similar spot.(If the OP happens to be in Canada, he needs to remember that Canadian code mandates 15A breakers on any circuit containing a lighting fixture, even if it's all wired 12-ga.)
To my mind the worst of it is the junction box in the ceiling. That's going to require a cover plate, a monument to the original bad work.
Chip C Toronto