class TestDeviceLogout(unittest.TestCase): def setUp(self): neo_config.load_config() neo_config.set_project_variables() neo = NeoAPI(neo_config) self.api = neo.activate_testing() self.user1 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user1 is None: self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.user2 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user2 is None: self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1111-11-11") self.circle = Circle(name="Mamie") self.linkCircle = UserToCircle(user=self.user1, circle=self.circle, privilege="ADMIN") self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle) self.device = Device(name="Papie") self.device.circle = self.circle self.device_password = self.device.get_pre_activation_password() self.device.activate(self.device.key) db.session.commit() self.token1 = authenticate_user(self.api, self.user1, "test") self.token2 = authenticate_user(self.api, self.user2, "test") self.device_token = authenticate_device(self.api, self.device, self.device_password) self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019") def test_valid_logout(self): json_data = {"device_token": self.device_token} response = self.api.post('/device/logout', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code == 200 assert response_json['success'] def test_missing_parameter(self): json_data = {} response = self.api.post('/device/logout', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code != 200 assert not response_json['success']
class TestDeviceMediaInfo(unittest.TestCase): def setUp(self): neo_config.load_config() neo_config.set_project_variables() neo = NeoAPI(neo_config) self.api = neo.activate_testing() self.user1 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user1 is None: self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.user2 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user2 is None: self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1111-11-11") self.circle = Circle(name="Mamie") self.linkCircle = UserToCircle(user=self.user1, circle=self.circle) self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle) self.conversation = Conversation(circle=self.circle, device_access=True) self.linkConversation = UserToConversation( user=self.user1, conversation=self.conversation, privilege="ADMIN") self.message = Message() self.message.conversation = self.conversation self.message.link = self.linkConversation self.media = Media('test', '.txt', 'test.txt') self.media.message = self.message self.device = Device(name="Papie") self.device.circle = self.circle self.device_password = self.device.get_pre_activation_password() self.device.activate(self.device.key) db.session.commit() self.token1 = authenticate_user(self.api, self.user1, "test") self.token2 = authenticate_user(self.api, self.user2, "test") self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019") self.tokenDevice = authenticate_device(self.api, self.device, self.device_password) def test_valid_info(self): json_data = { 'device_token': self.tokenDevice, 'media_id': self.media.id } response = self.api.post('/media/info', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code == 200 assert response_json['success'] is True def test_invalid_info(self): json_data = {'device_token': self.token1, 'media_id': self.media.id} response = self.api.post('/media/info', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code != 200 assert response_json['success'] is False
class SocketioMessageEvents(unittest.TestCase): def setUp(self): neo_config.load_config() neo_config.set_project_variables() self.neo = NeoAPI(neo_config) self.api = self.neo.activate_testing() self.client = SocketIOTestClient(self.neo.app, socketio) self.client2 = SocketIOTestClient(self.neo.app, socketio) self.deviceClient = SocketIOTestClient(self.neo.app, socketio) self.client.disconnect() self.client2.disconnect() self.deviceClient.disconnect() self.user1 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user1 is None: self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.user2 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user2 is None: self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.circle = Circle(name="Mamie") self.linkCircle = UserToCircle(user=self.user1, circle=self.circle, privilege="ADMIN") self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle) self.conversation = Conversation("test") self.conversation.device_access = True self.conversation.circle = self.circle self.link = UserToConversation(user=self.user1, conversation=self.conversation, privilege='ADMIN') self.link2 = UserToConversation(user=self.user2, conversation=self.conversation) self.device = Device(name="Papie") self.device.circle = self.circle self.device_password = self.device.get_pre_activation_password() self.device.activate(self.device.key) db.session.commit() self.circle_id = self.circle.id self.conversation_id = self.conversation.id self.token1 = authenticate_user(self.api, self.user1, "test") self.token2 = authenticate_user(self.api, self.user2, "test") self.device_token = authenticate_device(self.api, self.device, self.device_password) self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019") def tearDown(self): self.client.disconnect() self.client2.disconnect() self.deviceClient.disconnect() def test_valid_message(self): data = {'token': self.token1} assert len(sockets) == 0 self.client.connect() self.client2.connect() self.deviceClient.connect() self.client.emit('authenticate', data, json=True) self.client2.emit('authenticate', {'token': self.token2}, json=True) self.deviceClient.emit('authenticate', {'token': self.device_token}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() res3 = self.deviceClient.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' assert len(res3) == 1 assert res3[0]['name'] == 'success' self.client.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) self.client2.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) self.deviceClient.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() res3 = self.deviceClient.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' assert len(res3) == 1 assert res3[0]['name'] == 'success' sock = { 'conversation_id': self.conversation_id, 'text_message': 'test web socket' } self.client.emit('message', sock, json=True) err = self.client.get_received() res = self.client2.get_received() res2 = self.deviceClient.get_received() assert len(err) == 2 assert len(res) == 1 assert len(res2) == 1 self.client.disconnect() self.client2.disconnect() self.deviceClient.disconnect() def test_valid_message_from_device(self): data = {'token': self.token1} assert len(sockets) == 0 self.client.connect() self.client2.connect() self.deviceClient.connect() self.client.emit('authenticate', data, json=True) self.client2.emit('authenticate', {'token': self.token2}, json=True) self.deviceClient.emit('authenticate', {'token': self.device_token}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() res3 = self.deviceClient.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' assert len(res3) == 1 assert res3[0]['name'] == 'success' self.client.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) self.client2.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) self.deviceClient.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() res3 = self.deviceClient.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' assert len(res3) == 1 assert res3[0]['name'] == 'success' sock = { 'conversation_id': self.conversation_id, 'text_message': 'test web socket' } self.deviceClient.emit('message', sock, json=True) err = self.client.get_received() res = self.client2.get_received() res2 = self.deviceClient.get_received() assert len(err) == 1 assert len(res) == 1 assert len(res2) == 2 def test_notif_on_conversation(self): data = {'token': self.token1} assert len(sockets) == 0 self.client.connect() self.client2.connect() self.deviceClient.connect() self.client.emit('authenticate', data, json=True) self.client2.emit('authenticate', {'token': self.token2}, json=True) self.deviceClient.emit('authenticate', {'token': self.device_token}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() res3 = self.deviceClient.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' assert len(res3) == 1 assert res3[0]['name'] == 'success' self.client.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) self.client2.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) self.deviceClient.emit('join_conversation', {'conversation_id': self.conversation_id}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() res3 = self.deviceClient.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' assert len(res3) == 1 assert res3[0]['name'] == 'success' json_data = { 'token': self.token1, 'conversation_id': self.conversation_id, 'text_message': 'test web socket' } self.api.post('/message/send', data=json.dumps(json_data), content_type='application/json') err = self.client.get_received() res = self.client2.get_received() res2 = self.deviceClient.get_received() assert len(err) == 1 assert len(res) == 1 assert len(res2) == 1 self.client.disconnect() self.client2.disconnect() self.deviceClient.disconnect()
class SocketioRoomConversation(unittest.TestCase): def setUp(self): neo_config.load_config() neo_config.set_project_variables() self.neo = NeoAPI(neo_config) self.api = self.neo.activate_testing() self.client = SocketIOTestClient(self.neo.app, socketio) self.client.disconnect() self.user1 = db.session.query(UserModel).filter(UserModel.email == "*****@*****.**").first() if self.user1 is None: self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.user2 = db.session.query(UserModel).filter(UserModel.email == "*****@*****.**").first() if self.user2 is None: self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.circle = Circle(name="Mamie") self.linkCircle = UserToCircle(user=self.user1, circle=self.circle, privilege="ADMIN") self.conversation = Conversation("test", device_access=True) self.conversation.device_access = True self.conversation.circle = self.circle self.link2 = UserToConversation(user=self.user2, conversation=self.conversation) self.device = Device(name="Papie") self.device.circle = self.circle self.device_password = self.device.get_pre_activation_password() self.device.activate(self.device.key) db.session.commit() self.circle_id = self.circle.id self.conversation_id = self.conversation.id self.token1 = authenticate_user(self.api, self.user1, "test") self.token2 = authenticate_user(self.api, self.user2, "test") self.device_token = authenticate_device(self.api, self.device, self.device_password) self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019") def tearDown(self): self.client.disconnect() def test_invalid_join_conversation(self): data = { 'token': self.token1 } assert len(sockets) == 0 self.client.connect() self.client.emit('authenticate', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' data = { 'conversation_id': self.conversation_id } self.client.emit('join_conversation', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'error' def test_valid_join_conversation(self): data = { 'token': self.token2 } assert len(sockets) == 0 self.client.connect() self.client.emit('authenticate', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' data = { 'conversation_id': self.conversation_id } self.client.emit('join_conversation', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' def test_valid_device_join_conversation(self): data = { 'token': self.device_token } assert len(sockets) == 0 self.client.connect() self.client.emit('authenticate', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' data = { 'conversation_id': self.conversation_id } self.client.emit('join_conversation', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' def test_device_join_without_conv_access(self): self.conversation.device_access = False db.session.commit() data = { 'token': self.device_token } assert len(sockets) == 0 self.client.connect() self.client.emit('authenticate', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' data = { 'conversation_id': self.conversation_id } self.client.emit('join_conversation', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'error' def test_valid_leave_conversation(self): data = { 'token': self.token2 } assert len(sockets) == 0 self.client.connect() self.client.emit('authenticate', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' data = { 'conversation_id': self.conversation_id } self.client.emit('join_conversation', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' self.client.emit('leave_conversation', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' def test_invalid_leave_conversation(self): data = { 'token': self.token1 } assert len(sockets) == 0 self.client.connect() self.client.emit('authenticate', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success' data = { 'conversation_id': self.conversation_id } self.client.emit('leave_conversation', data, json=True) res = self.client.get_received() assert len(res) == 1 assert res[0]['name'] == 'success'
class TestDeviceMessageSend(unittest.TestCase): def setUp(self): neo_config.load_config() neo_config.set_project_variables() neo = NeoAPI(neo_config) self.api = neo.activate_testing() self.user1 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user1 is None: self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.user2 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user2 is None: self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1111-11-11") self.circle = Circle(name="Mamie") self.circle2 = Circle(name="test") self.linkCircle = UserToCircle(user=self.user1, circle=self.circle, privilege="ADMIN") self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle) self.conversation = Conversation("test") self.conversation.circle = self.circle self.conversation.device_access = True self.device = Device(name="Papie") self.device2 = Device(name="test") self.device2.circle = self.circle2 self.device2_password = self.device2.get_pre_activation_password() self.device2.activate(self.device2.key) self.device.circle = self.circle self.device_password = self.device.get_pre_activation_password() self.device.activate(self.device.key) self.message = Message(is_user=False) self.message.conversation = self.conversation self.message.device = self.device db.session.commit() self.token1 = authenticate_user(self.api, self.user1, "test") self.token2 = authenticate_user(self.api, self.user2, "test") self.device_token = authenticate_device(self.api, self.device, self.device_password) self.device2_token = authenticate_device(self.api, self.device2, self.device2_password) self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019") def test_valid_message_send(self): json_data = { "device_token": self.device_token, "conversation_id": self.conversation.id, "text_message": "yo" } response = self.api.post('/device/message/send', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code == 200 assert response_json['success'] is True assert len(self.circle.conversations[0].messages) == 2 assert self.circle.conversations[0].messages[1].text_content == "yo" def test_invalid_conversation(self): json_data = { "device_token": self.device_token, "conversation_id": 2000, "text_message": "yo" } response = self.api.post('/device/message/send', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code != 200 assert not response_json['success'] def test_invalid_device(self): json_data = { "device_token": self.device2_token, "conversation_id": self.conversation.id, "text_message": "yo" } response = self.api.post('/device/message/send', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code == 403 assert not response_json['success'] def test_missing_parameter(self): json_data = {"device_token": self.device_token, "text_message": "yo"} response = self.api.post('/device/message/send', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code != 200 assert not response_json['success']
class SocketioWebrtcEvents(unittest.TestCase): def setUp(self): neo_config.load_config() neo_config.set_project_variables() self.neo = NeoAPI(neo_config) self.api = self.neo.activate_testing() self.client = SocketIOTestClient(self.neo.app, socketio) self.client2 = SocketIOTestClient(self.neo.app, socketio) self.deviceClient = SocketIOTestClient(self.neo.app, socketio) self.client.disconnect() self.client2.disconnect() self.deviceClient.disconnect() self.user1 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user1 is None: self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.user2 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user2 is None: self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.email = self.user2.email self.circle = Circle(name="Mamie") self.linkCircle = UserToCircle(user=self.user1, circle=self.circle, privilege="ADMIN") self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle) self.conversation = Conversation("test") self.conversation.device_access = True self.conversation.circle = self.circle self.link = UserToConversation(user=self.user1, conversation=self.conversation, privilege='ADMIN') self.link2 = UserToConversation(user=self.user2, conversation=self.conversation) self.device = Device(name="Papie") self.device.circle = self.circle self.device_password = self.device.get_pre_activation_password() self.device.activate(self.device.key) db.session.commit() self.circle_id = self.circle.id self.conversation_id = self.conversation.id self.token1 = authenticate_user(self.api, self.user1, "test") self.token2 = authenticate_user(self.api, self.user2, "test") self.device_token = authenticate_device(self.api, self.device, self.device_password) self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019") def tearDown(self): self.client.disconnect() self.client2.disconnect() self.deviceClient.disconnect() def test_valid_message(self): data = {'token': self.token1} assert len(sockets) == 0 self.client.connect() self.client2.connect() self.deviceClient.connect() self.client.emit('authenticate', data, json=True) self.client2.emit('authenticate', {'token': self.token2}, json=True) self.deviceClient.emit('authenticate', {'token': self.device_token}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() res3 = self.deviceClient.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' assert len(res3) == 1 assert res3[0]['name'] == 'success' self.client.emit('webrtc_credentials') res1 = self.client.get_received() assert len(res1) == 1 def test_valid_forward(self): assert len(sockets) == 0 self.client.connect() self.client2.connect() self.client.emit('authenticate', {'token': self.token1}, json=True) self.client2.emit('authenticate', {'token': self.token2}, json=True) res1 = self.client.get_received() res2 = self.client2.get_received() assert len(res1) == 1 assert res1[0]['name'] == 'success' assert len(res2) == 1 assert res2[0]['name'] == 'success' self.client.emit('webrtc_forward', {'email': self.email}) res1 = self.client.get_received() res2 = self.client2.get_received() assert len(res1) == 1 assert len(res2) == 1
class TestDeviceMediaUpload(unittest.TestCase): def setUp(self): neo_config.load_config() neo_config.set_project_variables() neo = NeoAPI(neo_config) self.api = neo.activate_testing() self.user1 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user1 is None: self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1995-12-12") self.user2 = db.session.query(UserModel).filter( UserModel.email == "*****@*****.**").first() if self.user2 is None: self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname", last_name="lastname", birthday="1111-11-11") self.circle = Circle(name="Mamie") self.linkCircle = UserToCircle(user=self.user1, circle=self.circle) self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle) self.conversation = Conversation(circle=self.circle, device_access=True) self.linkConversation = UserToConversation( user=self.user1, conversation=self.conversation, privilege="ADMIN") self.message = Message() self.message.conversation = self.conversation self.message.link = self.linkConversation self.media = Media('test', '.txt', 'test.txt') self.media.message = self.message self.device = Device(name="Papie") self.device.circle = self.circle self.device_password = self.device.get_pre_activation_password() self.device.activate(self.device.key) db.session.commit() self.token1 = authenticate_user(self.api, self.user1, "test") self.token2 = authenticate_user(self.api, self.user2, "test") self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019") self.tokenDevice = authenticate_device(self.api, self.device, self.device_password) def test_valid_upload_message(self): json_data = { 'device_token': self.tokenDevice, 'files': ["test_file.txt"], 'conversation_id': self.conversation.id } response = self.api.post('/device/message/send', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code == 200 assert response_json['success'] is True assert len(response_json['media_list']) == 1 headers = { 'content-type': 'multipart/form-data', 'Authorization': self.tokenDevice } data = {'file': (io.BytesIO(b"device sent a file"), 'test_file.txt')} response = self.api.post('/media/upload/' + str(response_json['media_list'][0]['id']), data=data, headers=headers) response_json = json.loads(response.data) assert response_json["success"] is True assert os.path.exists('user_files' + os.path.sep + 'conversation_' + str(self.conversation.id) + os.path.sep) def test_invalid_upload_message(self): json_data = { 'device_token': self.tokenDevice, 'files': ["test_file.txt"], 'conversation_id': self.conversation.id } response = self.api.post('/device/message/send', data=json.dumps(json_data), content_type='application/json') response_json = json.loads(response.data) assert response.status_code == 200 assert response_json['success'] is True assert len(response_json['media_list']) == 1 headers = { 'content-type': 'multipart/form-data', 'Authorization': self.tokenDevice } data = {'file': (io.BytesIO(b"device sent a file 2"), 'test_file.txt')} response = self.api.post('/media/upload/' + "999", data=data, headers=headers) response_json = json.loads(response.data) assert response_json["success"] is False def tearDown(self): if os.path.exists("user_files"): shutil.rmtree('user_files')