Example #1
0
    def test_lookup(self):
        ''' Test 5: /lookup endpoint'''

        # No friend/user name provided
        res = go(self.app.get,'/lookup', query_string={'user_email': '', 'friend_email': ''})
        self.assertEqual(res().status_code , 400)

        # No such user
        res = go(self.app.get,'/lookup', query_string={'user_email': self.user, 'friend_email': 'n/a'})
        self.server.reply(cursor={'id': 0, 'firstBatch': []})
        self.assertEqual(res().status_code , 400)

        # Requested user not in friend list
        res = go(self.app.get,'/lookup', query_string={'user_email': self.email, 'friend_email': 'not_a_friend'})
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': self.email, 'friends_list': ['a_friend']}]})
        self.assertEqual(res().status_code , 400)

        # Look up friend who is not sharing location
        res = go(self.app.get,'/lookup', query_string={'user_email': self.email, 'friend_email': 'dont_look_at_me_rn'})
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': self.email, 'friends_list': ['dont_look_at_me_rn']}]})
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': 'dont_look_at_me_rn', 'location_sharing': False}]})
        self.assertEqual(res().status_code , 401)

        # Look up friend's location successfully
        res = go(self.app.get, '/lookup', query_string={'user_email': self.email, 'friend_email': 'look_at_me'})
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': self.email, 'friends_list': ['look_at_me']}]})
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': 'look_at_me', 'location_sharing': True, 'location': {'x': 4, 'y': 4}, 'indoor_location': {'building': 'MooreHall', 'floor': '1', 'x': 16, 'y': 82, 'room': 1009}, 'last_seen_indoor': 0.0}]})
        outdoor = {'x': 4, 'y': 4}
        indoor = {'building': 'MooreHall', 'floor': '1', 'x': 16, 'y': 82, 'room': 1009}
        response = res()
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.get_json()['location']['outdoor_location'], outdoor)
        self.assertEqual(response.get_json()['location']['indoor_location'], indoor)
        self.assertTrue(response.get_json()['minutes_ago_indoor'])
Example #2
0
    def test_uninstrumented_clients_no_longer_traces(self):
        tracer = MockTracer()
        opentracing.tracer = tracer
        config.tracer = tracer

        instrument(tracer)
        client = pymongo.MongoClient(self.server.uri)
        fut = go(client.db.collection.insert_many,
                 [dict(one=123), dict(two=234)])
        self.server.receives().ok()
        fut()

        spans = tracer.finished_spans()
        assert len(spans) == 1
        assert spans[0].operation_name == 'insert'

        uninstrument()
        tracer.reset()

        client = pymongo.MongoClient(self.server.uri)
        fut = go(client.db.collection.insert_many,
                 [dict(one=123), dict(two=234)])
        self.server.receives().ok()
        fut()

        assert not tracer.finished_spans()
Example #3
0
 def test_getBuildingMetadata(self):
     '''Test 8: /getBuildingMetadata endpoint'''
     
     # No building name provided
     res = go(self.app.get, '/getBuildingMetadata', query_string={'building_name': ''})
     self.assertEqual(res().status_code, 400)
     
     # Building not in database
     res = go(self.app.get, '/getBuildingMetadata', query_string={'building_name': self.building})
     self.server.reply(cursor={'id': 0, 'firstBatch': []})
     self.assertEqual(res().status_code, 401)
             
     # Get number of floor plans in db for building
     res = go(self.app.get, '/getBuildingMetadata', query_string={'building_name': self.building})
     self.server.reply(cursor={'id': 0, 
                               'firstBatch': [{'building_name': self.building,
                                               'location': {'longitude': 0.0, 'latitude': 0.0}}]})
     self.server.reply(cursor={'id': 0, 
                               'firstBatch': [{'building_name': self.building,
                                               'location': {'longitude': 0.0, 'latitude': 0.0},
                                               'floor': '1', 
                                               'vertices': [(0,0), (100,0), (0,100), (100,100)]}]
                              }
                      )
     self.assertEqual(res().status_code, 200)
     self.assertEqual(res().get_json()['number_of_floors'], 1)
     self.assertEqual(res().get_json()['location'], {'longitude': 0.0, 'latitude': 0.0})
