<classResult _class='hudson.tasks.junit.ClassResult'><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>2.587</duration><failedSince>0</failedSince><name>test_marshal_projects_all_groups</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>5.328</duration><failedSince>0</failedSince><name>test_marshal_projects_all_users</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>2.487</duration><failedSince>0</failedSince><name>test_marshal_projects_another_group</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>1</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>4.838</duration><errorDetails>AssertionError: assert {'@id': 956, ... False, ...}}} == {'@id': 956, ... False, ...}}}
  
  Omitting 3 identical items, use -vv to show
  Differing items:
  {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3329, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...a', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': False, 'canEdit': False, ...}}} != {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3329, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...a', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': False, 'canEdit': False, ...}}}
  
  Full diff:
    {
        '@id': 956,
        '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Project',
        'Name': 'Axe',
        'omero:details': {
            '@type': 'TBD#Details',
            'group': {
                '@id': 3329,
                '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#ExperimenterGroup',
                'Experimenters': [
                    {
  -                     '@id': 4457,
  ?                               ^
  +                     '@id': 4456,
  ?                               ^
                        '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
                        'Email': '',
  -                     'FirstName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
  -                     'LastName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
  -                     'UserName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
  +                     'FirstName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
  +                     'LastName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
  +                     'UserName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
                        'omero:details': {
                            '@type': 'TBD#Details',
                            'permissions': {
                                '@type': 'TBD#Permissions',
                                'canAnnotate': True,
                                'canDelete': False,
                                'canEdit': False,
                                'canLink': True,
                                'isGroupAnnotate': False,
                                'isGroupRead': False,
                                'isGroupWrite': False,
                                'isUserRead': True,
                                'isUserWrite': True,
                                'isWorldRead': False,
                                'isWorldWrite': False,
                                'perm': 'rw----',
                            },
                        },
                        'omero:owner': False,
                    },
                    {
  -                     '@id': 4456,
  ?                               ^
  +                     '@id': 4457,
  ?                               ^
                        '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
                        'Email': '',
  -                     'FirstName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
  -                     'LastName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
  -                     'UserName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
  +                     'FirstName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
  +                     'LastName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
  +                     'UserName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
                        'omero:details': {
                            '@type': 'TBD#Details',
                            'permissions': {
                                '@type': 'TBD#Permissions',
                                'canAnnotate': True,
                                'canDelete': False,
                                'canEdit': False,
                                'canLink': True,
                                'isGroupAnnotate': False,
                                'isGroupRead': False,
                                'isGroupWrite': False,
                                'isUserRead': True,
                                'isUserWrite': True,
                                'isWorldRead': False,
                                'isWorldWrite': False,
                                'perm': 'rw----',
                            },
                        },
                        'omero:owner': False,
                    },
                ],
                'Name': 'adb058bf-200d-4354-ae20-2101266e2037',
                'omero:details': {
                    '@type': 'TBD#Details',
                    'permissions': {
                        '@type': 'TBD#Permissions',
                        'canAnnotate': True,
                        'canDelete': False,
                        'canEdit': False,
                        'canLink': True,
                        'isGroupAnnotate': True,
                        'isGroupRead': True,
                        'isGroupWrite': False,
                        'isUserRead': True,
                        'isUserWrite': True,
                        'isWorldRead': False,
                        'isWorldWrite': False,
                        'perm': 'rwra--',
                    },
                },
            },
            'owner': {
                '@id': 4457,
                '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
                'Email': '',
                'FirstName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
                'LastName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
                'UserName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
                'omero:details': {
                    '@type': 'TBD#Details',
                    'permissions': {
                        '@type': 'TBD#Permissions',
                        'canAnnotate': True,
                        'canDelete': False,
                        'canEdit': False,
                        'canLink': True,
                        'isGroupAnnotate': False,
                        'isGroupRead': False,
                        'isGroupWrite': False,
                        'isUserRead': True,
                        'isUserWrite': True,
                        'isWorldRead': False,
                        'isWorldWrite': False,
                        'perm': 'rw----',
                    },
                },
            },
            'permissions': {
                '@type': 'TBD#Permissions',
                'canAnnotate': True,
                'canDelete': False,
                'canEdit': False,
                'canLink': False,
                'isGroupAnnotate': True,
                'isGroupRead': True,
                'isGroupWrite': False,
                'isUserRead': True,
                'isUserWrite': True,
                'isWorldRead': False,
                'isWorldWrite': False,
                'perm': 'rwra--',
            },
        },
    }</errorDetails><errorStackTrace>self = &lt;test_api_projects.TestProjects object at 0x7f9b0e0c9b10&gt;
