Exemplo n.º 1
0
def test_not_found_qs():
    httpretty.register_uri(get,
                           r(r"/v1/users\?email=not-found"),
                           body=fixture('v1-user_not_found'),
                           status=404,
                           match_querystring=True)
    User.find(email='*****@*****.**')
Exemplo n.º 2
0
def test_bad_api_key():
    httpretty.register_uri(
        get, r(r"/v1/users\?email=authentication-error"),
        status=401, match_querystring=True)
    Intercom.app_id = 'bad-app-id'
    Intercom.api_key = 'bad-secret-key'
    User.find(email='*****@*****.**')
Exemplo n.º 3
0
def test_server_error_qs():
    httpretty.register_uri(get,
                           r(r"/v1/users\?email=server-error"),
                           body=fixture('v1-user_server_error'),
                           status=500,
                           match_querystring=True)
    User.find(email='*****@*****.**')
Exemplo n.º 4
0
 def test_custom_attributes(self):
     # Update custom_attributes for a user
     user = User.find(id=self.user.id)
     user.custom_attributes["average_monthly_spend"] = 1234.56
     user.save()
     user = User.find(id=self.user.id)
     self.assertEqual(
         user.custom_attributes["average_monthly_spend"], 1234.56)
Exemplo n.º 5
0
 def test_bad_api_key(self):
     try:
         Intercom.app_id = 'bad-app-id'
         Intercom.api_key = 'bad-secret-key'
         User.find(email='*****@*****.**')
     finally:
         Intercom.app_id = 'dummy-app-id'
         Intercom.api_key = 'dummy-secret-key'
Exemplo n.º 6
0
def test_bad_api_key():
    httpretty.register_uri(get,
                           r(r"/v1/users\?email=authentication-error"),
                           status=401,
                           match_querystring=True)
    Intercom.app_id = 'bad-app-id'
    Intercom.api_key = 'bad-secret-key'
    User.find(email='*****@*****.**')
Exemplo n.º 7
0
 def test_bad_api_key(self):
     try:
         Intercom.app_id = "bad-app-id"
         Intercom.api_key = "bad-secret-key"
         User.find(email="*****@*****.**")
     finally:
         Intercom.app_id = "dummy-app-id"
         Intercom.api_key = "dummy-secret-key"
Exemplo n.º 8
0
 def test_bad_api_key(self):
     try:
         Intercom.app_id = 'bad-app-id'
         Intercom.api_key = 'bad-secret-key'
         User.find(email='*****@*****.**')
     finally:
         Intercom.app_id = 'dummy-app-id'
         Intercom.api_key = 'dummy-secret-key'
Exemplo n.º 9
0
 def test_custom_attributes(self):
     # Update custom_attributes for a user
     user = User.find(id=self.user.id)
     user.custom_attributes["average_monthly_spend"] = 1234.56
     user.save()
     user = User.find(id=self.user.id)
     self.assertEqual(user.custom_attributes["average_monthly_spend"],
                      1234.56)
Exemplo n.º 10
0
 def test_add_user(self):
     user = User.find(email=self.user.email)
     user.companies = [
         {"company_id": 6, "name": "Intercom"},
         {"company_id": 9, "name": "Test Company"}
     ]
     user.save()
     user = User.find(email=self.user.email)
     self.assertEqual(len(user.companies), 2)
     self.assertEqual(user.companies[0].company_id, "9")
Exemplo n.º 11
0
def test_endpoints():
    # FakeWeb.allow_net_connect = %r(127.0.0.7)
    httpretty.register_uri(
        get, r(r"/v1/users\?email="),
        body=fixture('v1-user'), match_querystring=True)
    Intercom.endpoints = ("http://127.0.0.7", "https://api.intercom.io")
    user = User.find(email='*****@*****.**')
    eq_(user.name, 'Somebody')
Exemplo n.º 12
0
 def it_fetches_a_user(self):
     with patch.object(Intercom, 'get',
                       return_value=get_user()) as mock_method:  # noqa
         user = User.find(email='*****@*****.**')
         eq_(user.email, '*****@*****.**')
         eq_(user.name, 'Joe Schmoe')
         mock_method.assert_called_once_with(
             '/users', email='*****@*****.**')  # noqa
Exemplo n.º 13
0
def test_endpoints():
    # FakeWeb.allow_net_connect = %r(127.0.0.7)
    httpretty.register_uri(get,
                           r(r"/v1/users\?email="),
                           body=fixture('v1-user'),
                           match_querystring=True)
    Intercom.endpoints = ("http://127.0.0.7", "https://api.intercom.io")
    user = User.find(email='*****@*****.**')
    eq_(user.name, 'Somebody')
