Exemplo n.º 1
0
    def init_app_basics(self, init_topics=False):
        from models import User, Topic
        from constants import API_AUTH, TOPIC

        self.user1 = User.Create(email="*****@*****.**",
                                 phone="254729465000")
        self.user2 = User.Create(email="*****@*****.**",
                                 phone="254729465999")
        ndb.put_multi([self.user1, self.user2])

        if init_topics:
            # 4 topics, politics is a poll
            self.topics = []
            ndb_put = []
            for topic_name in ["health", "matatus", "politics", "rain"]:
                t = Topic.Create()
                t.Update(name=topic_name, status=TOPIC.LIVE)
                if topic_name == "politics":
                    t.Update(poll=True, poll_choices=["Hillary", "Donald"])
                ndb_put.append(t)
                self.topics.append(t)
            ndb.put_multi(ndb_put)

        # Setup API authentication params for use in API calls
        self.api_auth_params = {'auth': API_AUTH}
Exemplo n.º 2
0
 def testLookupDicts(self):
     user1 = User.Create(email="*****@*****.**", name="Person 1")
     user1.put()
     user2 = User.Create(email="*****@*****.**", name="Person 2")
     user2.put()
     lookup = tools.lookupDict([user1, user2], keyprop="key_string")
     u1_key = user1.key.urlsafe()
     u2_key = user2.key.urlsafe()
     self.assertTrue(u1_key in lookup)
     self.assertTrue(u2_key in lookup)
     self.assertEqual(lookup.get(u1_key).name, "Person 1")
Exemplo n.º 3
0
    def setUp(self):
        self.set_application(tst_app)
        self.setup_testbed()
        self.init_datastore_stub()
        self.init_memcache_stub()
        self.init_taskqueue_stub()
        self.init_app_identity_stub()
        self.init_mail_stub()
        self.register_search_api_stub()
        self.init_urlfetch_stub()
        self.init_blobstore_stub()
        self.init_modules_stub()
        cloudstorage.set_default_retry_params(None)

        # Create enterprise, sensortype and sensor
        self.e = Enterprise.Create()
        self.e.Update(name="Test Ent", timezone="Africa/Nairobi")
        self.e.put()

        self.owner = User.Create(self.e, phone=OWNER_NUM, notify=False)
        self.owner.Update(name=OWNER_NAME, currency="KES")
        self.owner.put()

        self.spedometer = SensorType.Create(self.e)
        schema = {'speed': {'unit': 'kph'}, 'narrative': {'type': 'string'}}
        self.spedometer.Update(name="Spedometer", schema=json.dumps(schema))
        self.spedometer.put()

        self.vehicle_1 = Sensor.Create(self.e, TEST_SENSOR_ID,
                                       self.spedometer.key().id())
        self.vehicle_1.Update(sensortype_id=self.spedometer.key().id(),
                              name="Vehicle Sensor 1")
        self.vehicle_1.put()
    def testUserGoogleSimpleAccountLinking(self):
        import jwt
        user = User.Create(email="*****@*****.**", g_id=USER_GOOGLE_ID)
        user.put()

        creation = int(tools.unixtime(ms=False))
        payload = {
            'iss': 'https://accounts.google.com',
            'aud': secrets.GOOGLE_CLIENT_ID,
            'sub': USER_GOOGLE_ID,
            'email': "*****@*****.**",
            'locale': "en_US",
            "iat": creation,
            "exp": creation + 60 * 60
        }
        params = {
            'grant_type':
            'urn:ietf:params:oauth:grant-type:jwt-bearer',
            'intent':
            'get',
            'assertion':
            jwt.encode(payload,
                       secrets.GOOGLE_CLIENT_SECRET,
                       algorithm='HS256')
        }
        response = self.post_json("/api/auth/google/token", params)
        token_type = response.get('token_type')
        self.assertEqual(token_type, 'bearer')
Exemplo n.º 5
0
    def testCloneEntity(self):
        user = User.Create(email="*****@*****.**", name="John Doe")
        user.put()

        user_cloned = tools.clone_entity(user)
        self.assertEqual(user.name, user_cloned.name)
        self.assertEqual(user.email, user_cloned.email)
 def testUserAccessEncodeDecode(self):
     user = User.Create(email="*****@*****.**")
     user.put()
     access_token = user.aes_access_token(client_id="test")
     user_id = User.user_id_from_aes_access_token(access_token)
     self.assertIsNotNone(access_token)
     self.assertEqual(user_id, user.key.id())
