def test_token(self, token):
        original_token = token()
        idem = Identity(original_token)

        tk = idem.token()

        assert original_token == tk
    def test_data(self, token):
        idem = Identity(token())
        expected_keys = {
            'claims', 'roles', 'iss', 'aud', 'auth_time', 'user_id', 'sub',
            'iat', 'exp', 'email', 'email_verified', 'firebase'
        }

        data = idem.data()

        assert set(data.keys()) == expected_keys
    def test_get_user_id(self, token):
        data = {
            0: Identity(token(sysadmin=True, user_id='111')),
            1: 'some parameter'
        }

        result = user_event.get_user_id(data)

        assert result == '111'
    def test_is_staff(self, token):
        idem = Identity(token(staff=True))
        idem2 = Identity(token(admin=True))

        it_should_be = idem.is_staff()
        is_should_not_be = idem2.is_staff()

        assert it_should_be
        assert not is_should_not_be
    def test_track_function(self, mocked_handler, token):
        @user_event.track
        def do_something(a, b, c, d):
            return 'something'
        iden = Identity(token(sysadmin=True, user_id='111'))

        with patch(
            'styler_rest_framework.events.user_event.time.time',
            Mock(return_value='timestamp')
        ):
            do_something(1234, 'aaa', c='parameter c', d=iden)

        mocked_handler.assert_called_once_with(
            user_event._TABLE,
            'tests.events.test_user_event.do_something',
            '111#tests.events.test_user_event.do_something#timestamp',
            {
                0: 1234,
                1: 'aaa',
                'c': 'parameter c',
                'd': json.dumps(iden.__dict__),
                'return': '"something"'
            }
        )
    def test_shops(self, token):
        idem = Identity(token(shops=['12345', '33442']))

        shops = idem.shops()

        assert shops == ['12345', '33442']
    def test_invalid_roles_staff(self, empty_token):
        idem = Identity(empty_token)

        result = idem.is_staff()

        assert not result
    def test_invalid_roles_sysadmin(self, empty_token):
        idem = Identity(empty_token)

        result = idem.is_system_admin()

        assert not result
    def test_user_id(self, token):
        idem = Identity(token({'user_id': '1234'}))

        user_id = idem.user_id()

        assert user_id == '1234'
    def test_valid_token(self, token):
        idem = Identity(token())

        assert isinstance(idem, Identity)
    def test_invalid_token(self):
        with pytest.raises(ValueError) as expected:
            Identity('invalid token')

        assert str(expected.value) == 'Invalid JWT token'
    def test_organizations_none(self, empty_token):
        idem = Identity(empty_token)

        organizations = idem.organizations()

        assert organizations == []
    def test_organizations(self, token):
        idem = Identity(token(organizations=['33333']))

        organizations = idem.organizations()

        assert organizations == ['33333']
    def test_shops_none(self, empty_token):
        idem = Identity(empty_token)

        shops = idem.shops()

        assert shops == []