def test_share_group_snapshot_reset_status_with_different_roles(
            self, role, valid_code, valid_status, version):
        ctxt = self._get_context(role)
        group_snap, req = self._setup_share_group_snapshot_data()
        action_name = 'reset_status'
        body = {action_name: {'status': constants.STATUS_ERROR}}
        req.method = 'POST'
        req.headers['content-type'] = 'application/json'
        req.body = six.b(jsonutils.dumps(body))
        req.headers['X-Openstack-Manila-Api-Version'] = self.api_version
        req.environ['manila.context'] = ctxt

        with mock.patch.object(
                policy, 'check_policy', fakes.mock_fake_admin_check):
            resp = req.get_response(fakes.app())

        # Validate response code and model status
        self.assertEqual(valid_code, resp.status_int)

        if valid_code == 404:
            self.assertRaises(exception.NotFound,
                              db.share_group_snapshot_get,
                              ctxt,
                              group_snap['id'])
        else:
            actual_model = db.share_group_snapshot_get(ctxt, group_snap['id'])
            self.assertEqual(valid_status, actual_model['status'])
    def test_share_group_snapshot_reset_status_with_different_roles(
            self, role, valid_code, valid_status, version):
        ctxt = self._get_context(role)
        group_snap, req = self._setup_share_group_snapshot_data()
        action_name = 'reset_status'
        body = {action_name: {'status': constants.STATUS_ERROR}}
        req.method = 'POST'
        req.headers['content-type'] = 'application/json'
        req.body = six.b(jsonutils.dumps(body))
        req.headers['X-Openstack-Manila-Api-Version'] = self.api_version
        req.environ['manila.context'] = ctxt

        with mock.patch.object(policy, 'check_policy',
                               fakes.mock_fake_admin_check):
            resp = req.get_response(fakes.app())

        # Validate response code and model status
        self.assertEqual(valid_code, resp.status_int)

        if valid_code == 404:
            self.assertRaises(exception.NotFound, db.share_group_snapshot_get,
                              ctxt, group_snap['id'])
        else:
            actual_model = db.share_group_snapshot_get(ctxt, group_snap['id'])
            self.assertEqual(valid_status, actual_model['status'])