user1 = (&lt;omero.clients.BaseClient object at 0x7f9b0952c050&gt;, object #0 (::omero::model::Experimenter)
{
    _id = object #1 (...nnotationLinksSeq = 
    {
    }
    _annotationLinksLoaded = False
    _annotationLinksCountPerOwner = 
    {
    }
})
user2 = (&lt;omero.clients.BaseClient object at 0x7f9b08472090&gt;, object #0 (::omero::model::Experimenter)
{
    _id = object #1 (...nnotationLinksSeq = 
    {
    }
    _annotationLinksLoaded = False
    _annotationLinksCountPerOwner = 
    {
    }
})
projects_user2_group1 = [object #0 (::omero::model::Project)
{
    _id = object #1 (::omero::RLong)
    {
        _val = 956
    }
    _detail...ner = 
    {
    }
    _name = object #54 (::omero::RString)
    {
        _val = Axe
    }
    _description = &lt;nil&gt;
}]

    def test_marshal_projects_another_user(self, user1, user2,
                                           projects_user2_group1):
        """
        Test marshalling another user's projects in current group
        Project is Owned by user2. We are testing user1's perms.
        """
        conn = get_connection(user1)
        user_name = conn.getUser().getName()
        django_client = self.new_django_client(user_name, user_name)
        version = api_settings.API_VERSIONS[-1]
        request_url = reverse('api_projects', kwargs={'api_version': version})
        rsp = get_json(django_client, request_url)
        # user1 reloads user2's projects
&gt;       assert_objects(conn, rsp['data'], projects_user2_group1)

test/integration/test_api_projects.py:308: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

