Exemplo n.º 1
0
    def test_simple(self):
        for x in xrange(10):
            LogEntry.make(self._default_access, None, None,
                action="act{}".format(x)).put()

        req = self.get()
        self.assertEquals(len(req.json["result"]), 10)
Exemplo n.º 2
0
    def test_with_week_counter(self):
        self._load_simple()
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="share_photo").put()
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="share_photo",
                    when=(datetime.now() - timedelta(hours=25))).put()
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="share_photo",
                    when=(datetime.now() - timedelta(days=3))).put()
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="share_photo",
                    when=(datetime.now() - timedelta(days=6))).put()
        # outside
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="share_photo",
                    when=(datetime.now() - timedelta(days=10))).put()

        profile_state = self.app_access.compile_profile_state(
                user_id="free_u")
        self.assertEquals(profile_state["profile"], "free")
        self.assertEquals(profile_state["default"], "deny")
        self.assertEquals(len(profile_state["states"]), 3)
        self.assertEquals(profile_state["states"]["share_photo"][0]["left"], 9)
        self.assertEquals(profile_state["states"]["share_photo"][0]["limit_to"], 10)
        self.assertEquals(profile_state["states"]["share_photo"][1]["left"], 16)
        self.assertEquals(profile_state["states"]["share_photo"][1]["limit_to"], 20)
Exemplo n.º 3
0
    def test_ensure_order(self):
        for x in xrange(10):
            LogEntry.make(self._default_access, None, None,
                action="act_{}".format(x)).put()

        req = self.get()
        results = req.json["result"]
        self.assertEquals(len(results), 10)
        self.assertEquals([x["action"] for x in results],
            ["act_{}".format(x) for x in xrange(9, -1, -1)])
Exemplo n.º 4
0
    def test_only_mine(self):
        for x in xrange(5):
            LogEntry.make(self._default_access, None, None,
                action="act_{}".format(x)).put()

        for x in xrange(5):
            LogEntry.make(Key(LogEntry, 1), None, None,
                action="act_{}".format(x)).put()

        req = self.get()
        results = req.json["result"]
        self.assertEquals(len(results), 5)
        self.assertEquals([x["action"] for x in results],
            ["act_{}".format(x) for x in xrange(4, -1, -1)])
Exemplo n.º 5
0
    def test_with_outer_user_counter(self):
        self._load_simple()
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="upload_photo").put()
        # none user
        LogEntry.make(self.app_access.key, "other", None,
                    action="upload_photo").put()

        profile_state = self.app_access.compile_profile_state(user_id="free_u")
        self.assertEquals(profile_state["profile"], "free")
        self.assertEquals(profile_state["default"], "deny")
        self.assertEquals(len(profile_state["states"]), 3)
        self.assertEquals(profile_state["states"]["upload_photo"][0]["left"], 9)
        self.assertEquals(profile_state["states"]["upload_photo"][0]["limit_to"], 10)
Exemplo n.º 6
0
    def test_with_yesterday_counter(self):
        self._load_simple()
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="upload_photo").put()
        # yesterday
        LogEntry.make(self.app_access.key, "free_u", None,
                    action="upload_photo",
                    when=datetime.now() - timedelta(hours=25)).put()

        profile_state = self.app_access.compile_profile_state(user_id="free_u")
        self.assertEquals(profile_state["profile"], "free")
        self.assertEquals(profile_state["default"], "deny")
        self.assertEquals(len(profile_state["states"]), 3)
        self.assertEquals(profile_state["states"]["upload_photo"][0]["left"], 9)
        self.assertEquals(profile_state["states"]["upload_photo"][0]["limit_to"], 10)
Exemplo n.º 7
0
    def test_with_endless_counter(self):
        self._load_simple()
        LogEntry.make(self.app_access.key, "prem", None,
                    action="quota").put()

        for x in xrange(50):
            LogEntry.make(self.app_access.key, "prem", None,
                    action="quota",
                    when=(datetime.now() - timedelta(days=x ** 2))).put()

        profile_state = self.app_access.compile_profile_state(
                user_id="prem")
        self.assertEquals(profile_state["profile"], "premium")
        self.assertEquals(profile_state["default"], "allow")
        self.assertEquals(len(profile_state["states"]), 2)
        self.assertEquals(profile_state["states"]["quota"][0]["left"], 949)
        self.assertEquals(profile_state["states"]["quota"][0]["total_max"], 1000)
Exemplo n.º 8
0
    def post(self):
        device_id = self.request.POST.get("device_id")
        user_id = self.request.POST.get("user_id")
        if not device_id and not user_id:
            webapp2.abort(400, "either device_id or user_id must be provided")

        entries = json.loads(self.request.POST.get("entries"))
        app_key = self.app_access.key

        if isinstance(entries, dict):
            entries = [entries]

        keys = ndb.put_multi([LogEntry.make(app_key, user_id, device_id, **x) for x in entries])
        self.response.status = 201
        self._post_add(keys, None)
        return {"entries": len(keys)}
Exemplo n.º 9
0
 def did(self, user, action, change, **kwargs):
     LogEntry.make(self.app_access.key, user.user_id, user.device_id,
         action=action, quantity=change, **kwargs).put()