Exemplo n.º 1
0
def user_login():
    """
    (PUT: user)
    Method to handle when a user authenticates (from Facebook), be it a new user, or recurring user
    """

    fb_code = request.form.get("fb_code", None)
    access_token = request.form.get("access_token", None)
    
    if access_token is None:
        access_token = get_user_access_token(fb_code, APP_ID, APP_SECRET)
    
    fb_user_info, user = save_user(access_token, fb_code)
    api_key = gen_api_key(access_token, user.id)
    
    friends = get_friends(user, exclude_self=True)

    return jsonify({"status": "ok",
                    "result": {
                        "user": {
                                 "id": user.id,
                                 "name": user.facebook_user.name, 
                                 },
                        "friends": sanify_friends(friends),
                        "facebook_user_id": fb_user_info["id"],
                        "facebook_portrait_url": "https://graph.facebook.com/%s/picture" % user.facebook_user.id,
                        "api_key": api_key,
                    }
                    })
Exemplo n.º 2
0
    def test_new_invalid_checkpoint(self):
        """
        test the new_checkpoint API, with an invalid checkpoint (without expiry/price)
        """

        # create/save user
        authcode = "someauthcode"
        test_user = self.create_facebook_test_user()
        fb_info, user = save_user(test_user["access_token"], authcode)

        # prep image file
        image_path = join(get_resources_abs_path(), "test/images/timbre.jpg")
        image_file = open(image_path, "r")
        image = base64.encodestring(image_file.read())

        # craft request params
        data = {
            "user_id": user.id,
            "signature": gen_signature("put", "checkpoint", gen_api_key(user.access_token, user.id)),
            "name": random_string(),
            "longitude": 2.0,
            "latitude": 1.0,
            "description": random_string(),
            "image": image,
            "type:": "play",
        }

        # send it
        response = self.client.put("/checkpoint/", data=data)
        assert "Requires at least a price or expiry." in response.data
Exemplo n.º 3
0
 def create_saved_test_user(self):
     from action.user import save_user
     
     #create and save fb user
     authcode = random_string()
     test_user = self.create_facebook_test_user()
     fb_info, user = save_user(test_user["access_token"], authcode)
     
     return self.User(authcode, test_user, fb_info, user, None, None)
Exemplo n.º 4
0
 def test_share(self):
     """
     Tests the share function in the share layer if it does work as expected
     """
     
     #create and save facebook (test) user_a and user_b
     test_user_a = self.create_facebook_test_user()
     test_user_b = self.create_facebook_test_user()
     fb_user_info_a, user_a = save_user(test_user_a["access_token"], "someauthcode")
     fb_user_info_b, user_b = save_user(test_user_b["access_token"], "someauthcode")
     make_friend_connection(user_a.facebook_user.id, user_b.facebook_user.id, user_a.access_token, user_b.access_token)
     
     #create mock checkpoint and add it to user_a
     checkpoint = add_checkpoint(*CheckpointTests.mock_checkpoint_data(user_a.id))
     user_checkpoint  = add_checkpoint_to_user(user_a, checkpoint)
     
     #share checkpoint from user_a to user_b
     share(user_a, user_b, user_checkpoint)
     
     #assert
     print test_user_a
Exemplo n.º 5
0
    def test_add_checkpoint(self):
        """
        Tests the add_checkpoint() functionality by creating a mock checkpoint and saving
        it to a mock user
        """
        #create test user
        test_fb_user = self.create_facebook_test_user()
        fb_user, user = save_user(test_fb_user["access_token"], "someauthcode")
        
        #create mock checkpoint
        mock_cp_data = CheckpointTests.mock_checkpoint_data(user.id)
        checkpoint = add_checkpoint(*mock_cp_data)

        #asserts
        assert not get_checkpoint(checkpoint.id) is None
Exemplo n.º 6
0
    def test_save_user(self):
        #create test user with 3 friends
        app_xs_token = get_app_access_token(APP_ID, APP_SECRET)
        test_user = create_test_user(APP_ID, app_xs_token)
        friend_1 = create_test_user(APP_ID, app_xs_token)
        friend_2 = create_test_user(APP_ID, app_xs_token)
        friend_3 = create_test_user(APP_ID, app_xs_token)
        make_friend_connection(test_user["id"], friend_1["id"], test_user["access_token"], friend_1["access_token"])
        make_friend_connection(test_user["id"], friend_2["id"], test_user["access_token"], friend_2["access_token"])
        make_friend_connection(test_user["id"], friend_3["id"], test_user["access_token"], friend_3["access_token"])
        
        fb_user_info, user = save_user(test_user["access_token"], "someauthcode") 
        
        #assert that <<User>> records are indeed created
        assert not get_user_from_email(test_user["email"]) is None

        #assert that <<FriendConnection>> records are made
        from db import FriendConnection
        assert FriendConnection.query.filter_by(fb_user_from=user.facebook_user.id).count() == 3    
Exemplo n.º 7
0
 def test_login(self):
     app_xs_token = get_app_access_token(APP_ID, APP_SECRET)
     test_user = create_test_user(APP_ID, app_xs_token)
     friend_1 = create_test_user(APP_ID, app_xs_token)
     friend_2 = create_test_user(APP_ID, app_xs_token)
     friend_3 = create_test_user(APP_ID, app_xs_token)
     make_friend_connection(test_user["id"], friend_1["id"], test_user["access_token"], friend_1["access_token"])
     make_friend_connection(test_user["id"], friend_2["id"], test_user["access_token"], friend_2["access_token"])
     make_friend_connection(test_user["id"], friend_3["id"], test_user["access_token"], friend_3["access_token"])
     
     #create friend_2 first
     friend2_fb_user_info, friend2_user = save_user(friend_2["access_token"], "someauthcode")
     
     data = {"access_token": test_user["access_token"]}
     
     #login test_user
     response = self.client.put("/user/?", data=data)
     assert "ok" in response.data
     json_resp = loads(response.data)
     assert json_resp["status"] == "ok"
     assert json_resp["result"]["friends"][0]["user_id"] == friend2_user.id 
Exemplo n.º 8
0
 def test_authorization(self):
     """
     tests the authorization of a rest api call
     """
     #create a user
     app_xs_token = get_app_access_token(APP_ID, APP_SECRET)
     test_user = create_test_user(APP_ID, app_xs_token)
     auth_code = "someauthcode"
     fb_user_info, user = save_user(test_user["access_token"], auth_code)
     user_id = user.id
     api_key = gen_api_key(test_user["access_token"], user_id)
     
     #create signature
     signature = "\n".join([auth_code, "put", "checkpoint"])
     encrypted_sig = hmac.new(api_key, signature)
     base64_sig = base64.encodestring(encrypted_sig.hexdigest())
     
     #using user's credentials to access new_checkpoint api
     data = {"signature": base64_sig,
             "user_id": user_id}
     resp = self.client.put("/checkpoint/", data=data)