conn = &lt;omero.gateway._BlitzGateway object at 0x7f9b0b142750&gt;
json_objects = [{'@id': 956, '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Project', 'Name': 'Axe', 'omero:details': {'...', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': False, 'canEdit': False, ...}}}]
omero_ids_objects = [object #0 (::omero::model::Project)
{
    _id = object #1 (::omero::RLong)
    {
        _val = 956
    }
    _detail...ner = 
    {
    }
    _name = object #54 (::omero::RString)
    {
        _val = Axe
    }
    _description = &lt;nil&gt;
}]
dtype = 'Project', group = '-1'

    def assert_objects(conn, json_objects, omero_ids_objects, dtype="Project",
                       group='-1'):
        """
        Load objects from OMERO, via conn.getObjects(), marshal with
        omero_marshal and compare with json_objects.
        omero_ids_objects can be IDs or list of omero.model objects.
        """
        pids = []
        for p in omero_ids_objects:
            try:
                pids.append(int(p))
            except TypeError:
                pids.append(p.id.val)
        if len(pids) == 0:
            assert len(json_objects) == 0
            return
        conn.SERVICE_OPTS.setOmeroGroup(group)
        projects = conn.getObjects(dtype, pids, respect_order=True)
        projects = [p._obj for p in projects]
        expected = marshal_objects(projects)
        assert len(json_objects) == len(expected)
        for o1, o2 in zip(json_objects, expected):
            # remove any urls from json
            for key in list(o1.keys()):
                if key.startswith('url:'):
                    del o1[key]
&gt;           assert o1 == o2
E           AssertionError: assert {'@id': 956, ... False, ...}}} == {'@id': 956, ... False, ...}}}
E             
E             Omitting 3 identical items, use -vv to show
E             Differing items:
E             {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3329, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...a', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': False, 'canEdit': False, ...}}} != {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3329, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...a', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': False, 'canEdit': False, ...}}}
E             
E             Full diff:
E               {
E                   '@id': 956,
E                   '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Project',
E                   'Name': 'Axe',
E                   'omero:details': {
E                       '@type': 'TBD#Details',
E                       'group': {
E                           '@id': 3329,
E                           '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#ExperimenterGroup',
E                           'Experimenters': [
E                               {
E             -                     '@id': 4457,
E             ?                               ^
E             +                     '@id': 4456,
E             ?                               ^
E                                   '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
E                                   'Email': '',
E             -                     'FirstName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E             -                     'LastName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E             -                     'UserName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E             +                     'FirstName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
E             +                     'LastName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
E             +                     'UserName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
E                                   'omero:details': {
E                                       '@type': 'TBD#Details',
E                                       'permissions': {
E                                           '@type': 'TBD#Permissions',
E                                           'canAnnotate': True,
E                                           'canDelete': False,
E                                           'canEdit': False,
E                                           'canLink': True,
E                                           'isGroupAnnotate': False,
E                                           'isGroupRead': False,
E                                           'isGroupWrite': False,
E                                           'isUserRead': True,
E                                           'isUserWrite': True,
E                                           'isWorldRead': False,
E                                           'isWorldWrite': False,
E                                           'perm': 'rw----',
E                                       },
E                                   },
E                                   'omero:owner': False,
E                               },
E                               {
E             -                     '@id': 4456,
E             ?                               ^
E             +                     '@id': 4457,
E             ?                               ^
E                                   '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
E                                   'Email': '',
E             -                     'FirstName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
E             -                     'LastName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
E             -                     'UserName': '28fa8ef6-dbe0-4424-b8ed-d93b854c6dbb',
E             +                     'FirstName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E             +                     'LastName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E             +                     'UserName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E                                   'omero:details': {
E                                       '@type': 'TBD#Details',
E                                       'permissions': {
E                                           '@type': 'TBD#Permissions',
E                                           'canAnnotate': True,
E                                           'canDelete': False,
E                                           'canEdit': False,
E                                           'canLink': True,
E                                           'isGroupAnnotate': False,
E                                           'isGroupRead': False,
E                                           'isGroupWrite': False,
E                                           'isUserRead': True,
E                                           'isUserWrite': True,
E                                           'isWorldRead': False,
E                                           'isWorldWrite': False,
E                                           'perm': 'rw----',
E                                       },
E                                   },
E                                   'omero:owner': False,
E                               },
E                           ],
E                           'Name': 'adb058bf-200d-4354-ae20-2101266e2037',
E                           'omero:details': {
E                               '@type': 'TBD#Details',
E                               'permissions': {
E                                   '@type': 'TBD#Permissions',
E                                   'canAnnotate': True,
E                                   'canDelete': False,
E                                   'canEdit': False,
E                                   'canLink': True,
E                                   'isGroupAnnotate': True,
E                                   'isGroupRead': True,
E                                   'isGroupWrite': False,
E                                   'isUserRead': True,
E                                   'isUserWrite': True,
E                                   'isWorldRead': False,
E                                   'isWorldWrite': False,
E                                   'perm': 'rwra--',
E                               },
E                           },
E                       },
E                       'owner': {
E                           '@id': 4457,
E                           '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
E                           'Email': '',
E                           'FirstName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E                           'LastName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E                           'UserName': 'd851097a-ba38-4c53-9ffc-43cd5e71995a',
E                           'omero:details': {
E                               '@type': 'TBD#Details',
E                               'permissions': {
E                                   '@type': 'TBD#Permissions',
E                                   'canAnnotate': True,
E                                   'canDelete': False,
E                                   'canEdit': False,
E                                   'canLink': True,
E                                   'isGroupAnnotate': False,
E                                   'isGroupRead': False,
E                                   'isGroupWrite': False,
E                                   'isUserRead': True,
E                                   'isUserWrite': True,
E                                   'isWorldRead': False,
E                                   'isWorldWrite': False,
E                                   'perm': 'rw----',
E                               },
E                           },
E                       },
E                       'permissions': {
E                           '@type': 'TBD#Permissions',
E                           'canAnnotate': True,
E                           'canDelete': False,
E                           'canEdit': False,
E                           'canLink': False,
E                           'isGroupAnnotate': True,
E                           'isGroupRead': True,
E                           'isGroupWrite': False,
E                           'isUserRead': True,
E                           'isUserWrite': True,
E                           'isWorldRead': False,
E                           'isWorldWrite': False,
E                           'perm': 'rwra--',
E                       },
E                   },
E               }

