Ejemplo n.º 1
0
    def test_places_nearby(self):
        with write() as session:
            session.add(PlaceCategory(name="test"))
            session.flush()
            session.add(
                Place(name="test",
                      place_category_id=1,
                      google_place_id="test",
                      coordinates=make_point(LOCATION2["lat"],
                                             LOCATION2["lng"])))
            session.flush()
            session.add(PlaceActivity(place_id=1, activity_id=1))
        self.start()

        # should return the place
        res = get("/app/activity/places",
                  dict(lat=LOCATION["lat"], lng=LOCATION["lng"], radius=200),
                  self.token)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()["results"]
        self.assertEqual(len(data), 1)
        data = data[0]
        self.assertEqual(data["name"], "test")
        self.assertEqual(data["id"], 1)

        # too far
        res = get("/app/activity/places",
                  dict(lat=LOCATION["lat"], lng=LOCATION["lng"], radius=100),
                  self.token)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()["results"]
        self.assertEqual(len(data), 0)
Ejemplo n.º 2
0
    def test_pagination(self):
        for i in range(25):
            post("/app/chat/messages",
                 dict(recipient_user_id=self.user_id_2, data=dict(text="test_{}".format(i))), self.token)

        res = get('/app/chat/messages', dict(thread_id=1), self.token_2)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()
        messages = data.get("messages")
        cursor = data.get("cursor")
        self.assertEqual(len(messages), 20)
        self.assertIsNotNone(cursor)

        res = get("/app/chat/messages",
                  dict(thread_id=1, cursor=cursor), self.token_2)
        data = res.get_json()
        messages_2 = data.get("messages")
        cursor = data.get("cursor")
        self.assertEqual(len(messages_2), 5)
        self.assertIsNotNone(cursor)
        messages.extend(messages_2)
        texts = set(x["text"] for x in messages)
        self.assertSetEqual(texts, set("test_{}".format(i) for i in range(25)))

        res = get("/app/chat/messages",
                  dict(thread_id=1, cursor=cursor), self.token_2)
        data = res.get_json()
        self.assertFalse(data.get("messages"))
        self.assertEqual(cursor, data.get("cursor"))
Ejemplo n.º 3
0
    def test_accept_and_get(self):
        self.start()
        res = get("/app/meetups", token=self.token_2)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()["results"]
        self.assertEqual(len(data), 1)

        res = get("/app/meetups", token=self.token)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()["results"]
        self.assertEqual(len(data), 1)
        meetup_data = data[0]
        self.assertEqual(meetup_data["partner_user_id"], 2)

        res = get("/app/meetups/1", token=self.token)
        self.assertEqual(res.status_code, 200)
        self.assertDictEqual(meetup_data, res.get_json())

        res = get("/app/meetups/1/status", token=self.token)
        data = res.get_json()
        self.assertFalse(data["cancelled"])
        self.assertFalse(data["concluded"])
        self.assertFalse(data["arrived"])
        self.assertDictEqual(data["location"], LOCATION)

        res = get("/app/meetups/1/partner/status", token=self.token)
        data = res.get_json()
        self.assertFalse(data["cancelled"])
        self.assertFalse(data["concluded"])
        self.assertFalse(data["arrived"])
        self.assertDictEqual(data["location"], LOCATION2)
Ejemplo n.º 4
0
    def test_rate(self):
        self.start()

        # try rating without arriving
        res = post("/app/meetups/1/partner/rating", dict(rating_id=1),
                   self.token)
        self.assertEqual(res.status_code, 400)

        self.arrive(1)
        res = post("/app/meetups/1/partner/rating", dict(rating_id=1),
                   self.token)
        self.assertEqual(res.status_code, 200)
        self.assertTrue(res.get_json()["success"])

        res = get("/app/meetups/1", token=self.token)
        self.assertTrue(res.get_json()["concluded"])
        res = get("/app/meetups/1", token=self.token_2)
        self.assertFalse(res.get_json()["concluded"])

        with read() as session:
            rating = session.query(MeetupUserRating).first()
            self.assertIsNotNone(rating)
            self.assertEqual(rating.user_id, self.user_id_2)
            self.assertEqual(rating.rating_id, 1)
            self.assertEqual(rating.meetup_id, 1)
Ejemplo n.º 5
0
 def test_get_config_with_invalid_entry_response(self):
     # Ensures invalid id means 404 error
     user_id = '889'
     response = requests.get(BASE_URL + '/config/' + user_id + '/all')
     res = response.json()
     self.assertEqual(response.status_code, 404)
     self.assertEqual(res['message'], 'Invalid Id')
