def METHOD_NAME(self):
    path = '/a/{domain}/reports/foobar'.format(domain=self.domain)
    report = MockReport(_make_request(path, self.domain, self.web_user1))
    v1 = report.v1()
    v2 = report.v1()
    alternate = MockReport(_make_request(path, self.domain, self.web_user2))
    alt_v1 = alternate.v1()
    self.assertEqual(alt_v1, alternate.v1())
    alt_v2 = alternate.v2()
    self.assertEqual(alt_v2, alternate.v2())
    self.assertNotEqual(alt_v1, v1)
    self.assertNotEqual(alt_v2, v2)
    # invalid users shouldn't even be caching themselves
    for invalid in ['not a user object', None, BLANK]:
        alternate = MockReport(_make_request(path, self.domain, invalid))
        alt_v1 = alternate.v1()
        # since this is invalid, this shouldn't even be caching itself
        self.assertNotEqual(alt_v1, alternate.v1())
        alt_v2 = alternate.v2()
        self.assertNotEqual(alt_v2, alternate.v2())
        self.assertNotEqual(alt_v1, v1)
        self.assertNotEqual(alt_v2, v2)