test/integration/test_api_projects.py:178: AssertionError</errorStackTrace><failedSince>36</failedSince><name>test_marshal_projects_another_user</name><properties></properties><skipped>false</skipped><status>FAILED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>2.534</duration><failedSince>0</failedSince><name>test_marshal_projects_no_results</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>3.457</duration><failedSince>0</failedSince><name>test_marshal_projects_not_logged_in</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>1</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>4.809</duration><errorDetails>AssertionError: assert {'@id': 972, ...: True, ...}}} == {'@id': 972, ...: True, ...}}}
  
  Omitting 3 identical items, use -vv to show
  Differing items:
  {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3337, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...778', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, ...}}} != {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3337, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...778', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, ...}}}
  
  Full diff:
    {
        '@id': 972,
        '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Project',
        'Name': 'Apple',
        'omero:details': {
            '@type': 'TBD#Details',
            'group': {
                '@id': 3337,
                '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#ExperimenterGroup',
                'Experimenters': [
                    {
  -                     '@id': 4463,
  ?                               ^
  +                     '@id': 4462,
  ?                               ^
                        '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
                        'Email': '',
  -                     'FirstName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
  -                     'LastName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
  -                     'UserName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
  +                     'FirstName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
  +                     'LastName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
  +                     'UserName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
                        'omero:details': {
                            '@type': 'TBD#Details',
                            'permissions': {
                                '@type': 'TBD#Permissions',
                                'canAnnotate': True,
                                'canDelete': False,
                                'canEdit': False,
                                'canLink': True,
                                'isGroupAnnotate': False,
                                'isGroupRead': False,
                                'isGroupWrite': False,
                                'isUserRead': True,
                                'isUserWrite': True,
                                'isWorldRead': False,
                                'isWorldWrite': False,
                                'perm': 'rw----',
                            },
                        },
                        'omero:owner': False,
                    },
                    {
  -                     '@id': 4462,
  ?                               ^
  +                     '@id': 4463,
  ?                               ^
                        '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
                        'Email': '',
  -                     'FirstName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
  -                     'LastName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
  -                     'UserName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
  +                     'FirstName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
  +                     'LastName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
  +                     'UserName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
                        'omero:details': {
                            '@type': 'TBD#Details',
                            'permissions': {
                                '@type': 'TBD#Permissions',
                                'canAnnotate': True,
                                'canDelete': False,
                                'canEdit': False,
                                'canLink': True,
                                'isGroupAnnotate': False,
                                'isGroupRead': False,
                                'isGroupWrite': False,
                                'isUserRead': True,
                                'isUserWrite': True,
                                'isWorldRead': False,
                                'isWorldWrite': False,
                                'perm': 'rw----',
                            },
                        },
                        'omero:owner': False,
                    },
                ],
                'Name': 'f107e33c-c731-4087-a612-964dc67809bb',
                'omero:details': {
                    '@type': 'TBD#Details',
                    'permissions': {
                        '@type': 'TBD#Permissions',
                        'canAnnotate': True,
                        'canDelete': False,
                        'canEdit': False,
                        'canLink': True,
                        'isGroupAnnotate': True,
                        'isGroupRead': True,
                        'isGroupWrite': False,
                        'isUserRead': True,
                        'isUserWrite': True,
                        'isWorldRead': False,
                        'isWorldWrite': False,
                        'perm': 'rwra--',
                    },
                },
            },
            'owner': {
                '@id': 4462,
                '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
                'Email': '',
                'FirstName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
                'LastName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
                'UserName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
                'omero:details': {
                    '@type': 'TBD#Details',
                    'permissions': {
                        '@type': 'TBD#Permissions',
                        'canAnnotate': True,
                        'canDelete': False,
                        'canEdit': False,
                        'canLink': True,
                        'isGroupAnnotate': False,
                        'isGroupRead': False,
                        'isGroupWrite': False,
                        'isUserRead': True,
                        'isUserWrite': True,
                        'isWorldRead': False,
                        'isWorldWrite': False,
                        'perm': 'rw----',
                    },
                },
            },
            'permissions': {
                '@type': 'TBD#Permissions',
                'canAnnotate': True,
                'canDelete': True,
                'canEdit': True,
                'canLink': True,
                'isGroupAnnotate': True,
                'isGroupRead': True,
                'isGroupWrite': False,
                'isUserRead': True,
                'isUserWrite': True,
                'isWorldRead': False,
                'isWorldWrite': False,
                'perm': 'rwra--',
            },
        },
    }</errorDetails><errorStackTrace>self = &lt;test_api_projects.TestProjects object at 0x7f9b0e091d90&gt;