Ejemplo n.º 6
0
 def test_alone(self):
     self.start(1, 1)
     res = get("/app/activity/users", params=dict(
         lat=LOCATION["lat"], lng=LOCATION["lng"], radius=200, activity_id=1), token=self.token)
     self.assertEqual(res.status_code, 200)
     data = res.get_json()
     self.assertFalse(data)
Ejemplo n.º 7
0
    def test_send_text(self):
        res = post("/app/chat/messages",
                   dict(recipient_user_id=self.user_id_2, data=dict(text="test")), self.token)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()
        self.assertDictEqual(data, dict(
            thread_id=1, text="test", id=1, location=None, place_id=None, sender_user_id=1))

        # check created in db
        with read() as session:
            thread = session.query(Thread).all()
            self.assertEqual(len(thread), 1)
            thread = thread[0]
            self.assertEqual(thread.creator_user_id, self.user_id)
            self.assertEqual(thread.recipient_user_id, self.user_id_2)
            messages = session.query(Message).all()
            self.assertEqual(len(messages), 1)
            message = messages[0]
            self.assertEqual(message.text, "test")
            self.assertEqual(message.sender_user_id, self.user_id)
            self.assertIsNone(message.coordinates)
            self.assertIsNone(message.place_id)

        # check other user's notifications
        notifs = get_notifications(self.user_id_2)
        self.assertEqual(len(notifs), 1)
        notif_data = notifs[0]["data"]["payload"]
        self.assertDictEqual(data, notif_data)

        res = get('/app/chat/messages', dict(thread_id=1), self.token_2)
        self.assertEqual(res.get_json().get("messages")[0], data)
Ejemplo n.º 8
0
 def test_get_config_response(self):
     # Ensures valid input means 201
     user_id = '1'
     response = requests.get(BASE_URL + '/config/' + user_id + '/all')
     res = response.json()
     self.assertEqual(response.status_code, 200)
     self.assertEqual(res['message'],
                      f"All configuration associated with user {user_id}")
Ejemplo n.º 9
0
    def test_arrive_for_place(self):
        self.start(True)
        self.arrive(1)

        res = get("/app/meetups/1/status", token=self.token)
        data = res.get_json()
        self.assertTrue(data["arrived"])
        self.assertDictEqual(data["location"], PLACE_LOCATION)
Ejemplo n.º 10
0
 def test_start_and_get(self):
     res = self.start()
     self.assertEqual(res.status_code, 200)
     res = get("/app/activity", token=self.token)
     self.assertEqual(res.status_code, 200)
     data = res.get_json()
     self.assertTrue(data.get("active"))
     self.assertEqual(data.get("activity_id"), 1)
     self.assertDictEqual(data.get("location"), LOCATION)
Ejemplo n.º 11
0
 def test_get_single_config_response(self):
     # Ensures valid input means 200
     user_id = '1'
     api_name = 'email-microapi'
     response = requests.get(BASE_URL + '/config/' + user_id + '/' +
                             api_name)
     res = response.json()
     self.assertEqual(response.status_code, 200)
     self.assertEqual(res['message'], f"Config for {api_name}")
Ejemplo n.º 12
0
    def test_stop_and_resume_localization(self):
        self.start()
        res = delete("/app/activity/location", token=self.token)
        self.assertEqual(res.status_code, 200)
        self.assertFalse(res.get_json().get("active"))
        res = get("/app/activity", token=self.token)
        self.assertFalse(res.get_json().get("active"))

        res = put("/app/activity/location",
                  data=dict(location=LOCATION2),
                  token=self.token)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()
        self.assertTrue(data.get("active"))
        self.assertDictEqual(data.get("location"), LOCATION2)
        data = get("/app/activity", token=self.token).get_json()
        self.assertTrue(data.get("active"))
        self.assertDictEqual(data.get("location"), LOCATION2)
Ejemplo n.º 13
0
    def test_skip(self):
        self.start()

        # try noshow without arriving
        res = post("/app/meetups/1/partner/skip", dict(rating_id=1),
                   self.token)
        self.assertEqual(res.status_code, 400)

        self.arrive(1)
        res = post("/app/meetups/1/partner/skip", dict(rating_id=1),
                   self.token)
        self.assertEqual(res.status_code, 200)
        self.assertTrue(res.get_json()["success"])

        res = get("/app/meetups/1", token=self.token)
        self.assertTrue(res.get_json()["concluded"])
        res = get("/app/meetups/1", token=self.token_2)
        self.assertFalse(res.get_json()["concluded"])
 def test_rolback_config_response(self):
     # Ensures valid input means 200
     user_id = '1'
     api_name = 'email-microapi'
     response = requests.get(BASE_URL + '/config/rollback/' + user_id +
                             '/' + api_name)
     res = response.json()
     self.assertEqual(response.status_code, 200)
     self.assertEqual(res['message'], "Config rollback Success")
