Instead of depending on group_exists on the provider I think we should have a function here that checks if the group exists using Etc.getgrnam on non-windows and Chef::Util::Windows::NetGroup on windows. 

If we had a bug in provider which made it not create the groups but report them exists, using provider.group_exists will make the tests pass and we wouldn't catch the bug. In our functional tests we should be independent of the inner workings of the system under test (Group Resource in this case) as much as possible.