Exemplo n.º 7
0
    def setUp(self):
        self.set_application(tst_app)
        self.setup_testbed()
        self.init_datastore_stub()
        self.init_memcache_stub()
        self.init_taskqueue_stub()
        self.register_search_api_stub()
        self.init_modules_stub()

        # Create enterprise, sensortype and sensor
        self.e = Enterprise.Create()
        self.e.Update(name="Test Ent", alias=E_ALIAS.upper())
        self.e.put()

        self.u = User.Create(self.e, phone=TEST_NUM, email=TEST_EMAIL)
        self.u.Update(password=PW, level=USER.ACCOUNT_ADMIN)
        self.u.put()

        self.st = SensorType.Create(self.e)

        self.st.Update(alias="geo",
                       schema=json.dumps({'location': {
                           'type': 'location'
                       }}))
        self.st.put()
Exemplo n.º 8
0
    def setUp(self):
        self.set_application(tst_app)
        self.setup_testbed()
        self.init_standard_stubs()

        u = User.Create(email="*****@*****.**")
        u.put()
        self.u = u
Exemplo n.º 9
0
    def setUp(self):
        self.set_application(tst_app)
        self.setup_testbed()
        self.init_datastore_stub()
        self.init_memcache_stub()
        self.init_taskqueue_stub()
        self.init_mail_stub()
        self.register_search_api_stub()
        self.init_urlfetch_stub()
        self.init_modules_stub()

        # Create enterprise, sensortype and sensor
        self.e = Enterprise.Create()
        self.e.Update(name="Test Ent", timezone="Africa/Nairobi")
        self.e.put()

        self.owner = User.Create(self.e, phone=OWNER_NUM, notify=False)
        self.owner.Update(name=OWNER_NAME, currency="KES")
        self.owner.put()

        self.spedometer = SensorType.Create(self.e)
        schema = {
            'speed': {
                'unit': 'kph'
            },
            'bearing': {
                'unit': 'deg'
            },
            'location': {
                'unit': 'degrees'
            },
            'hard_braking': {
                'unit': 'boolean'
            }
        }
        self.spedometer.Update(name="Geo Sensor", schema=json.dumps(schema))
        self.spedometer.put()

        self.vehicle_1 = Sensor.Create(self.e, TEST_SENSOR_ID,
                                       self.spedometer.key().id())
        self.vehicle_1.Update(sensortype_id=self.spedometer.key().id(),
                              name="Vehicle Sensor 1",
                              contacts={"owner": self.owner.key().id()})
        self.vehicle_1.put()

        # Create alarm
        self.speeding_alarm = Rule.Create(self.e)
        self.speeding_alarm.Update(name="Speeding",
                                   sensortype_id=self.spedometer.key().id(),
                                   column="speed",
                                   trigger=RULE.CEILING,
                                   value2=80.0,
                                   alert_contacts=["owner"],
                                   alert_message=SPEEDING_ALERT_MESSAGE,
                                   duration=0)
        self.speeding_alarm.put()
Exemplo n.º 10
0
    def setUp(self):
        self.set_application(tst_app)
        self.setup_testbed()
        self.init_datastore_stub()
        self.init_memcache_stub()
        self.init_taskqueue_stub()
        self.init_mail_stub()
        self.register_search_api_stub()

        u = User.Create(email="*****@*****.**")
        u.put()
        self.u = u
Exemplo n.º 11
0
    def init_app_basics(self, n_users=1):
        from models import User

        self.users = []

        for x in range(n_users):
            email = "*****@*****.**" % (tools.GenPasswd())
            user = User.Create(email=email)
            user.setPass("pw")
            user.put()
            self.users.append(user)

        # Setup API authentication params for use in API calls
        if n_users:
            encoded = base64.b64encode("%s:%s" %
                                       (self.users[0].key.id(), "pw"))
            self.api_headers = {'authorization': "Basic %s" % encoded}
Exemplo n.º 12
0
    def setUp(self):
        self.set_application(tst_app)
        self.setup_testbed()
        self.init_datastore_stub()
        self.init_memcache_stub()
        self.init_taskqueue_stub()
        self.init_mail_stub()
        self.register_search_api_stub()

        u = User.Create(email="*****@*****.**")
        u.put()

        self.project = Project.Create(u)
        self.project.Update(title="Build App",
                            subhead="Subhead",
                            urls=["http://www.example.com"])
        self.project.put()
