Beispiel #1
0
def get_message(account_id, db, secure=True):
    messages = Messages.find(db, {'account_id':ObjectId(account_id)})
    if messages:
        return json.dumps(map(lambda x: Messages.toJSON(x), messages))
    else:
        response.status = 404
        return {}    
Beispiel #2
0
def create_message(account_id, db, secure=True):
    new_message = request.json
    new_message['account_id'] = ObjectId(account_id)
    message = Messages(db, new_message)
    message.insert()
    response.status = 201
    return message.JSON()
 def setUpClass(self):
     self.app = pp_tests.get_app()
     self.connection, self.db = pp_tests.connect_to_mongo()
     self.account = Accounts(self.db, {
         'email': '*****@*****.**',
         'password': '******',
         'name': 'Daniel',
         'startup': 'Payparrot',
         'url': 'http://payparrot.com/',
         'callback_url': 'http://www.epistemonikos.org',
         'notification_url': 'http://www.epistemonikos.org',
     })
     self.account.insert()
     
     self.message = Messages(self.db, {
         'account_id': self.account.id,
         'text': 'Hola Mundo %s' % randint(0, 100000),
         'url': 'http://es.wikipedia.org/wiki/Hola_mundo',
         'status': True,
         'active': True
     })
     self.message.insert()
     
     self.redirect = self.app.get('/parrots/start?external_id=1&token=%s' % self.account.credentials['public_token'])
     print "\n", self.redirect.location
     url = raw_input("Final url? ")
     query_string = urlparse(url).query
     self.finish_response = self.app.get('/parrots/finish?%s' % (query_string))
Beispiel #4
0
def update_message(account_id, message_id, db, secure=True):
    message = Messages.findOne(db, message_id)
    if message:
    	message.update(request.json)
        response.status = 204
    else:
        response.status = 404
Beispiel #5
0
def get_message(account_id, message_id, db, secure=True):
    message = Messages.findOne(db, message_id)
    if message:
        return message.JSON()
    else:
        response.status = 404
        return {}
Beispiel #6
0
def get_message_to_share(db, payment_message):
    # status means if we approved or not the message. Default True
    messages = list(Messages.find(db, {'account_id': ObjectId(payment_message.get('account_id')), 'status': True, 'active': True}))
    total_messages = len(messages)
    if total_messages == 0:
        log('cron2', 'WARNING: No active or validated messages available', payment_message.get('subscription_id'))
        return
    return messages[randint(0, total_messages-1)]
class TestCronsIntegration(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.app = pp_tests.get_app()
        self.connection, self.db = pp_tests.connect_to_mongo()
        self.account = Accounts(self.db, {
            'email': '*****@*****.**',
            'password': '******',
            'name': 'Daniel',
            'startup': 'Payparrot',
            'url': 'http://payparrot.com/',
            'callback_url': 'http://www.epistemonikos.org',
            'notification_url': 'http://www.epistemonikos.org',
        })
        self.account.insert()
        
        self.message = Messages(self.db, {
            'account_id': self.account.id,
            'text': 'Hola Mundo %s' % randint(0, 100000),
            'url': 'http://es.wikipedia.org/wiki/Hola_mundo',
            'status': True,
            'active': True
        })
        self.message.insert()
        
        self.redirect = self.app.get('/parrots/start?external_id=1&token=%s' % self.account.credentials['public_token'])
        print "\n", self.redirect.location
        url = raw_input("Final url? ")
        query_string = urlparse(url).query
        self.finish_response = self.app.get('/parrots/finish?%s' % (query_string))

    @classmethod
    def tearDownClass(self):
        pp_tests.tear_down(self.db, queue = True)
        self.connection.close()

    # def test_cron1(self):
    #     from payparrot_scripts.crons.cron1 import main as cron1
    #     cron1()
    #     
    #     subscription = Subscriptions.findOne(self.db, {})
    #     self.assertTrue(subscription.first_tweet)
    #     
    #     self.assertEqual(1, Queue.get_queue('payments').count())
    #     
    #     message = Queue.get_message('payments', visibility_timeout=1)
    #     self.assertEqual({
    #         'subscription_id': str(subscription.id),
    #         'account_id': str(subscription.account_id),
    #         'parrot_id': str(subscription.parrot_id)
    #     }, json.loads(message.get_body()))
    
    def test_crons(self):
        from payparrot_scripts.crons.cron1 import main as cron1
        cron1()
        
        from payparrot_scripts.crons.cron2 import main as cron2
        cron2()
        
        sleep(2)

        parrot = Parrots.findOne(self.db, {})
        
        twitter = Twitter()
        twitter.create_client(parrot.oauth_token, parrot.oauth_token_secret)
        headers, body = twitter.get("http://api.twitter.com/1/statuses/user_timeline.json?user_id=%s&include_rts=false&count=1" % parrot.twitter_info.get('screen_name'))
        json_twitter_status = json.loads(body)

        message_start = self.message.text
        received_message = json_twitter_status[0].get('text')
        self.assertEqual(self.message.text, received_message[0:len(message_start)])

        queue = Queue.get_queue('payments')
        self.assertEqual(0, queue.count())

        from payparrot_scripts.crons.cron3 import main as cron3
        cron3()

        raw_input("Check? ")