コード例 #1
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_aAdminReviewerTryingToReviewAsAdmin_ItShouldSucceed(self):

        setReviewTimeUnit(0)
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test1"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        createPlayer("reviewer1", "reviewer1")

        admin = getAdmin()
        admin.playerList.append('reviewer1')
        setAdmin(admin)

        service.getRandomScore("reviewer1")
        response = service.reviewScore("reviewer1", {'score':3, 'time': 0}, True)


        self.assertTrue('result' in response)

        playerKey = Key.from_path('Player', playerId)
        verifiedScoreWrapper = VerifiedScoreWrapper.get_by_key_name('verifiedScore', parent=playerKey)
        verifiedScore = verifiedScoreWrapper.verified
        self.assertEqual(verifiedScore.value, 3)
        self.assertEqual(verifiedScore.approvedByAdmin, True)
コード例 #2
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_score_and_ThreeDisapprovingReviewerOfWhichTwoAgree_then_NonAgreeingReviewerAndPLayerAreCheater(self):
        score = {'score' : 99, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)

        createReviewerAndReview("test2", playerKey, {'score':3, 'time': 0})

        createReviewerAndReview("test3", playerKey, {'score':999, 'time': 0})

        createReviewerAndReview("test4", playerKey, {'score':3, 'time': 0})


        verifiedScore = VerifiedScore.get_by_key_name("verified", parent=playerKey)
        playerRecord = Record.get_by_key_name('record', parent=playerKey)

        self.assertTrue(verifiedScore is None or verifiedScore.value == 0)
        self.assertEqual(playerRecord.numCheat, 1)


        playerKey = Key.from_path('Player', 'test3')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 1)
コード例 #3
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
 def testWrongSessionSignedRequestForPlayer(self):
     playerId = "test"
     createPlayer(playerId, "test")
     createPlayerSession(playerId, 'signedRequest')
     signedRequest = createSignedRequest(playerId, "wrong secret", 'score.service.echo', 'hello')
     response = signedRequestCall(signedRequest)
     self.assertTrue('error' in response and response['error']['code'] == INVALID_SIGNATURE_ERROR['code'])
コード例 #4
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_aAdminReviewerTryingToReviewAsAdmin_ItShouldSucceedAndDeclareNonAgreeingConflictingReviewerAsCheaters(self):

        setReviewTimeUnit(0)
        score = {'score' : 99, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)

        createReviewerAndReview("test2", playerKey, {'score':3, 'time': 0})

        createReviewerAndReview("test3", playerKey, {'score':999, 'time': 0})

        createReviewerAndReview("test4", playerKey, {'score':3, 'time': 0}, True)


        verifiedScore = VerifiedScore.get_by_key_name("verified", parent=playerKey)
        playerRecord = Record.get_by_key_name('record', parent=playerKey)

        self.assertTrue(verifiedScore is None or verifiedScore.value == 0)
        self.assertEqual(playerRecord.numCheat, 1)


        playerKey = Key.from_path('Player', 'test3')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 1)

        playerKey = Key.from_path('Player', 'test2')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 0)
コード例 #5
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
 def testNonExistingMethodSignedRequestCall(self):
     playerId = "test"
     createPlayer(playerId, "test")
     session = createPlayerSession(playerId, 'signedRequest')
     signedRequest = createSignedRequest(playerId, session.secret, 'nonExisitingMehtod')
     response = signedRequestCall(signedRequest)
     self.assertTrue('error' in response and response['error']['code'] == UNKNOW_SERVICE_CALL_ERROR['code'])
コード例 #6
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_score_and_TwoDisapprovingButNonAgreeingReviewerAndOneApprovingReviewer_then_NonApprovingReviewerAreCheater_and_playerVerifiedScoreIsUpdated(self):
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)
        createReviewerAndReview("test2", playerKey, {'score':99, 'time': 0})

        createReviewerAndReview("test3", playerKey, {'score':999, 'time': 0})

        createReviewerAndReview("test4", playerKey, {'score':3, 'time': 0})

        verifiedScoreWrapper = VerifiedScoreWrapper.get_by_key_name('verifiedScore', parent=playerKey)
        verifiedScore = verifiedScoreWrapper.verified
        self.assertEqual(verifiedScore.value, 3)

        playerKey = Key.from_path('Player', 'test2')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 1)

        playerKey = Key.from_path('Player', 'test3')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 1)