Ejemplo n.º 15
0
 def test_get_single_config_with_invalid_entry_response(self):
     # Ensures invalid id means 404 error
     user_id = '889'
     api_name = 'gad'
     response = requests.get(BASE_URL + '/config/' + user_id + '/' +
                             api_name)
     print(response)
     res = response.json()
     self.assertEqual(response.status_code, 404)
     self.assertEqual(res['message'], f'Config for {api_name} not found')
 def test_rollback_config_with_invalid_entry_response(self):
     # Ensures invalid id means 404 error
     user_id = '889'
     api_name = 'gad'
     response = requests.get(BASE_URL + '/config/rollback/' + user_id +
                             '/' + api_name)
     res = response.json()
     self.assertEqual(response.status_code, 404)
     self.assertEqual(res['message'],
                      "No configuration found for {} API".format(api_name))
Ejemplo n.º 17
0
 def test_update_location(self):
     self.start()
     res = put("/app/activity/location",
               data=dict(location=LOCATION2),
               token=self.token)
     self.assertEqual(res.status_code, 200)
     data = res.get_json()
     self.assertDictEqual(data.get("location"), LOCATION2)
     data = get("/app/activity", token=self.token).get_json()
     self.assertDictEqual(data.get("location"), LOCATION2)
 def test_rolback_no_default_config_response(self):
     # Ensures no default config input means 400
     user_id = str(TEST_INSTANCE_NUMBER)
     api_name = 'email-microapi'
     response = requests.get(BASE_URL + '/config/rollback/' + user_id +
                             '/' + api_name)
     res = response.json()
     self.assertEqual(response.status_code, 400)
     self.assertEqual(res['message'],
                      "No previous or default config to rollback")
Ejemplo n.º 19
0
 def test_activity_list(self):
     res = get("/app/activities", token=self.token)
     self.assertEqual(res.status_code, 200)
     self.assertListEqual(res.get_json(), [
         dict(
             id=1,
             name="test",
             icon_url="https://static.magellan-app.io/activities/test.svg"),
         dict(
             id=2,
             name="test2",
             icon_url="https://static.magellan-app.io/activities/test2.svg")
     ])
Ejemplo n.º 20
0
    def test_place_interests(self):
        with write() as session:
            session.add(PlaceCategory(name="test"))
            session.flush()
            session.add(
                Place(name="test", google_place_id="test", place_category_id=1))
        self.start(1, 1)
        self.start(2, 1)

        # notify interest
        res = post("/app/activity/places/1/interests", dict(), self.token)
        self.assertEqual(res.status_code, 200)
        self.assertTrue(res.get_json()["success"])

        # self should not return results
        res = get("/app/activity/places/1/interests", dict(), self.token)
        self.assertEqual(res.status_code, 200)
        self.assertEqual(len(res.get_json()["results"]), 0)

        # for other should return 1 result
        res = get("/app/activity/places/1/interests", dict(), self.token_2)
        self.assertEqual(res.status_code, 200)
        results = res.get_json()["results"]
        self.assertEqual(len(results), 1)

        # results should be the user status
        status = get("/app/activity/users/1", dict(), self.token_2).get_json()
        self.assertDictEqual(results[0], status)

        # remove interest
        res = delete("/app/activity/places/1/interests", dict(), self.token)
        self.assertEqual(res.status_code, 200)
        self.assertTrue(res.get_json()["success"])

        # should no longer appear for other
        res = get("/app/activity/places/1/interests", dict(), self.token_2)
        self.assertEqual(res.status_code, 200)
        self.assertEqual(len(res.get_json()["results"]), 0)
Ejemplo n.º 21
0
    def test_arrive(self):
        self.start()
        # first test updating location to same location does not trigger arrival
        res = put("/app/meetups/1/location", dict(location=LOCATION),
                  self.token)
        self.assertEqual(res.status_code, 200)
        self.assertTrue(res.get_json()["success"])

        res = get("/app/meetups/1/status", token=self.token)
        data = res.get_json()
        self.assertFalse(data["arrived"])

        self.arrive(1)

        res = get("/app/meetups/1/status", token=self.token)
        data = res.get_json()
        self.assertTrue(data["arrived"])
        self.assertDictEqual(data["location"], PLACE_LOCATION)

        res = get("/app/meetups/1/partner/status", token=self.token_2)
        data = res.get_json()
        self.assertTrue(data["arrived"])
        self.assertDictEqual(data["location"], PLACE_LOCATION)

        # check notifications
        notifs_1 = get_notifications(1)
        self.assertEqual(len(notifs_1), 2)
        notif_1 = notifs_1[1]["data"]
        self.assertEqual(notif_1["notification_type"], "SELF_IS_CLOSE")
        self.assertEqual(notif_1["payload"]["meetup_id"], 1)

        notifs_2 = get_notifications(2)
        self.assertEqual(len(notifs_2), 2)
        notif_2 = notifs_2[1]["data"]
        self.assertEqual(notif_2["notification_type"], "PARTNER_IS_CLOSE")
        self.assertEqual(notif_2["payload"]["meetup_id"], 1)