user1 = (&lt;omero.clients.BaseClient object at 0x7f9b09d0ea90&gt;, object #0 (::omero::model::Experimenter)
{
    _id = object #1 (...nnotationLinksSeq = 
    {
    }
    _annotationLinksLoaded = False
    _annotationLinksCountPerOwner = 
    {
    }
})
user2 = (&lt;omero.clients.BaseClient object at 0x7f9b0a544650&gt;, object #0 (::omero::model::Experimenter)
{
    _id = object #1 (...nnotationLinksSeq = 
    {
    }
    _annotationLinksLoaded = False
    _annotationLinksCountPerOwner = 
    {
    }
})
projects_user1_group1 = [object #0 (::omero::model::Project)
{
    _id = object #1 (::omero::RLong)
    {
        _val = 972
    }
    _detail...
    {
    }
    _name = object #127 (::omero::RString)
    {
        _val = Project2
    }
    _description = &lt;nil&gt;
}]
projects_user2_group1 = [object #0 (::omero::model::Project)
{
    _id = object #1 (::omero::RLong)
    {
        _val = 974
    }
    _detail...ner = 
    {
    }
    _name = object #54 (::omero::RString)
    {
        _val = Axe
    }
    _description = &lt;nil&gt;
}]

    def test_marshal_projects_pagination(self, user1, user2,
                                         projects_user1_group1,
                                         projects_user2_group1):
        """
        Test pagination of projects
        """
        projects = projects_user1_group1 + projects_user2_group1
        projects.sort(key=lambda x: lower_or_none(unwrap(x.name)))
        conn = get_connection(user1)
        user_name = conn.getUser().getName()
        django_client = self.new_django_client(user_name, user_name)
        version = api_settings.API_VERSIONS[-1]
        request_url = reverse('api_projects', kwargs={'api_version': version})
    
        # Test a range of limits. offset = 0 by default
        for limit in range(-1, 4):
            rsp = get_json(django_client, request_url, {'limit': limit})
            assert rsp['meta']['totalCount'] == len(projects)
            if limit == -1:
                # if we passed a negative number, expect the default to be used
                limit = api_settings.API_LIMIT
            else:
                assert len(rsp['data']) == limit
            assert rsp['meta']['limit'] == limit
&gt;           assert_objects(conn, rsp['data'], projects[0:limit])