コード例 #7
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_reviewerVerifyingScore_if_playerSetNewScoreInTheMeanTime_when_reviewerSetReviewItShouldBeDiscarded(self):
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)
        reviewer = createPlayer("reviewer", "reviewer")
        assignScoreReview(reviewer, playerKey)


        reviewer2 = createPlayer("reviewer2", "reviewer2")
        scoreToReview = assignScoreReview(reviewer2, playerKey)

        score = {'score' : 4, 'proof' : "sdsd", 'time' : 0}
        service.start(playerId)
        service.setScore(playerId, score)

        service.reviewScore("reviewer", {'score':4, 'time': 0})
        service.reviewScore("reviewer2", {'score':3, 'time': 0})

        verifiedScore = VerifiedScore.get_by_key_name("verified", parent=playerKey)
        self.assertEqual(verifiedScore, None)

        # TDO : move to another test?
        scoreToReview = db.get(scoreToReview.key())
        self.assertEqual(scoreToReview, None)
コード例 #8
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
    def testExpiredSessionTokenCall(self):
        playerId = "test"
        createPlayer(playerId, "test")
        session = createPlayerSession(playerId, 'token', datetime=datetime.datetime.now() - DEFAULT_MAX_SESSION_LIFE_TIME)

        response = sessionTokenCall(session.token, playerId, 'score.service.echo', 'hello')
        self.assertTrue('error' in response and response['error']['code'] == SESSION_EXPIRED_ERROR['code'])
コード例 #9
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
 def testCorrectSessionTokenCall(self):
     playerId = "test"
     createPlayer(playerId, "test")
     session = createPlayerSession(playerId, 'token')
     message = 'hello'
     answer = sessionTokenCall(session.token, playerId, 'score.service.echo', message)
     self.assertEqual(answer['result'], str(playerId) + ':' + message)
コード例 #10
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
 def testWrongSessionMethod(self):
     playerId = "test"
     createPlayer(playerId, "test")
     createPlayerSession(playerId, 'token')
     signedRequest = createSignedRequest(playerId, "wrong secret", 'score.service.echo', 'hello')
     response = signedRequestCall(signedRequest)
     self.assertTrue('error' in response and response['error']['code'] == SIGNED_REQUEST_METHOD_ERROR['code'])
コード例 #11
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_newPlayerWithoutReviewAssigned_shouldGetNoReviews(self):
        playerId = "test"
        createPlayer(playerId, playerId)

        playerKey = Key.from_path('Player', playerId)
        reviewSession = ReviewSession.get_by_key_name('reviewSession', parent=playerKey)
        self.assertEqual(reviewSession, None)
コード例 #12
0
    def post(self):
        userId = self.request.get('userId')

        if config.passwordUserAllowed is None or userId not in config.testMasters:
            self.error(403)
            return

        password = self.request.get('password')
        method = self.request.get('method')

        testUserId = self.request.get('testUserId')

        passwordUser = PasswordUser.get_by_key_name(userId)
        if passwordUser is not None:
            if passwordUser.password != password:
                self.error(403)
                return
            playerId = passwordUser.playerId
        else:
            player = createPlayer('passwordUser' + userId, "nickName" + userId)
            playerId = player.key().id_or_name()
            passwordUser = PasswordUser(key_name=userId,
                                        playerId=playerId,
                                        password=password)
            passwordUser.put()

        testUser = TestUser.get_by_key_name(testUserId)
        if testUser is not None:
            testPlayerId = testUser.playerId
        else:
            testPlayer = createPlayer('testUser' + testUserId,
                                      "nickName" + testUserId)
            testPlayerId = testPlayer.key().id_or_name()
            testUser = TestUser(key_name=testUserId, playerId=testPlayerId)
            testUser.put()

        if method is None:
            if self.request.scheme == 'https':
                method = 'signedRequest'
            else:
                method = 'token'

        session = createPlayerSession(testPlayerId, method)
        if method == 'token':
            data = {
                u'method': 'token',
                u'sessionToken': session.token,
                u'playerId': testPlayerId
            }
        elif method == 'signedRequest':
            data = {
                u'method': 'signedRequest',
                u'secret': session.secret,
                u'playerId': testPlayerId
            }

        data = json.dumps(data)

        self.response.out.write(data)
