def METHOD_NAME(self, mock_request):
    self._setup_tableau_users()
    mock_request.side_effect = _mock_create_session_responses(self) + [
        self.tableau_instance.query_groups_response(),
        self.tableau_instance.get_users_in_group_response(),
        self.tableau_instance.get_users_in_group_response(),
        self.tableau_instance.get_users_in_group_response()
    ] + _mock_create_session_responses(self) + [
        self.tableau_instance.query_groups_response(),
        self.tableau_instance.failure_response()
    ]
    (headers, rows) = parse_web_users(self.domain_obj.name, {})
    rows = list(rows)
    self.assertEqual(3, len(rows))
    spec = dict(zip(headers, rows[0]))
    self.assertEqual(TableauUser.Roles.VIEWER.value, spec['tableau_role'])
    self.assertEqual("group1,group2,group3",
        spec['tableau_groups'])
    spec = dict(zip(headers, rows[1]))
    self.assertEqual(TableauUser.Roles.EXPLORER.value, spec['tableau_role'])
    (headers, rows) = parse_web_users(self.domain_obj.name, {})
    spec = dict(zip(headers, list(rows)[0]))
    # Should be ERROR since the second get_groups_for_user_id response fails
    self.assertEqual('ERROR', spec['tableau_groups'])