import urllib2
import urllib

from zope.component import getMultiAdapter
from OFS.Application import install_package
#from plone.session.tests.sessioncase import PloneSessionTestCase
from Testing.ZopeTestCase.placeless import setUp, tearDown
from Testing.ZopeTestCase.placeless import zcml
from Products.PloneTestCase import PloneTestCase
from Products.PloneTestCase.layer import PloneSite
from Products.Five import zcml, fiveconfigure
from Products.CMFCore.utils import getToolByName
from Testing.makerequest import makerequest
from Products.Archetypes.tests.utils import DummySessionDataManager

import plonesocial.auth.rpx
from plonesocial.auth.rpx.plugin import RpxHelper
from plonesocial.auth.rpx.browser.rpx_view import PASInfoView

from plonesocial.auth.rpx.config import RPX_POPUP_URL

PloneTestCase.setupPloneSite()

class RPXTestCase(PloneTestCase.PloneTestCase):

    class layer(PloneSite):
        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml',
                             plonesocial.auth.rpx)
            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass

    identity = "fake_rpx_identity"

    session = {}

    server_response = {
                'preferredUsername'        : '',
                'displayName'              : '',
                'name'                     : {
                                              'givenName'  : '',
                                              'formatted'  : '',
                                              'familyName' : ''
                                              },
                'providerName'             : '',
                'address'                  : {
                                              'country'    : ''
                                              },
                'verifiedEmail'            : '',
                'identifier'               : '',
                'email'                    : ''
    }

    def afterSetUp(self):
        PloneTestCase.PloneTestCase.afterSetUp(self)
        install_package(self.app, plonesocial.auth.rpx, plonesocial.auth.rpx.initialize)
        self.acl_users = self.portal.acl_users
        self.portal.portal_quickinstaller.installProduct("plonesocial.auth.rpx")

        portal_properties = getToolByName(self.portal, 'portal_properties')
        self.props = portal_properties.site_properties

        # sessioning setup
        if 'session_data_manager' in self.app.objectIds():
            self.app._delObject('session_data_manager')
        self.app._setObject('session_data_manager', DummySessionDataManager())

    @property
    def request(self):
        return {}

    @property
    def portal_membership(self):
        return getToolByName(self.portal, 'portal_membership')

    @property
    def pas(self):
        return self.portal.acl_users

    @property
    def pas_info(self):
        return PASInfoView(self.portal, None)

    def create_plone_user(self, login="new_user", password="secret",
                          roles=[], groups=[], domains=()):
        self.acl_users.userFolderAddUser(
            login,
            password,
            roles = roles,
            groups = groups,
            domains = domains,
            )

    def set_credentials_to_session(self, creds={}):
        session = self.app.session_data_manager.getSessionData()
        session['rpx_credentials'] = creds

    def add_rpx_id_to_user(self, username="new_user"):
        member = self.portal_membership.getMemberById("new_user")
        member.setProperties(rpx_identifier=list(self.identity))
        self.props.manage_changeProperties(rpx_identifier=list(self.identity))

    def get_token_from_rpx(self):
        """ make a call to rpx an and get back token"""
        url_params = {'token_url' : ''}
        http_response = urllib2.urlopen(RPX_POPUP_URL, urllib.urlencode(url_params))
        import pdb;pdb.set_trace()




class FunctionalRPXTestCase(PloneTestCase.Functional, RPXTestCase):
    pass

8abb6e271912441dff93f0ae82f5d65bb8b158f7
<mask token>


class RPXTestCase(PloneTestCase.PloneTestCase):


    class layer(PloneSite):

        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml', plonesocial.auth.rpx)
            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>

    @property
    def portal_membership(self):
        return getToolByName(self.portal, 'portal_membership')

    @property
    def pas(self):
        return self.portal.acl_users

    @property
    def pas_info(self):
        return PASInfoView(self.portal, None)
    <mask token>

    def set_credentials_to_session(self, creds={}):
        session = self.app.session_data_manager.getSessionData()
        session['rpx_credentials'] = creds
    <mask token>
    <mask token>


class FunctionalRPXTestCase(PloneTestCase.Functional, RPXTestCase):
    pass

<mask token>