Example #4
0
    def test_invalid_shop_id(self):
        future = go(self.app.get, '/shops/invalidid', headers=self.auth_header)
        self.assertEqual(future().status_code, 400)

        future = go(self.app.put, '/shops/invalidid', headers=self.auth_header)
        self.assertEqual(future().status_code, 400)

        future = go(self.app.delete, '/shops/invalidid', headers=self.auth_header)
        self.assertEqual(future().status_code, 400)
 def test(self):
     self.setup_server(upgrade)
     start = time.time()
     servers_used = set()
     while len(servers_used) < 2:
         go(upgrade.function, self.client)
         request = self.q.get(timeout=1)
         servers_used.add(request.server)
         request.assert_matches(upgrade.old if request.server is self.
                                mongos_old else upgrade.new)
         if time.time() > start + 10:
             self.fail('never used both mongoses')
Example #6
0
    def test_get_shop_shops(self):
        future = go(self.app.get, '/shops', headers=self.auth_header)
        request = self.server.receives()
        request.ok(cursor={'id': 0, 'firstBatch': []})
        request = self.server.receives()
        request.ok(cursor={'id': 0, 'firstBatch': []})
        request = self.server.receives()
        request.ok(cursor={'id': 0, 'firstBatch': []})
        self.assertEqual(future().status_code, 200)

        future = go(self.app.get, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=self.auth_header)
        request = self.server.receives()
        request.ok(cursor={'id': 0, 'firstBatch': [SHOP_RESULT]})
        self.assertEqual(future().status_code,200)
Example #7
0
    def test_notoken(self):
        future = go(self.app.get, '/shops/5b3a7297d2e5ce5bbd3d0121')
        self.assertEqual(future().status_code, 401)

        future = go(self.app.put, '/shops/5b3a7297d2e5ce5bbd3d0121')
        self.assertEqual(future().status_code, 401)

        future = go(self.app.delete, '/shops/5b3a7297d2e5ce5bbd3d0121')
        self.assertEqual(future().status_code, 401)

        future = go(self.app.get, '/shops')
        self.assertEqual(future().status_code, 401)

        future = go(self.app.post, '/shops')
        self.assertEqual(future().status_code, 401)