コード例 #13
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
    def testExpiredSessionSignedRequestCall(self):
        playerId = "test"
        createPlayer(playerId, "test")
        session = createPlayerSession(playerId, 'signedRequest', datetime=datetime.datetime.now() - DEFAULT_MAX_SESSION_LIFE_TIME)

        signedRequest = createSignedRequest(playerId, session.secret, 'score.service.echo', 'hello')
        response = signedRequestCall(signedRequest)
        self.assertTrue('error' in response and response['error']['code'] == SESSION_EXPIRED_ERROR['code'])
コード例 #14
0
 def testWrongSessionTokenForPlayer(self):
     playerId = "test"
     createPlayer(playerId, "test")
     createPlayerSession(playerId, 'token')
     response = sessionTokenCall("wrong token", playerId,
                                 'score.service.echo', 'hello')
     self.assertTrue('error' in response and response['error']['code']
                     == INVALID_SESSION_TOKEN_ERROR['code'])
コード例 #15
0
 def testCorrectSessionTokenCall(self):
     playerId = "test"
     createPlayer(playerId, "test")
     session = createPlayerSession(playerId, 'token')
     message = 'hello'
     answer = sessionTokenCall(session.token, playerId,
                               'score.service.echo', message)
     self.assertEqual(answer['result'], str(playerId) + ':' + message)
コード例 #16
0
 def testNonExistingMethodTokenCall(self):
     playerId = "test"
     createPlayer(playerId, "test")
     session = createPlayerSession(playerId, 'token')
     response = sessionTokenCall(session.token, playerId,
                                 'nonExisitingMehtod')
     self.assertTrue(
         'error' in response
         and response['error']['code'] == UNKNOW_SERVICE_CALL_ERROR['code'])
コード例 #17
0
 def testWrongSessionMethod(self):
     playerId = "test"
     createPlayer(playerId, "test")
     createPlayerSession(playerId, 'token')
     signedRequest = createSignedRequest(playerId, "wrong secret",
                                         'score.service.echo', 'hello')
     response = signedRequestCall(signedRequest)
     self.assertTrue('error' in response and response['error']['code']
                     == SIGNED_REQUEST_METHOD_ERROR['code'])
コード例 #18
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
    def testCorrectSessionSignedRequestCall(self):
        playerId = "test"
        createPlayer(playerId, "test")
        session = createPlayerSession(playerId, 'signedRequest')

        message = 'hello'
        signedRequest = createSignedRequest(playerId, session.secret, 'score.service.echo', message)
        answer = signedRequestCall(signedRequest)

        self.assertEqual(answer['result'], str(playerId) + ':' + message)
コード例 #19
0
 def testNonExistingMethodSignedRequestCall(self):
     playerId = "test"
     createPlayer(playerId, "test")
     session = createPlayerSession(playerId, 'signedRequest')
     signedRequest = createSignedRequest(playerId, session.secret,
                                         'nonExisitingMehtod')
     response = signedRequestCall(signedRequest)
     self.assertTrue(
         'error' in response
         and response['error']['code'] == UNKNOW_SERVICE_CALL_ERROR['code'])
コード例 #20
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_aScoreSubmitedTooEarly_ItShouldNotBeSubmited(self):
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 10000}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)
        pendingScore = PendingScore.get_by_key_name('pendingScore', parent=playerKey)
        self.assertEqual(pendingScore, None)
コード例 #21
0
 def testWrongSessionSignedRequestForPlayer(self):
     playerId = "test"
     createPlayer(playerId, "test")
     createPlayerSession(playerId, 'signedRequest')
     signedRequest = createSignedRequest(playerId, "wrong secret",
                                         'score.service.echo', 'hello')
     response = signedRequestCall(signedRequest)
     self.assertTrue(
         'error' in response
         and response['error']['code'] == INVALID_SIGNATURE_ERROR['code'])
コード例 #22
0
    def testCorrectSessionSignedRequestCall(self):
        playerId = "test"
        createPlayer(playerId, "test")
        session = createPlayerSession(playerId, 'signedRequest')

        message = 'hello'
        signedRequest = createSignedRequest(playerId, session.secret,
                                            'score.service.echo', message)
        answer = signedRequestCall(signedRequest)

        self.assertEqual(answer['result'], str(playerId) + ':' + message)