Exemplo n.º 14
0
def add_tag(customer_id, tag):
    customer = Customer.objects.select_related('user').get(id=customer_id)
    user = IntercomUser.find(email=customer.user.email)
    try:
        IntercomTag.tag_users(tag, [user.id])
    except ResourceNotFound as e:
        IntercomTag.create(name=tag)
        IntercomTag.tag_users(tag, [user.id])
        logger.error('add_tag [ResourceNotFound]: %s' % e)
Exemplo n.º 15
0
 def test_increment(self):
     # Perform incrementing
     user = User.find(id=self.user.id)
     karma = user.custom_attributes.get('karma', 0)
     user.increment('karma')
     user.save()
     self.assertEqual(user.custom_attributes["karma"], karma + 1)
     user.increment('karma')
     user.save()
     self.assertEqual(user.custom_attributes["karma"], karma + 2)
Exemplo n.º 16
0
 def test_increment(self):
     # Perform incrementing
     user = User.find(id=self.user.id)
     karma = user.custom_attributes.get('karma', 0)
     user.increment('karma')
     user.save()
     self.assertEqual(user.custom_attributes["karma"], karma + 1)
     user.increment('karma')
     user.save()
     self.assertEqual(user.custom_attributes["karma"], karma + 2)
Exemplo n.º 17
0
    def test_add_user_custom_attributes(self):
        user = User.find(email=self.user.email)
        user.companies = [
            {
                "id": 6,
                "name": "Intercom",
                "custom_attributes": {
                    "referral_source": "Google"
                }
            }
        ]
        user.save()
        user = User.find(email=self.user.email)
        self.assertEqual(len(user.companies), 2)
        self.assertEqual(user.companies[0].company_id, "9")

        # check the custom attributes
        company = Company.find(company_id=6)
        self.assertEqual(
            company.custom_attributes['referral_source'], "Google")
Exemplo n.º 18
0
def get_or_create_user(timestamp):
    # get user
    email = '*****@*****.**' % (timestamp)
    try:
        user = User.find(email=email)
    except ResourceNotFound:
        # Create a user
        user = User.create(email=email,
                           user_id=timestamp,
                           name="Ada %s" % (timestamp))
        time.sleep(5)
    return user
Exemplo n.º 19
0
def test_user():
    httpretty.register_uri(
        get, r(r"/v1/users\?email="),
        body=fixture('v1-user'), match_querystring=True)
    user = User.find(email='*****@*****.**')
    eq_(user.name, 'Somebody')

    httpretty.register_uri(
        get, r(r"/v1/users\?user_id="),
        body=fixture('v1-user'), match_querystring=True)
    user = User.find_by_user_id('123')
    eq_(user.name, 'Somebody')
Exemplo n.º 20
0
def get_or_create_user(timestamp):
    # get user
    email = '*****@*****.**' % (timestamp)
    try:
        user = User.find(email=email)
    except ResourceNotFound:
        # Create a user
        user = User.create(
            email=email,
            user_id=timestamp,
            name="Ada %s" % (timestamp))
        time.sleep(5)
    return user
Exemplo n.º 21
0
def sync_tags():
    customers = Customer.objects.select_related('user').all()
    for customer in customers:
        tags = customer.get_tags()
        if tags:
            user = IntercomUser.find(email=customer.user.email)
        for tag in tags:
            try:
                IntercomTag.tag_users(tag, [user.id])
            except ResourceNotFound as e:
                IntercomTag.create(tag)
                IntercomTag.tag_users(tag, [user.id])
                logger.error('sync_tags [ResourceNotFound]: %s' % e)
Exemplo n.º 22
0
def add_event(customer_id, event, data=None, order_id=None):
    customer = Customer.objects.select_related('user').get(id=customer_id)

    if data is None:
        data = {}

    if order_id:
        data.update(_get_order_data(order_id=order_id))

    IntercomLocal.objects.create(customer=customer, event=event, data=data)

    try:
        IntercomUser.find(email=customer.user.email)
    except ResourceNotFound as e:
        create_intercom_profile(email=customer.user.email)
        logger.error('add_event [ResourceNotFound]: %s' % e)

    IntercomEvent.create(
        event_name=event,
        email=customer.user.email,
        created_at=int(time.time()),  # UTC
        metadata=data)
Exemplo n.º 23
0
def test_user():
    httpretty.register_uri(get,
                           r(r"/v1/users\?email="),
                           body=fixture('v1-user'),
                           match_querystring=True)
    user = User.find(email='*****@*****.**')
    eq_(user.name, 'Somebody')

    httpretty.register_uri(get,
                           r(r"/v1/users\?user_id="),
                           body=fixture('v1-user'),
                           match_querystring=True)
    user = User.find_by_user_id('123')
    eq_(user.name, 'Somebody')