Example #8
0
    def test_registerLocation(self):
        ''' Test 4: /registerLocation endpoint'''

        # Location update successful
        res = go(self.app.post, '/registerLocation', data=json.dumps({'user_email': self.email, 'location': {'latitude': '0.000','longitude': '0.000'}}))
        self.server.reply({'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True})
        self.assertEqual(res().status_code, 200)
        
        # Missing user email
        res = go(self.app.post, '/registerLocation', data=json.dumps({'user_email': '', 'location': {'latitude': '0.000','longitude': '0.000'}}))
        self.assertEqual(res().status_code, 400)
        
        # Missing location
        res = go(self.app.post, '/registerLocation', data=json.dumps({'user_email': self.email}))
        self.assertEqual(res().status_code, 400)
Example #9
0
    def test_shop_notfound(self):
        future = go(self.app.get, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=self.auth_header)
        request = self.server.receives()
        request.ok(cursor={'id': 0, 'firstBatch': []})
        self.assertEqual(future().status_code, 400)

        future = go(self.app.put, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=self.auth_header, json=SHOP_REQ)
        request = self.server.receives()
        request.ok(cursor={'id': 0, 'firstBatch': []})
        self.assertEqual(future().status_code, 400)

        future = go(self.app.delete, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=self.auth_header)
        request = self.server.receives()
        request.ok(cursor={'id': 0, 'firstBatch': []})
        self.assertEqual(future().status_code, 400)
Example #10
0
    def test_delete_nonexisting_user(self):
        USER_REQ = OpMsg({
            "find": "users",
            "filter": {"login": "******"},
            "limit": 1,
            "singleBatch": True,
            "$db": "authservice",
            "$readPreference": {"mode": "primaryPreferred"}},
            namespace="authservice")
        user = {
            "_id": "5b37fff8bbf300b7ef185042",
            "login": "******",
            "password": "******",
            "role": "admin"
        }
        access_token = generate_access_token(
            user=user,
            pivate_key=app.config['PRIVATE_KEY'],
            auth_host=app.config['AUTH_HOST'],
            token_ttl=app.config['TOKEN_TTL'],
            auth_algo=app.config['AUTH_ALGO']
        )
        headers = {'Authorization': 'Bearer {}'.format(access_token['access_token'])}
        future = go(self.app.delete, '/auth/signup', headers=headers, json={
            "userID": '',
            "login": "******",
            "password": "******",
            "client_id": "midleware1",
            "client_secret": "1sfg135df1d32fsdf489d7q6sdq6s4d"
        })
        request = self.server.receives(USER_REQ)
        request.ok(cursor={'id': 0, 'firstBatch': []})

        self.assertEqual(future().status_code, 400)
Example #11
0
    def test_signup_with_invalid_email(self):
        USER_REQ = OpMsg({
            "find": "users",
            "filter": {"login": "******"},
            "limit": 1,
            "singleBatch": True,
            "$db": "authservice",
            "$readPreference": {"mode": "primaryPreferred"}},
            namespace="authservice")
        CLIENT_REQ = OpMsg({
            "find": "clients",
            "filter": {"client_id": "midleware1", "client_secret": "1sfg135df1d32fsdf489d7q6sdq6s4d"},
            "limit": 1,
            "singleBatch": True,
            "$db": "authservice",
            "$readPreference": {"mode": "primaryPreferred"}},
            namespace="authservice"
        )

        future = go(self.app.post, '/auth/signup', json={
            "userID": '',
            "login": "******",
            "password": "******",
            "client_id": "midleware1",
            "client_secret": "1sfg135df1d32fsdf489d7q6sdq6s4d"
        })
        self.assertEqual(future().status_code, 400)
Example #12
0
    def test_signup_create_existing_user(self):
        USER_REQ = OpMsg({
            "find": "users",
            "filter": {"login": "******"},
            "limit": 1,
            "singleBatch": True,
            "$db": "authservice",
            "$readPreference": {"mode": "primaryPreferred"}},
            namespace="authservice")
        CLIENT_REQ = OpMsg({
            "find": "clients",
            "filter": {"client_id": "midleware1", "client_secret": "1sfg135df1d32fsdf489d7q6sdq6s4d"},
            "limit": 1,
            "singleBatch": True,
            "$db": "authservice",
            "$readPreference": {"mode": "primaryPreferred"}},
            namespace="authservice"
        )

        future = go(self.app.post, '/auth/signup', json={
            "userID": '',
            "login": "******",
            "password": "******",
            "client_id": "midleware1",
            "client_secret": "1sfg135df1d32fsdf489d7q6sdq6s4d"
        })

        request = self.server.receives(CLIENT_REQ)
        request.ok(cursor={'id': 0, 'firstBatch': [CLIENT]})
        request = self.server.receives(USER_REQ)
        request.ok(cursor={'id': 0, 'firstBatch': [USER]})
Example #13
0
 def test_put_shop_valid(self):
     future = go(self.app.put, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=self.auth_header, json=SHOP_REQ)
     request = self.server.receives()
     request.ok(cursor={'id': 0, 'firstBatch': [SHOP_RESULT]})
     request = self.server.receives()
     request.ok({'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True})
     self.assertEqual(future().status_code, 201)
Example #14
0
    def test_getDataSource(self):
        # arrange

        future = go(self.app.get, f'/Login-Page/{username}')
        request = self.server.receives(
            Command(
                {
                    'find': 'dataSources',
                    'filter': {
                        'username': username
                    },
                    'limit': 1,
                    'singleBatch': True
                },
                flags=4,
                namespace='app'))
        request.ok(
            cursor={
                'firstBatch':
                [{
                    "username": "******",
                    "password": "******"["http://http://0.0.0.0:5000/"]
                }]
            })

        # act
        http_response = future()
Example #15
0
 def test_auto_dequeue(self):
     server = MockupDB(auto_ismaster=True)
     server.run()
     client = MongoClient(server.uri)
     future = go(client.admin.command, 'ping')
     server.autoresponds('ping')  # Should dequeue the request.
     future()
Example #16
0
    def test_update(self):
        """Ensure the /repository/update route behaves correctly."""
        # arrange
        data = {}

        keywords = []
        keyword = {}
        keyword['keyword'] = "noun"
        keyword['keyword_type'] = "n"
        keywords.append(keyword)

        sentencesObj = []
        sentenceObj = {}
        sentenceObj['badges'] = 'vip/1'
        sentenceObj['display_name'] = '黑川大輝'
        sentenceObj['username'] = '******'
        sentenceObj['user_id'] = '95272'
        sentenceObj['room_id'] = '1234'
        sentenceObj['tmi_sent_ts'] = '1234567899'
        sentenceObj['message'] = 'noun'
        sentenceObj['keywords'] = keywords
        sentencesObj.append(sentenceObj)

        data['sentencesObj'] = sentencesObj

        future = go(self.client.post,
                    '/repository/update',
                    headers=dict(Authorization='Bearer valid',
                                 LoginType='sso'),
                    data=json.dumps(data),
                    content_type='application/json'
                    )

        request = self.server.receives()
        request.ok()
        request = self.server.receives()
        request.ok()
        request = self.server.receives()
        request.ok(cursor={'id': '5c555871b73882000e44a89a',
                           'firstBatch': [{
                               '_id': '5c555871b73882000e44a89a'}]})
        request = self.server.receives()
        request.ok()
        request = self.server.receives()
        request.ok()
        request = self.server.receives()
        request.ok(cursor={'id': '5c555871b73882000e44a89a',
                           'firstBatch': [{
                               '_id': '5c555871b73882000e44a89a'}]})
        request = self.server.receives()
        request.ok()
        request = self.server.receives()
        request.ok()
        # act
        http_response = future()
        # assert
        data = json.loads(http_response.data.decode())
        self.assertEqual(http_response.status_code, 200)
        self.assertEqual("Repository update", data['message'])
        self.assertIn('success', data['status'])
Example #17
0
    def test_getFriends(self):
        '''Test 7: /getFriends endpoint'''

        # No username provided
        res = go(self.app.get, '/getFriends', query_string={'user_email': ''})
        self.assertEqual(res().status_code, 400)
        
        # User doesn't exist
        res = go(self.app.get, '/getFriends', query_string={'user_email': 'i_dont_exist'})
        self.server.reply(cursor={'id': 0, 'firstBatch': []})
        self.assertEqual(res().status_code, 400)
        
        # User exists and has friends
        res = go(self.app.get, '/getFriends', query_string={'user_email': self.email})
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': self.email, 'friends_list':['friend_1']}]})
        self.assertEqual(res().status_code, 200)
Example #18
0
    def test_getDataSource(self):
        # arrange
        id = '5a8f1e368f7936badfbb0cfa'
        future = go(self.app.get, f'/dataSource/{id}')
        request = self.server.receives(
            Command(
                {
                    'find': 'dataSources',
                    'filter': {
                        '_id': mockup_oid(id)
                    },
                    'limit': 1,
                    'singleBatch': True
                },
                flags=4,
                namespace='app'))
        request.ok(
            cursor={
                'id':
                0,
                'firstBatch': [{
                    'name': 'bla',
                    'url': 'http://google.com/rest/api'
                }]
            })

        # act
        http_response = future()

        # assert
        self.assertIn('http://google.com/rest/api',
                      http_response.get_data(as_text=True))
Example #19
0
    def test_addDataSource(self):
        # arrange
        id = '5a924d7a29a6e5484dcf68be'
        headers = [('Content-Type', 'application/json')]
        #   need to pass _id because pymongo creates one so it's impossible to match insert request without _ids
        toInsert = {'name': 'new', 'url': 'http://google.com', '_id': id}
        future = go(self.app.put,
                    '/dataSource',
                    data=dumps(toInsert),
                    headers=headers)
        request = self.server.receives(
            Command(
                {
                    'insert':
                    'dataSources',
                    'ordered':
                    True,
                    'documents': [{
                        'name': 'new',
                        'url': 'http://google.com',
                        '_id': mockup_oid(id)
                    }]
                },
                namespace='app'))
        request.ok(cursor={'inserted_id': id})

        # act
        http_response = future()

        # assert
        data = http_response.get_data(as_text=True)
        self.assertIn(id, data)
        self.assertEqual(http_response.status_code, 201)
Example #20
0
 def test_getName(self):
     '''Test 10: /getName endpoint'''
 
     # No email provided
     res = go(self.app.get, '/getName', query_string={'email': ''})
     self.assertEqual(res().status_code, 400)
     
     # No user
     res = go(self.app.get, '/getName', query_string={'email': '*****@*****.**'})
     self.server.reply(cursor={'id': 0, 'firstBatch': []})
     self.assertEqual(res().status_code, 400)
     
     # User exists
     res = go(self.app.get, '/getName', query_string={'email': self.email})
     self.server.reply(cursor={'id': 0, 'firstBatch': [{'user': self.user, 'email': self.email}]})
     self.assertEqual(res().status_code, 200)
Example #21
0
    def test_deleteDataSource_notFound(self):
        # arrange
        id = '5a8f1e368f7936badfbb0000'
        future = go(self.app.delete, f'/dataSource/{id}')
        request = self.server.receives(
            Command(
                {
                    'delete': 'dataSources',
                    'ordered': True,
                    'deletes': [{
                        'q': {
                            '_id': mockup_oid(id)
                        },
                        'limit': 1
                    }]
                },
                namespace='app'))
        request.ok({'acknowledged': True, 'n': 0})

        # act
        http_response = future()

        # assert
        self.assertIn(f'{id} not found', http_response.get_data(as_text=True))
        self.assertEqual(http_response.status_code, 404)
Example #22
0
    def test_findSentencesByDisplayname_no_message(self):
        """Ensure error is thrown if no message exist."""
        # arrange
        display_name = "testUser"
        future = go(self.client.get,
                    f'/repository/findSentencesByDisplayname/{display_name}',
                    headers=dict(Authorization='Bearer valid', LoginType='sso')
                    )

        request = self.server.receives()
        request.ok(cursor={'id': 248441332,
                           'firstBatch': [{
                               'id': 248441332,
                               'badges': None,
                               'display_name': display_name,
                               'username': display_name,
                               'room_id': [],
                               'tmi_sent_ts': [],
                               'message_ids': []}]})
        # act
        http_response = future()
        # assert
        data = json.loads(http_response.data.decode())
        self.assertEqual(http_response.status_code, 404)
        self.assertEqual('There is no message.', data['message'])
        self.assertIn('Fail', data['status'])
Example #23
0
 def test_auto_dequeue(self):
     server = MockupDB(auto_ismaster=True)
     server.run()
     client = MongoClient(server.uri)
     future = go(client.admin.command, 'ping')
     server.autoresponds('ping')  # Should dequeue the request.
     future()
Example #24
0
    def test_findDisplaynamesByKeyword_no_user(self):
        """Ensure error is thrown if no user exist."""
        # arrange
        keyword = "noun"
        future = go(self.client.get,
                    f'/repository/findDisplaynamesByKeyword/{keyword}',
                    headers=dict(Authorization='Bearer valid', LoginType='sso')
                    )

        request = self.server.receives()
        request.ok(cursor={'id': '5c555871b73882000e44a89a',
                           'firstBatch': [{
                               'id': '5c555871b73882000e44a89a',
                               'keyword': keyword,
                               'keyword_type': 'n',
                               'user_ids': [],
                               'message_ids': ['5c5556beb73882000e44a6a3']}]})

        # act
        http_response = future()
        # assert
        data = json.loads(http_response.data.decode())
        self.assertEqual(http_response.status_code, 404)
        self.assertEqual('There is no user.', data['message'])
        self.assertIn('Fail', data['status'])
Example #25
0
    def test_getDataSource(self):
        # arrange
        id = 1
        future = go(self.app.get, f'/add_icecream_id/{id}')
        request = self.server.receives(
            Command(
                {
                    'find': 'dataSources',
                    'filter': {
                        '_id': id
                    },
                    'limit': 1,
                    'singleBatch': True
                },
                flags=4,
                namespace='app'))
        request.ok(
            cursor={
                'id':
                0,
                'firstBatch': [{
                    "icecream_name": "Rassberry",
                    "icecream_flavour": "Rassberry",
                    "Icecream_type": "Bar",
                    "Icecream_price": "30/-",
                    "description": "Nice"
                }]
            })

        # act
        http_response = future()
        # assert
        self.assertIn('http://google.com/rest/api',
                      http_response.get_data(as_text=True))
Example #26
0
    def test_signin_get_users(self):
        USER_REQ = OpMsg({
            "find": "users",
            "filter": {},
            "projection": {"password": 0},
            "$db": "authservice",
            "$readPreference": {"mode": "primaryPreferred"}},
            namespace="authservice")
        user = {
            "_id": "5b37fff8bbf300b7ef185042",
            "login": "******",
            "password": "******",
            "role": "admin"
        }

        access_token = generate_access_token(
            user=user,
            pivate_key=app.config['PRIVATE_KEY'],
            auth_host=app.config['AUTH_HOST'],
            token_ttl=app.config['TOKEN_TTL'],
            auth_algo=app.config['AUTH_ALGO']
        )
        headers = {'Authorization': 'Bearer {}'.format(access_token['access_token'])}
        future = go(self.app.get, '/auth/signin', headers=headers)
        request = self.server.receives(USER_REQ, timeout=60)
        request.ok(cursor={'id': 0, 'firstBatch': [USER]})
Example #27
0
    def test_getDataSources(self):
        # arrange
        future = go(self.app.get, '/dataSources')
        request = self.server.receives(
            Command({
                'find': 'dataSources',
                'filter': {}
            },
                    flags=4,
                    namespace='app'))
        request.ok(
            cursor={
                'id':
                0,
                'firstBatch': [{
                    'name': 'Google',
                    'url': 'http://google.com/rest/api'
                }, {
                    'name': 'Rest',
                    'url': 'http://rest.com/rest/api'
                }]
            })

        # act
        http_response = future()

        # assert
        data = http_response.get_data(as_text=True)
        self.assertIn('http://google.com/rest/api', data)
        self.assertIn('http://rest.com/rest/api', data)
Example #28
0
    def test_invalid_token(self):
        headers = {'Authorization': 'Bearer invalid_token'}
        future = go(self.app.get, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=headers)
        self.assertEqual(future().status_code, 400)

        future = go(self.app.put, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=headers)
        self.assertEqual(future().status_code, 400)

        future = go(self.app.delete, '/shops/5b3a7297d2e5ce5bbd3d0121', headers=headers)
        self.assertEqual(future().status_code, 400)

        future = go(self.app.get, '/shops', headers=headers)
        self.assertEqual(future().status_code, 400)

        future = go(self.app.post, '/shops', headers=headers)
        self.assertEqual(future().status_code, 400)
 def test_get_liked_disliked_shops(self):
     future = go(self.app.get,
                 '/shops/liked',
                 headers=self.auth_header,
                 json=SHOP_REQ)
     request = self.server.receives()
     request.ok(cursor={'id': 0, 'firstBatch': [SHOP_RESULT]})
     self.assertEqual(future().status_code, 200)
     future = go(self.app.get,
                 '/shops/disliked',
                 headers=self.auth_header,
                 json=SHOP_REQ)
     request = self.server.receives()
     request.ok(cursor={'id': 0, 'firstBatch': [DISLIKER]})
     request = self.server.receives()
     request.ok(cursor={'id': 0, 'firstBatch': [SHOP_RESULT]})
     self.assertEqual(future().status_code, 200)
Example #30
0
    def test_deleteFriend(self):
        ''' Test 3: /deleteFriend endpoint'''

        # Bad arguments
        res = go(self.app.get, '/deleteFriend', query_string={'user_email': '', 'friend_email': ''})
        self.assertEqual(res().status_code, 400)

        # Friend was deleted successfully
        res = go(self.app.get, '/deleteFriend', query_string={'user_email': self.email, 'friend_email': '*****@*****.**'})
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': self.email, 'friends_list': ['*****@*****.**']}]})
        self.server.reply({'n': 1, 'ok': 1.0})
        self.assertEqual(res().status_code, 200)

        # Friend does not exist
        res = go(self.app.get, '/deleteFriend', query_string=({'user_email': self.email, 'friend_email': 'i_dont_exist'}))
        self.server.reply(cursor={'id': 0, 'firstBatch': [{'email': self.email, 'friends_list': ['i_do_exist']}]})
        self.assertEqual(res().status_code, 400)
Example #31
0
    def test_get_url_not_found(self):
        future = go(self.app.get, "/urls/fggg874fbde55")
        self.mock_db_get(url="fggg874fbde55")

        http_response = future()
        self.assertEqual(
            "No long url found for this short url fggg874fbde55\n",
            http_response.get_data())