In contrast, this does work with a catalog because it's invoked in `#create` during a normal catalog run:

```ruby
  1) Puppet::Type::User when setting shell with provider with manages_shell should call :check_valid_shell on the provider when changing shell
     Failure/Error: @provider.expects(:check_valid_shell)
     Mocha::ExpectationError:
       not all expectations were satisfied
       unsatisfied expectations:
       - expected exactly once, not yet invoked: User[foo](provider=manages_shell).check_valid_shell(any_parameters)
       satisfied expectations:
       - allowed any number of times, not yet invoked: Signal.trap(any_parameters)
       - allowed any number of times, invoked once: Puppet::Type::User.defaultprovider(any_parameters)
       - allowed any number of times, not yet invoked: Puppet::Type::User.defaultprovider(any_parameters)
       - allowed any number of times, invoked once: Puppet::Util::Storage.store(any_parameters)
       - allowed any number of times, invoked once: Puppet::Util::Storage.load(any_parameters)
     # ./spec/unit/type/user_spec.rb:386:in `block (4 levels) in <top (required)>'
```