test/integration/test_api_projects.py:411: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

conn = &lt;omero.gateway._BlitzGateway object at 0x7f9b090193d0&gt;
json_objects = [{'@id': 972, '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Project', 'Name': 'Apple', 'omero:details': ......}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, ...}}, ...}]
omero_ids_objects = [object #0 (::omero::model::Project)
{
    _id = object #1 (::omero::RLong)
    {
        _val = 972
    }
    _detail...
    {
    }
    _name = object #127 (::omero::RString)
    {
        _val = Project2
    }
    _description = &lt;nil&gt;
}]
dtype = 'Project', group = '-1'

    def assert_objects(conn, json_objects, omero_ids_objects, dtype="Project",
                       group='-1'):
        """
        Load objects from OMERO, via conn.getObjects(), marshal with
        omero_marshal and compare with json_objects.
        omero_ids_objects can be IDs or list of omero.model objects.
        """
        pids = []
        for p in omero_ids_objects:
            try:
                pids.append(int(p))
            except TypeError:
                pids.append(p.id.val)
        if len(pids) == 0:
            assert len(json_objects) == 0
            return
        conn.SERVICE_OPTS.setOmeroGroup(group)
        projects = conn.getObjects(dtype, pids, respect_order=True)
        projects = [p._obj for p in projects]
        expected = marshal_objects(projects)
        assert len(json_objects) == len(expected)
        for o1, o2 in zip(json_objects, expected):
            # remove any urls from json
            for key in list(o1.keys()):
                if key.startswith('url:'):
                    del o1[key]