class RPXTestCase(PloneTestCase.PloneTestCase):


    class layer(PloneSite):

        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml', plonesocial.auth.rpx)
            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>

    @property
    def portal_membership(self):
        return getToolByName(self.portal, 'portal_membership')

    @property
    def pas(self):
        return self.portal.acl_users

    @property
    def pas_info(self):
        return PASInfoView(self.portal, None)

    def create_plone_user(self, login='new_user', password='secret', roles=
        [], groups=[], domains=()):
        self.acl_users.userFolderAddUser(login, password, roles=roles,
            groups=groups, domains=domains)

    def set_credentials_to_session(self, creds={}):
        session = self.app.session_data_manager.getSessionData()
        session['rpx_credentials'] = creds
    <mask token>
    <mask token>


class FunctionalRPXTestCase(PloneTestCase.Functional, RPXTestCase):
    pass

<mask token>


class RPXTestCase(PloneTestCase.PloneTestCase):


    class layer(PloneSite):

        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml', plonesocial.auth.rpx)
            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass
    <mask token>
    <mask token>
    <mask token>

    def afterSetUp(self):
        PloneTestCase.PloneTestCase.afterSetUp(self)
        install_package(self.app, plonesocial.auth.rpx, plonesocial.auth.
            rpx.initialize)
        self.acl_users = self.portal.acl_users
        self.portal.portal_quickinstaller.installProduct('plonesocial.auth.rpx'
            )
        portal_properties = getToolByName(self.portal, 'portal_properties')
        self.props = portal_properties.site_properties
        if 'session_data_manager' in self.app.objectIds():
            self.app._delObject('session_data_manager')
        self.app._setObject('session_data_manager', DummySessionDataManager())

    @property
    def request(self):
        return {}

    @property
    def portal_membership(self):
        return getToolByName(self.portal, 'portal_membership')

    @property
    def pas(self):
        return self.portal.acl_users

    @property
    def pas_info(self):
        return PASInfoView(self.portal, None)

    def create_plone_user(self, login='new_user', password='secret', roles=
        [], groups=[], domains=()):
        self.acl_users.userFolderAddUser(login, password, roles=roles,
            groups=groups, domains=domains)

    def set_credentials_to_session(self, creds={}):
        session = self.app.session_data_manager.getSessionData()
        session['rpx_credentials'] = creds
    <mask token>

    def get_token_from_rpx(self):
        """ make a call to rpx an and get back token"""
        url_params = {'token_url': ''}
        http_response = urllib2.urlopen(RPX_POPUP_URL, urllib.urlencode(
            url_params))
        import pdb
        pdb.set_trace()


class FunctionalRPXTestCase(PloneTestCase.Functional, RPXTestCase):
    pass

<mask token>
PloneTestCase.setupPloneSite()


class RPXTestCase(PloneTestCase.PloneTestCase):


    class layer(PloneSite):

        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml', plonesocial.auth.rpx)
            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass
    identity = 'fake_rpx_identity'
    session = {}
    server_response = {'preferredUsername': '', 'displayName': '', 'name':
        {'givenName': '', 'formatted': '', 'familyName': ''},
        'providerName': '', 'address': {'country': ''}, 'verifiedEmail': '',
        'identifier': '', 'email': ''}

    def afterSetUp(self):
        PloneTestCase.PloneTestCase.afterSetUp(self)
        install_package(self.app, plonesocial.auth.rpx, plonesocial.auth.
            rpx.initialize)
        self.acl_users = self.portal.acl_users
        self.portal.portal_quickinstaller.installProduct('plonesocial.auth.rpx'
            )
        portal_properties = getToolByName(self.portal, 'portal_properties')
        self.props = portal_properties.site_properties
        if 'session_data_manager' in self.app.objectIds():
            self.app._delObject('session_data_manager')
        self.app._setObject('session_data_manager', DummySessionDataManager())

    @property
    def request(self):
        return {}

    @property
    def portal_membership(self):
        return getToolByName(self.portal, 'portal_membership')

    @property
    def pas(self):
        return self.portal.acl_users

    @property
    def pas_info(self):
        return PASInfoView(self.portal, None)

    def create_plone_user(self, login='new_user', password='secret', roles=
        [], groups=[], domains=()):
        self.acl_users.userFolderAddUser(login, password, roles=roles,
            groups=groups, domains=domains)

    def set_credentials_to_session(self, creds={}):
        session = self.app.session_data_manager.getSessionData()
        session['rpx_credentials'] = creds

    def add_rpx_id_to_user(self, username='new_user'):
        member = self.portal_membership.getMemberById('new_user')
        member.setProperties(rpx_identifier=list(self.identity))
        self.props.manage_changeProperties(rpx_identifier=list(self.identity))

    def get_token_from_rpx(self):
        """ make a call to rpx an and get back token"""
        url_params = {'token_url': ''}
        http_response = urllib2.urlopen(RPX_POPUP_URL, urllib.urlencode(
            url_params))
        import pdb
        pdb.set_trace()