Exemplo n.º 13
0
 def google_login(self):
     from constants import ADMIN_EMAIL
     token = self.request.get('token')
     ok, _email, name = self.validate_google_id_token(token)
     u = None
     if ok:
         u = User.GetByEmail(_email)
         if not u:
             u = User.Create(email=_email, name=name)
             u.put()
         if u:
             self.update_session_user(u)
             self.login_dt = datetime.now()
             self.success = True
             self.message = "Signed in"
     else:
         self.message = "Failed to validate"
     self.set_response({'user': u.json() if u else None})
Exemplo n.º 14
0
    def setUp(self):
        self.set_application(tst_app)
        self.setup_testbed()
        self.init_datastore_stub()
        self.init_memcache_stub()
        self.init_taskqueue_stub()
        self.init_mail_stub()
        self.register_search_api_stub()
        self.init_urlfetch_stub()
        self.init_modules_stub()

        # Create enterprise, sensortype and sensor
        self.e = Enterprise.Create()
        self.e.Update(name="Test Ent", timezone="Africa/Nairobi")
        self.e.put()

        self.owner = User.Create(self.e, phone=OWNER_NUM, notify=False)
        self.owner.Update(name=OWNER_NAME, currency="KES")
        self.owner.put()

        self.tracker = SensorType.Create(self.e)
        schema = {
            'bearing': {
                'unit': 'deg'
            },
            'location': {
                'unit': 'deg',
                'label': "Location",
                'role': [COLUMN.LOCATION],
                'type': 'latlng'
            }
        }
        self.tracker.Update(name="Geo Sensor", schema=json.dumps(schema))
        self.tracker.put()

        self.vehicle_1 = Sensor.Create(self.e, TEST_SENSOR_ID,
                                       self.tracker.key().id())
        self.vehicle_1.Update(sensortype_id=self.tracker.key().id(),
                              name="Vehicle Sensor 1",
                              contacts={"owner": self.owner.key().id()})
        self.vehicle_1.put()
Exemplo n.º 15
0
    def post(self):
        self.template_values['page_name'] = 'signin'
        signup_data = dict(self.request.POST)
        # {u'_token': u'', u'username': u'jacobcui', u'password_confirmation': u'qwqq', u'g-recaptcha-response': u'', u'password': u'qwqq'}
        if not self.verify_recaptcha():
            self.template_values['alerts'].append({
                'class':
                views.ALERT_CLASS_WARNING,
                'content':
                'Please check reCAPTCHA input.'
            })
            human_verified = False
        else:
            human_verified = True

        for field in ['username', 'password', 'password_confirmation']:
            value = signup_data.get(field, '').strip()

            if not value:
                self.template_values['alerts'].append({
                    'class':
                    views.ALERT_CLASS_WARNING,
                    'content':
                    ("{} can't be empty.".format(field.capitalize().replace(
                        '_', ' ')))
                })

        if len(signup_data.get('password', '')) < 4:
            self.template_values['alerts'].append({
                'class':
                views.ALERT_CLASS_WARNING,
                'content':
                'Please ensure password is longer than 4 characters.'
            })

        if (signup_data.get('password', '') != signup_data.get(
                'password_confirmation', '')):
            self.template_values['alerts'].append({
                'class':
                views.ALERT_CLASS_WARNING,
                'content':
                'Please ensure passwords are the same.'
            })

        if not User.validate_username(signup_data.get('username', '')):
            self.template_values['alerts'].append({
                'class':
                views.ALERT_CLASS_WARNING,
                'content':
                'Please input valid username. Letters, Numbers, -, _ are allowed.'
            })

        if human_verified and User.getByUsername(
                signup_data.get('username', '')):
            self.template_values['alerts'].append({
                'class':
                views.ALERT_CLASS_WARNING,
                'content':
                'User with username {} has been registered.'.format(
                    signup_data.get('username'))
            })

        if self.template_values['alerts']:
            self.template_values.update(signup_data)
            self.send_response('signup.html')
            return

        username = signup_data.get('username').strip()

        # Create user
        self.user = User.Create(username=username,
                                password=signup_data.get('password'))

        self.init_new_session(username)
        self.redirect('/')