&gt;           assert o1 == o2
E           AssertionError: assert {'@id': 972, ...: True, ...}}} == {'@id': 972, ...: True, ...}}}
E             
E             Omitting 3 identical items, use -vv to show
E             Differing items:
E             {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3337, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...778', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, ...}}} != {'omero:details': {'@type': 'TBD#Details', 'group': {'@id': 3337, '@type': 'http://www.openmicroscopy.org/Schemas/OME/...778', ...}, 'permissions': {'@type': 'TBD#Permissions', 'canAnnotate': True, 'canDelete': True, 'canEdit': True, ...}}}
E             
E             Full diff:
E               {
E                   '@id': 972,
E                   '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Project',
E                   'Name': 'Apple',
E                   'omero:details': {
E                       '@type': 'TBD#Details',
E                       'group': {
E                           '@id': 3337,
E                           '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#ExperimenterGroup',
E                           'Experimenters': [
E                               {
E             -                     '@id': 4463,
E             ?                               ^
E             +                     '@id': 4462,
E             ?                               ^
E                                   '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
E                                   'Email': '',
E             -                     'FirstName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
E             -                     'LastName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
E             -                     'UserName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
E             +                     'FirstName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E             +                     'LastName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E             +                     'UserName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E                                   'omero:details': {
E                                       '@type': 'TBD#Details',
E                                       'permissions': {
E                                           '@type': 'TBD#Permissions',
E                                           'canAnnotate': True,
E                                           'canDelete': False,
E                                           'canEdit': False,
E                                           'canLink': True,
E                                           'isGroupAnnotate': False,
E                                           'isGroupRead': False,
E                                           'isGroupWrite': False,
E                                           'isUserRead': True,
E                                           'isUserWrite': True,
E                                           'isWorldRead': False,
E                                           'isWorldWrite': False,
E                                           'perm': 'rw----',
E                                       },
E                                   },
E                                   'omero:owner': False,
E                               },
E                               {
E             -                     '@id': 4462,
E             ?                               ^
E             +                     '@id': 4463,
E             ?                               ^
E                                   '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
E                                   'Email': '',
E             -                     'FirstName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E             -                     'LastName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E             -                     'UserName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E             +                     'FirstName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
E             +                     'LastName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
E             +                     'UserName': '651d8fe7-d2eb-4c80-b281-cdd84fa2ed15',
E                                   'omero:details': {
E                                       '@type': 'TBD#Details',
E                                       'permissions': {
E                                           '@type': 'TBD#Permissions',
E                                           'canAnnotate': True,
E                                           'canDelete': False,
E                                           'canEdit': False,
E                                           'canLink': True,
E                                           'isGroupAnnotate': False,
E                                           'isGroupRead': False,
E                                           'isGroupWrite': False,
E                                           'isUserRead': True,
E                                           'isUserWrite': True,
E                                           'isWorldRead': False,
E                                           'isWorldWrite': False,
E                                           'perm': 'rw----',
E                                       },
E                                   },
E                                   'omero:owner': False,
E                               },
E                           ],
E                           'Name': 'f107e33c-c731-4087-a612-964dc67809bb',
E                           'omero:details': {
E                               '@type': 'TBD#Details',
E                               'permissions': {
E                                   '@type': 'TBD#Permissions',
E                                   'canAnnotate': True,
E                                   'canDelete': False,
E                                   'canEdit': False,
E                                   'canLink': True,
E                                   'isGroupAnnotate': True,
E                                   'isGroupRead': True,
E                                   'isGroupWrite': False,
E                                   'isUserRead': True,
E                                   'isUserWrite': True,
E                                   'isWorldRead': False,
E                                   'isWorldWrite': False,
E                                   'perm': 'rwra--',
E                               },
E                           },
E                       },
E                       'owner': {
E                           '@id': 4462,
E                           '@type': 'http://www.openmicroscopy.org/Schemas/OME/2016-06#Experimenter',
E                           'Email': '',
E                           'FirstName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E                           'LastName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E                           'UserName': 'dc3bef0e-c2f3-4f4b-bda8-843218b38778',
E                           'omero:details': {
E                               '@type': 'TBD#Details',
E                               'permissions': {
E                                   '@type': 'TBD#Permissions',
E                                   'canAnnotate': True,
E                                   'canDelete': False,
E                                   'canEdit': False,
E                                   'canLink': True,
E                                   'isGroupAnnotate': False,
E                                   'isGroupRead': False,
E                                   'isGroupWrite': False,
E                                   'isUserRead': True,
E                                   'isUserWrite': True,
E                                   'isWorldRead': False,
E                                   'isWorldWrite': False,
E                                   'perm': 'rw----',
E                               },
E                           },
E                       },
E                       'permissions': {
E                           '@type': 'TBD#Permissions',
E                           'canAnnotate': True,
E                           'canDelete': True,
E                           'canEdit': True,
E                           'canLink': True,
E                           'isGroupAnnotate': True,
E                           'isGroupRead': True,
E                           'isGroupWrite': False,
E                           'isUserRead': True,
E                           'isUserWrite': True,
E                           'isWorldRead': False,
E                           'isWorldWrite': False,
E                           'perm': 'rwra--',
E                       },
E                   },
E               }

test/integration/test_api_projects.py:178: AssertionError</errorStackTrace><failedSince>36</failedSince><name>test_marshal_projects_pagination</name><properties></properties><skipped>false</skipped><status>FAILED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>4.829</duration><failedSince>0</failedSince><name>test_marshal_projects_params</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>2.597</duration><failedSince>0</failedSince><name>test_marshal_projects_user</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>2.56</duration><failedSince>0</failedSince><name>test_project_create_other_group</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>0.248</duration><failedSince>0</failedSince><name>test_project_create_read</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>3.014</duration><failedSince>0</failedSince><name>test_project_datasets_update[Dataset]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>2.469</duration><failedSince>0</failedSince><name>test_project_datasets_update[Project]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>2.83</duration><failedSince>0</failedSince><name>test_project_delete</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroWeb.test.integration.test_api_projects.TestProjects</className><duration>3.51</duration><failedSince>0</failedSince><name>test_project_update</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><failCount>2</failCount><name>TestProjects</name><passCount>13</passCount><skipCount>0</skipCount></classResult>