The owner of the trigger is DAVE, so no matter who invokes the trigger at logon time, the trigger executes on behalf of its owner, DAVE. So in fact, with each login you are setting role TEST_ROLE to DAVE!
If you are on 8i, you should use "invokers right" option. I think it can't be applied to trigger, so you should wrap your call "dbms_session.set_role('TEST_ROLE IDENTIFIED BY TEST_ROLE');" into a procedure, created with invokers rights,and call that procedure from within your trigger. That way, the role will be set to STEVE when he logs in.
BTW, I hope you are avare that when you set TEST_ROLE by calling DBMS_SESSION.SET_ROLE you are at the same time disabling all other roles active for that user (RESOURCE and CONNECT in the case of STEVE).
Jurij Modic
ASCII a stupid question, get a stupid ANSI
24 hours in a day .... 24 beer in a case .... coincidence?