Exemplo n.º 24
0
def update_intercom_profile(customer_id, data=None):
    customer = Customer.objects.select_related('user').get(id=customer_id)
    try:
        user = IntercomUser.find(email=customer.user.email)
    except ResourceNotFound:
        user = create_intercom_profile(email=customer.user.email)

    if data:
        # Partial update
        user.custom_attributes.update(data)
    else:
        # Full update
        user.name = customer.get_full_name()
        user.signed_up_at = customer.get_signed_up()
        user.custom_attributes.update({
            'last_login_at':
            customer.get_last_login(),
            'last_order_at':
            customer.get_last_order_date(),
            'paused':
            customer.subscription_is_paused(),
            'unsubscribed':
            customer.subscription_is_canceled(),
            'have_active_order':
            customer.has_active_order(),
            'address':
            customer.get_full_address(),
            'postcode':
            customer.postcode,
            'phone':
            customer.phone,
            'vouchers':
            customer.get_all_voucher_names(),
            'amount':
            round(customer.amount, 2),
            'total_spend':
            customer.get_total_spend(),
            'shipped_orders':
            customer.get_count_orders(),
            'facebook_id':
            customer.get_facebook_id(),
            'stripe_id':
            customer.stripe_id,
            'preferred_brew_method':
            customer.get_preferred_brew_method(),
            'has_bought_christmas_gift':
            customer.has_bought_christmas_gift(),
        })
    user.save()
Exemplo n.º 25
0
 def it_handles_accented_characters(self):
     # create a user dict with a name that contains accented characters
     payload = get_user(name='Jóe Schmö')
     # create bytes content
     content = json.dumps(payload).encode('utf-8')
     # create mock response
     resp = mock_response(content)
     with patch('requests.request') as mock_method:
         mock_method.return_value = resp
         user = User.find(email='*****@*****.**')
         try:
             # Python 2
             eq_(unicode('Jóe Schmö', 'utf-8'), user.name)
         except NameError:
             # Python 3
             eq_('Jóe Schmö', user.name)
Exemplo n.º 26
0
 def it_handles_accented_characters(self):
     # create a user dict with a name that contains accented characters
     payload = get_user(name='Jóe Schmö')
     # create bytes content
     content = json.dumps(payload).encode('utf-8')
     # create mock response
     resp = mock_response(content)
     with patch('requests.request') as mock_method:
         mock_method.return_value = resp
         user = User.find(email='*****@*****.**')
         try:
             # Python 2
             eq_(unicode('Jóe Schmö', 'utf-8'), user.name)
         except NameError:
             # Python 3
             eq_('Jóe Schmö', user.name)
Exemplo n.º 27
0
 def test_untag_users(self):
     # Untag users
     tag = Tag.untag_users("blue", [self.user.id])
     self.assertEqual(tag.name, "blue")
     user = User.find(email=self.user.email)
     self.assertEqual(0, len(user.tags))
Exemplo n.º 28
0
 def test_find_by_email(self):
     # Find user by email
     user = User.find(email=self.email)
     self.assertEqual(self.email, user.email)
Exemplo n.º 29
0
 def test_not_found(self):
     User.find(email='*****@*****.**')
Exemplo n.º 30
0
 def test_server_error(self):
     User.find(email='*****@*****.**')
Exemplo n.º 31
0
 def test_find_by_email(self):
     # Find user by email
     user = User.find(email=self.email)
     self.assertEqual(self.email, user.email)
Exemplo n.º 32
0
 def it_fetches_a_user(self):
     with patch.object(Intercom, 'get', return_value=get_user()) as mock_method:  # noqa
         user = User.find(email='*****@*****.**')
         eq_(user.email, '*****@*****.**')
         eq_(user.name, 'Joe Schmoe')
         mock_method.assert_called_once_with('/users', email='*****@*****.**')  # noqa
Exemplo n.º 33
0
 def test_user(self):
     user = User.find(email="*****@*****.**")
     self.assertEqual("Somebody", user.name)
Exemplo n.º 34
0
 def test_server_error(self):
     User.find(email="*****@*****.**")
Exemplo n.º 35
0
def test_bad_gateway():
    httpretty.register_uri(
        get, r(r"/v1/users\?email="),
        status=502, match_querystring=True)
    User.find(email='*****@*****.**')
Exemplo n.º 36
0
def test_unreachable():
    httpretty.register_uri(
        get, r(r"/v1/users\?email="),
        status=503, match_querystring=True)
    User.find(email='*****@*****.**')
Exemplo n.º 37
0
def test_unreachable():
    httpretty.register_uri(get,
                           r(r"/v1/users\?email="),
                           status=503,
                           match_querystring=True)
    User.find(email='*****@*****.**')
