After a quick look, it appears that you're expecting a validation failure on this test, but the "invalid attributes" you're counting on aren't --
e.g. instead of
let(:invalid_attributes) { { first_name: @user.first_name, password: @user.password } }
(which won't empty the email that was already set) try
let(:invalid_attributes) { { first_name: @user.first_name, password: @user.password, email: nil } }
and your save will fail.
HTH!