def test_export_token(self):

        # Create Authorization
        auth = self._create_authorization(self.acs, objperm="read")
        acct = self._create_account_from_authz(auth)
        verifier = self._create_verifier(self.acs, accounts=[acct])
        perms = self._create_permissions_from_authz(auth, v_default=[verifier])

        # Test Unapproved
        self.assertRaises(accesscontrol.AuthorizationNotApproved, auth.export_token)

        # Approve
        self.assertTrue(auth.verify())

        # Test Approved
        token = auth.export_token()
        self.assertIsInstance(token, str)
        self.assertGreater(len(token), 0)

        # Test Decode
        val = utility.decode_auth_token(self.acs.sigkey_pub, token)
        self.assertIsInstance(val, dict)
        self.assertGreater(len(val), 0)

        # Cleanup
        perms.destroy()
        verifier.destroy()
        acct.destroy()
        auth.destroy()
        def encode_decode(priv, pub, accountuid, clientuid, expiration, objperm, objtype, objuid):

            token = utility.encode_auth_token(priv, accountuid, clientuid, expiration, objperm, objtype, objuid)

            self.assertIsInstance(token, str)
            self.assertGreater(len(token), 0)

            val = utility.decode_auth_token(pub, token)

            self.assertIsInstance(val, dict)
            self.assertGreater(len(val), 0)

            self.assertEqual(val[utility.AUTHZ_KEY_ACCOUNTUID], accountuid)
            self.assertEqual(val[utility.AUTHZ_KEY_CLIENTUID], clientuid)
            self.assertEqual(val[utility.AUTHZ_KEY_EXPIRATION], expiration)
            self.assertEqual(val[utility.AUTHZ_KEY_OBJPERM], objperm)
            self.assertEqual(val[utility.AUTHZ_KEY_OBJTYPE], objtype)
            self.assertEqual(val[utility.AUTHZ_KEY_OBJUID], objuid if objuid else None)