コード例 #23
0
    def testExpiredSessionTokenCall(self):
        playerId = "test"
        createPlayer(playerId, "test")
        session = createPlayerSession(playerId,
                                      'token',
                                      datetime=datetime.datetime.now() -
                                      DEFAULT_MAX_SESSION_LIFE_TIME)

        response = sessionTokenCall(session.token, playerId,
                                    'score.service.echo', 'hello')
        self.assertTrue(
            'error' in response
            and response['error']['code'] == SESSION_EXPIRED_ERROR['code'])
コード例 #24
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_score_and_approvingReviewer_then_playerVerifiedScoreIsUpdated(self):
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)

        createReviewerAndReview("test2", playerKey, {'score':3, 'time': 0})

        verifiedScoreWrapper = VerifiedScoreWrapper.get_by_key_name('verifiedScore', parent=playerKey)
        verifiedScore = verifiedScoreWrapper.verified
        self.assertEqual(verifiedScore.value, score['score'])
コード例 #25
0
    def testExpiredSessionSignedRequestCall(self):
        playerId = "test"
        createPlayer(playerId, "test")
        session = createPlayerSession(playerId,
                                      'signedRequest',
                                      datetime=datetime.datetime.now() -
                                      DEFAULT_MAX_SESSION_LIFE_TIME)

        signedRequest = createSignedRequest(playerId, session.secret,
                                            'score.service.echo', 'hello')
        response = signedRequestCall(signedRequest)
        self.assertTrue(
            'error' in response
            and response['error']['code'] == SESSION_EXPIRED_ERROR['code'])
コード例 #26
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_aAdminReviewerDisapprovingAnAlreadyVerifiedScore_ItShouldDeclareVerifierAsACheaterAndOtherAsNonCheaters(self):

        setReviewTimeUnit(0)
        score = {'score' : 99, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)

        createReviewerAndReview("test2", playerKey, {'score':3, 'time': 0})

        createReviewerAndReview("test3", playerKey, {'score':999, 'time': 0})

        createReviewerAndReview("test4", playerKey, {'score':99, 'time': 0}) # verified


        verifiedScoreWrapper = VerifiedScoreWrapper.get_by_key_name('verifiedScore', parent=playerKey)
        verifiedScore = verifiedScoreWrapper.verified
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertTrue(verifiedScore.value == 99)
        self.assertEqual(playerRecord.numCheat, 0)

        createPlayer('admin1', 'admin1')
        admin = getAdmin()
        admin.playerList.append('admin1')
        setAdmin(admin)
        service.getHighestNonApprovedScore('admin1')

        service.approveScore('admin1', {'score':3, 'time': 0})


        verifiedScoreWrapper = VerifiedScoreWrapper.get_by_key_name('verifiedScore', parent=playerKey)
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertTrue(verifiedScoreWrapper is None)
        self.assertEqual(playerRecord.numCheat, 1)

        playerKey = Key.from_path('Player', 'test3')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 0)

        playerKey = Key.from_path('Player', 'test2')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 0)

        playerKey = Key.from_path('Player', 'test4')
        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 1)
コード例 #27
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_aReviewerTryingToReviewAsAdmin_ItShouldBeGivenAnError(self):

        setReviewTimeUnit(0)
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test1"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        createPlayer("reviewer1", "reviewer1")

        service.getRandomScore("reviewer1")
        response = service.reviewScore("reviewer1", {'score':3, 'time': 0}, True)

        self.assertTrue('error' in response and response['error']['code'] == ADMIN_ONLY['code'])
コード例 #28
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_goodScoreWithWrongTime_thenPlayerIsCheater(self):
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)

        createReviewerAndReview("test2", playerKey, {'score':3, 'time': 3})

        createReviewerAndReview("test3", playerKey, {'score':3, 'time': 3})

        verifiedScore = VerifiedScore.get_by_key_name("verified", parent=playerKey)
        self.assertTrue(verifiedScore is None or verifiedScore.value == 0)

        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 1)
コード例 #29
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_score_and_twoDisapprovingButAgreeingReviewers_then_playerIsCheater_and_verfiedScoreDoNotChange(self):
        score = {'score' : 99, 'proof' : "sdsd", 'time' : 0}
        playerId = "test"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        playerKey = Key.from_path('Player', playerId)

        createReviewerAndReview("test2", playerKey, {'score':3, 'time': 0})

        createReviewerAndReview("test3", playerKey, {'score':3, 'time': 0})

        verifiedScore = VerifiedScore.get_by_key_name("verified", parent=playerKey)
        self.assertTrue(verifiedScore is None or verifiedScore.value == 0)

        playerRecord = Record.get_by_key_name('record', parent=playerKey)
        self.assertEqual(playerRecord.numCheat, 1)