Exemplo n.º 38
0
def test_bad_gateway():
    httpretty.register_uri(get,
                           r(r"/v1/users\?email="),
                           status=502,
                           match_querystring=True)
    User.find(email='*****@*****.**')
Exemplo n.º 39
0
 def test_user(self):
     user = User.find(email='*****@*****.**')
     self.assertEqual('Somebody', user.name)
Exemplo n.º 40
0
 def test_not_found(self):
     User.find(email="*****@*****.**")
Exemplo n.º 41
0
def test_server_error_qs():
    httpretty.register_uri(
        get, r(r"/v1/users\?email=server-error"),
        body=fixture('v1-user_server_error'), status=500,
        match_querystring=True)
    User.find(email='*****@*****.**')
Exemplo n.º 42
0
def export_users_batch(argv=sys.argv):
    if len(argv) < 2:
        usage(argv)
    config_uri = argv[1]
    options = parse_vars(argv[2:])
    setup_logging(config_uri)
    settings = get_appsettings(config_uri, options=options)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)

    create_attrs = {'name': 'nicename',
                    'email': 'email',
                    'contact_email': 'linkedin_email',
                    'phone': 'phone',
                    #'user_hash': 'get_hmac',
                    'created_at': 'create_timestamp',
                    'poc': 'point_of_contact',
                    'primary_type': 'primary_type',
                    'total_sent_messages': 'sent',
                    "total_connected_messages": 'connected',
                    "conversion_messages": 'ratio',
                    "Connect_Me-Accepted": 'connect_me_accept',
                    "Connect_Me-Sent": 'connect_me_sent',
                    "Connect_Me-Conv_Rate": 'connect_me_conv',
                    "Request_Meeting-Accepted": 'request_meeting_accept',
                    "Request_Meeting-Sent": 'request_meeting_sent',
                    "Request_Meeting-Conv_Rate": 'request_meeting_conv',
                    "Customer-To-Founder-Accepted": 'company_accept',
                    "Customer-To-Founder-Sent": 'company_sent',
                    "Customer-To-Founder-Conv_Rate": 'company_conv'
                    }
    not_custom_attrs = ['name', 'email', 'created_at']

    with transaction.manager:
        Intercom.app_id = Settings.get('intercom_id')
        Intercom.app_api_key = Settings.get('intercom_api_key')
        users = DBSession.query(User).filter(User.activated == True, User.login_enabled == True).all()
        print 'Rate limits', Intercom.rate_limit_details
        print 'Have %s users able to login, starting to update their info in intercom!' % len(users)
        for user in users:
            print 'processing user %s' % user.email
            try:
                intercom_user = IntercomUser.find(email=user.email)
            except:
                print 'created new user for intercom'
                intercom_user = IntercomUser.create(email=user.email)

            stats = user.get_connect_stats()

            changed = False
            for intercomattr, userattr in create_attrs.iteritems():
                val = stats.get(userattr, getattr(user, userattr, None))
                if hasattr(val, '__call__'):
                    val = val()
                if val is None:
                    continue
                changed = True
                if intercomattr in not_custom_attrs:
                    setattr(intercom_user, intercomattr, val)
                else:
                    intercom_user.custom_attributes[intercomattr] = val
            if user.company:
                intercom_user.companies = [{'id': user.company.id,
                                            'name': user.company.name}]
            intercom_user.custom_attributes['class_number'] = user.company.alchemistclass \
                if user.company else 'No class'

            if changed:
                print 'sending %s info' % user.email
                intercom_user.save()

            if Intercom.rate_limit_details.get('remaining', 0) <= 10:
                break
Exemplo n.º 43
0
 def test_user(self):
     user = User.find(email='*****@*****.**')
     self.assertEqual('Somebody', user.name)
Exemplo n.º 44
0
 def test_find_by_id(self):
     # Find user by id
     user = User.find(id=self.user.id)
     self.assertEqual(self.email, user.email)
Exemplo n.º 45
0
 def test_find_by_id(self):
     # Find user by id
     user = User.find(id=self.user.id)
     self.assertEqual(self.email, user.email)
Exemplo n.º 46
0
 def test_untag_users(self):
     # Untag users
     tag = Tag.untag_users('blue', [self.user.id])
     self.assertEqual(tag.name, 'blue')
     user = User.find(email=self.user.email)
     self.assertEqual(0, len(user.tags))
Exemplo n.º 47
0
def test_not_found_qs():
    httpretty.register_uri(
        get, r(r"/v1/users\?email=not-found"),
        body=fixture('v1-user_not_found'), status=404, match_querystring=True)
    User.find(email='*****@*****.**')