I have found a behavior that I think is an incorrect implementation of the spec:
In the conditions described below Openfire does not send a roster notification to a client informing them that a Roster entry subscription state has changed to "None".
This happens when you have 2 users with each other on their rosters, but only 1 has approved the presence subscription. So one has subscription state `To` and the other has `From`. If the user with the `From` state removes the other then the other user will receive a `<presence .. type="unsubscribed">` but not a roster notification that the subscription type is now `None`.
I can reproduce this in a client that gives you control of subscription approval(like pidgin/adium) with the following steps:
Setup For User1: Has User2 on roster with subscription state From
Setup For User2: Has User1 on roster with subscription state To
Remove User2 from User1's roster
Result: User1 receives <presence xmlns='jabber:client' from='user1@foo' to='user2@foo' type='unsubscribed'/>
but does not receive a notification indicating that roster entry for User2 has changed to "None"
The OpenFire server console can be used to verify that the User2 roster entry is None.