コード例 #30
0
ファイル: testScore.py プロジェクト: wighawag/ubh
def createReviewerAndReview(reviewerId, playerKey, scoreValue, adminMode = False):
    reviewer = createPlayer(reviewerId, reviewerId)
    if adminMode:
        admin = getAdmin()
        admin.playerList.append(reviewerId)
        setAdmin(admin)
    scoreToReview = assignScoreReview(reviewer, playerKey)
    service.reviewScore(reviewerId, scoreValue, adminMode)
    return scoreToReview
コード例 #31
0
    def test_whetherTimeUnitIsUpdatedProperly(self):
        setReviewTimeUnit(0)
        for i in range(0,10):
            playerId = 'test' + str(i)
            createPlayer(playerId, playerId)
            service.start(playerId)
            service.setScore(playerId, {'score' : 3, 'proof' : "sdsd", 'time' : 0})

        for i in range(10,20):
            playerId = 'test' + str(i)
            createPlayer(playerId, playerId)
            service.getRandomScore(playerId)
            service.reviewScore(playerId, {'score' : 3, 'time' : 0})

        config.nbPlayerPerTimeUnit = 10
        setCurrentUser('*****@*****.**', 'test', True)
        response = self.updateReviewTimeUnitApp.get('/cron/updateReviewTimeUnit')
        responseValue = int(response.body)
        self.assertTrue(responseValue > 0 and responseValue < 10000)
コード例 #32
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_aReviewerReviewingTwoTimesTooQuickly_ItShouldBeAskedToRetryLater(self):

        setReviewTimeUnit(2000)
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test1"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test2"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        createPlayer("reviewer1", "reviewer1")

        sleep(3)

        service.getRandomScore("reviewer1")
        service.reviewScore("reviewer1", {'score':3, 'time': 0})

        response= service.getRandomScore("reviewer1")

        self.assertTrue('result' in response and response['result']['retry']  > 0)
コード例 #33
0
ファイル: googleUserEntryPoint.py プロジェクト: wighawag/ubh
    def get(self):
        user = users.get_current_user()
        if user is None:
            self.error(403)
            return

        userId = user.user_id()
        googleUser = GoogleUser.get_by_key_name(userId)
        if googleUser is not None:
            playerId = googleUser.playerId
        else:
            player = createPlayer('googleUser_' + userId, "nickName" + userId)
            playerId = player.key().id_or_name()
            googleUser = GoogleUser(key_name=userId, playerId=playerId)
            googleUser.put()

        method = self.request.get("method", default_value=None)
        if method is None:
            if self.request.scheme == 'https':
                method = 'signedRequest'
            else:
                method = 'token'

        session = createPlayerSession(playerId, method)
        if method == 'token':
            flashvars = {
                u'method': 'token',
                u'sessionToken': session.token,
                u'playerId': playerId
            }
        elif method == 'signedRequest':
            flashvars = {
                u'method': 'signedRequest',
                u'secret': session.secret,
                u'playerId': playerId
            }

        name = "googleUser"
        data = {}
        data[u'flashvars'] = json.dumps(flashvars)
        data[u'title'] = u'FJump (XJump remasterized)'
        self.response.out.write(
            template.render(config.templatesPath + name + '.html', data))
コード例 #34
0
ファイル: googleUserEntryPoint.py プロジェクト: wighawag/ubh
    def get(self):
        user = users.get_current_user()
        if user is None :
            self.error(403)
            return

        userId = user.user_id()
        googleUser = GoogleUser.get_by_key_name(userId)
        if googleUser is not None:
            playerId = googleUser.playerId
        else:
            player = createPlayer('googleUser_' + userId, "nickName" + userId)
            playerId = player.key().id_or_name()
            googleUser = GoogleUser(key_name=userId, playerId=playerId)
            googleUser.put();

        method = self.request.get("method", default_value=None)
        if method is None:
            if self.request.scheme == 'https':
                method = 'signedRequest'
            else:
                method = 'token'

        session = createPlayerSession(playerId, method)
        if method == 'token':
            flashvars = {u'method' : 'token', u'sessionToken' : session.token, u'playerId' : playerId}
        elif method == 'signedRequest':
            flashvars = {u'method' : 'signedRequest', u'secret' : session.secret, u'playerId' : playerId}


        name = "googleUser"
        data = {}
        data[u'flashvars'] = json.dumps(flashvars)
        data[u'title'] = u'FJump (XJump remasterized)'
        self.response.out.write(template.render(
            config.templatesPath + name + '.html',
            data))