class FunctionalRPXTestCase(PloneTestCase.Functional, RPXTestCase):
    pass

import urllib2
import urllib

from zope.component import getMultiAdapter
from OFS.Application import install_package
#from plone.session.tests.sessioncase import PloneSessionTestCase
from Testing.ZopeTestCase.placeless import setUp, tearDown
from Testing.ZopeTestCase.placeless import zcml
from Products.PloneTestCase import PloneTestCase
from Products.PloneTestCase.layer import PloneSite
from Products.Five import zcml, fiveconfigure
from Products.CMFCore.utils import getToolByName
from Testing.makerequest import makerequest
from Products.Archetypes.tests.utils import DummySessionDataManager

import plonesocial.auth.rpx
from plonesocial.auth.rpx.plugin import RpxHelper
from plonesocial.auth.rpx.browser.rpx_view import PASInfoView

from plonesocial.auth.rpx.config import RPX_POPUP_URL

PloneTestCase.setupPloneSite()

class RPXTestCase(PloneTestCase.PloneTestCase):

    class layer(PloneSite):
        @classmethod
        def setUp(cls):
            fiveconfigure.debug_mode = True
            zcml.load_config('configure.zcml',
                             plonesocial.auth.rpx)
            fiveconfigure.debug_mode = False

        @classmethod
        def tearDown(cls):
            pass

    identity = "fake_rpx_identity"

    session = {}

    server_response = {
                'preferredUsername'        : '',
                'displayName'              : '',
                'name'                     : {
                                              'givenName'  : '',
                                              'formatted'  : '',
                                              'familyName' : ''
                                              },
                'providerName'             : '',
                'address'                  : {
                                              'country'    : ''
                                              },
                'verifiedEmail'            : '',
                'identifier'               : '',
                'email'                    : ''
    }

    def afterSetUp(self):
        PloneTestCase.PloneTestCase.afterSetUp(self)
        install_package(self.app, plonesocial.auth.rpx, plonesocial.auth.rpx.initialize)
        self.acl_users = self.portal.acl_users
        self.portal.portal_quickinstaller.installProduct("plonesocial.auth.rpx")

        portal_properties = getToolByName(self.portal, 'portal_properties')
        self.props = portal_properties.site_properties

        # sessioning setup
        if 'session_data_manager' in self.app.objectIds():
            self.app._delObject('session_data_manager')
        self.app._setObject('session_data_manager', DummySessionDataManager())

    @property
    def request(self):
        return {}

    @property
    def portal_membership(self):
        return getToolByName(self.portal, 'portal_membership')

    @property
    def pas(self):
        return self.portal.acl_users

    @property
    def pas_info(self):
        return PASInfoView(self.portal, None)

    def create_plone_user(self, login="new_user", password="secret",
                          roles=[], groups=[], domains=()):
        self.acl_users.userFolderAddUser(
            login,
            password,
            roles = roles,
            groups = groups,
            domains = domains,
            )

    def set_credentials_to_session(self, creds={}):
        session = self.app.session_data_manager.getSessionData()
        session['rpx_credentials'] = creds

    def add_rpx_id_to_user(self, username="new_user"):
        member = self.portal_membership.getMemberById("new_user")
        member.setProperties(rpx_identifier=list(self.identity))
        self.props.manage_changeProperties(rpx_identifier=list(self.identity))

    def get_token_from_rpx(self):
        """ make a call to rpx an and get back token"""
        url_params = {'token_url' : ''}
        http_response = urllib2.urlopen(RPX_POPUP_URL, urllib.urlencode(url_params))
        import pdb;pdb.set_trace()




class FunctionalRPXTestCase(PloneTestCase.Functional, RPXTestCase):
    pass