Ejemplo n.º 22
0
 def test_same_activity(self):
     self.start(1, 1)
     self.start(2, 1)
     res = get("/app/activity/users", params=dict(
         lat=LOCATION["lat"], lng=LOCATION["lng"], radius=200, activity_id=1), token=self.token)
     self.assertEqual(res.status_code, 200)
     data = res.get_json()
     self.assertEqual(len(data), 1)
     status = data[0]
     self.assertDictContainsSubset(dict(
         user_id=2,
         location=dict(lat=LOCATION2["lat"], lng=LOCATION2["lng"]),
         active=True
     ), status)
     self.assertGreater(status.get("time_left_s"), 2300)
     self.assertIsNotNone(status.get("timer_start"))
     self.assertIsNotNone(status.get("profile_thumbnail_url"))
Ejemplo n.º 23
0
    def test_cancel(self):
        self.start()
        res = post("/app/meetups/1/cancel", token=self.token)
        self.assertEqual(res.status_code, 200)
        self.assertTrue(res.get_json()["success"])

        # check user was notified
        notifications = get_notifications(2)
        self.assertEqual(len(notifications), 2)  # first is message
        data = notifications[1]["data"]
        self.assertEqual(data["notification_type"], "MEETUP_CANCEL")
        self.assertEqual(data["payload"]["meetup_id"], 1)

        # check meetup is over
        res = get("/app/meetups/1", token=self.token)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()
        self.assertTrue(data["cancelled"])
        self.assertTrue(data["concluded"])
Ejemplo n.º 24
0
    def test_wrong_activity(self):
        with write() as session:
            session.add(PlaceCategory(name="test"))
            session.flush()
            session.add(
                Place(name="test",
                      place_category_id=1,
                      google_place_id="test",
                      coordinates=make_point(LOCATION2["lat"],
                                             LOCATION2["lng"])))
            session.flush()
            session.add(PlaceActivity(place_id=1, activity_id=1))
        self.start(2)

        res = get("/app/activity/places",
                  dict(lat=LOCATION["lat"], lng=LOCATION["lng"], radius=200),
                  self.token)
        self.assertEqual(res.status_code, 200)
        data = res.get_json()["results"]
        self.assertEqual(len(data), 0)
Ejemplo n.º 25
0
 def test_block_then_query(self):
     post("/app/profiles/2/block", token=self.token)
     res = get("/app/profiles/1", token=self.token_2)
     self.assertEqual(res.status_code, 403)
     error_code = res.get_json()["error_code"]
     self.assertEqual(error_code, "BLOCKED")
Ejemplo n.º 26
0
 def test_inactive(self):
     res = get("/app/activity", token=self.token)
     self.assertEqual(res.status_code, 200)
     data = res.get_json()
     self.assertFalse(data.get("active"))
Ejemplo n.º 27
0
 def get_search_results(self):
     res = get("/app/activity/users", params=dict(
         lat=LOCATION["lat"], lng=LOCATION["lng"], radius=200, activity_id=1), token=self.token)
     return res.get_json()
Ejemplo n.º 28
0
 def test_get_other_profile(self):
     res = get("/app/profiles/2", token=self.token)
     self.assertEqual(res.status_code, 200)
     data = res.get_json()
     self.assertEqual(data.get("name"), NAME_2)
     self.assertEqual(data.get("gender_id"), GENDER_ID_2)
Ejemplo n.º 29
0
 def test_get_after_update(self):
     data = dict(name=NAME, status=STATUS,
                 interests=INTERESTS, age=AGE, gender_id=GENDER_ID, filters=dict(gender_filter=[1]))
     res = put("/app/profiles", data=data, token=self.token).get_json()
     res2 = get("/app/profiles", token=self.token).get_json()
     self.assertDictEqual(res, res2)
Ejemplo n.º 30
0
 def test_interests(self):
     res = get("/app/interests", token=self.token)
     self.assertEqual(res.status_code, 200)
     data = res.get_json()
     self.assertEqual(len(data), 2)