コード例 #35
0
ファイル: testScore.py プロジェクト: wighawag/ubh
    def test_given_aReviewerGettingRandomScoreQuickly_ItShouldNotBeAskedToRetryLater(self):

        setReviewTimeUnit(2000)
        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test1"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        score = {'score' : 3, 'proof' : "sdsd", 'time' : 0}
        playerId = "test2"
        createPlayer(playerId, playerId)
        service.start(playerId)
        service.setScore(playerId, score)

        createPlayer("reviewer1", "reviewer1")

        sleep(3)

        service.getRandomScore("reviewer1")
        response= service.getRandomScore("reviewer1")

        # TODO : expect a KeyError for retry
        self.assertFalse('result' in response and response['result']['retry']  > 0)
コード例 #36
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
 def testNonExistingMethodTokenCall(self):
     playerId = "test"
     createPlayer(playerId, "test")
     session = createPlayerSession(playerId, 'token')
     response = sessionTokenCall(session.token, playerId, 'nonExisitingMehtod')
     self.assertTrue('error' in response and response['error']['code'] == UNKNOW_SERVICE_CALL_ERROR['code'])
コード例 #37
0
ファイル: testSecureService.py プロジェクト: wighawag/ubh
 def testWrongSessionTokenForPlayer(self):
     playerId = "test"
     createPlayer(playerId, "test")
     createPlayerSession(playerId, 'token')
     response = sessionTokenCall("wrong token", playerId, 'score.service.echo', 'hello')
     self.assertTrue('error' in response and response['error']['code'] == INVALID_SESSION_TOKEN_ERROR['code'])
コード例 #38
0
ファイル: entryPoint.py プロジェクト: wighawag/ubh
    def post(self):

        signedRequest = self.request.get("signed_request")
        signature, payload = decode_signedRequest(signedRequest)

        data = json.loads(base64_url_decode(payload))

        verified = verifySignature(signature, payload, FACEBOOK_APP_SECRET,
                                   data.get('algorithm').upper())
        if (not verified or ('user_id' not in data)):
            args = {
                'client_id': FACEBOOK_APP_ID,
                'redirect_uri': FACEBOOK_CANVAS_PAGE_URL
            }
            url = "https://www.facebook.com/dialog/oauth?" + urllib.urlencode(
                args)
            self.response.out.write(
                '<script language="javascript">top.location.href="' + url +
                '"</script>')
            return

        userId = data['user_id']
        oauthToken = data['oauth_token']
        facebookUser = FacebookUser.get_by_key_name(userId)
        if facebookUser is not None:
            if facebookUser.oauthToken != oauthToken:
                facebookUser.oauthToken = oauthToken
                facebookUser.put()
            playerId = facebookUser.playerId
        else:
            player = createPlayer('facebook_' + userId, "nickName" + userId)
            playerId = player.key().id_or_name()
            facebookUser = FacebookUser(key_name=userId,
                                        playerId=playerId,
                                        oauthToken=oauthToken)
            facebookUser.put()

        if self.request.scheme == 'https':
            method = 'signedRequest'
        else:
            method = 'token'
        session = createPlayerSession(playerId, method)
        if method == 'token':
            flashvars = {
                u'method': 'token',
                u'sessionToken': session.token,
                u'playerId': playerId,
                u'facebookOauthToken': oauthToken
            }
        elif method == 'signedRequest':
            flashvars = {
                u'method': 'signedRequest',
                u'secret': session.secret,
                u'playerId': playerId,
                u'facebookOauthToken': oauthToken
            }

        data = {}
        data[u'flashvars'] = json.dumps(flashvars)
        data[u'title'] = u'FJump (XJump remasterized)'
        data[u'facebookAppId'] = FACEBOOK_APP_ID
        self.response.out.write(
            template.render(config.templatesPath + 'facebookCanvas.html',
                            data))