When starting shards as replica sets, this test fails to create user on the shard. The solution is to use st.rs0.getPrimary() instead of st.shard0. However, we want to investigate why doing this fixes the auth issue.
Also, when starting shards as replica sets, we need to log user "internal" out by doing st.s.getDB('admin').logout(); before st.stop(). Otherwise, the test will hang when ReplSetTest keeps trying to run isMaster against the admin db and failing with "too many users are authenticated".