From dec451c063876a3a580375455a3db0dcf398dc9c Mon Sep 17 00:00:00 2001 From: Neissi Torres Lima Date: Tue, 5 Aug 2014 17:43:05 -0300 Subject: Now you can run the server and the tests without changing any code! --- service/app/adapter/__init__.py | 1 + service/app/adapter/mail_converter.py | 19 ++++++++ service/app/adapter/mail_service.py | 76 +++++++++++++++++++++++++++++++ service/app/leap/__init__.py | 3 -- service/app/leap/client.py | 74 ------------------------------ service/app/leap/mailconverter.py | 21 --------- service/app/pixelated_user_agent.py | 20 ++++---- service/go | 1 + service/test/adapter/mail_service_test.py | 15 ++++++ service/test/leap/client_test.py | 10 ---- 10 files changed, 124 insertions(+), 116 deletions(-) create mode 100644 service/app/adapter/__init__.py create mode 100644 service/app/adapter/mail_converter.py create mode 100644 service/app/adapter/mail_service.py delete mode 100644 service/app/leap/__init__.py delete mode 100644 service/app/leap/client.py delete mode 100644 service/app/leap/mailconverter.py create mode 100644 service/test/adapter/mail_service_test.py delete mode 100644 service/test/leap/client_test.py diff --git a/service/app/adapter/__init__.py b/service/app/adapter/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/service/app/adapter/__init__.py @@ -0,0 +1 @@ + diff --git a/service/app/adapter/mail_converter.py b/service/app/adapter/mail_converter.py new file mode 100644 index 00000000..a77fcdb7 --- /dev/null +++ b/service/app/adapter/mail_converter.py @@ -0,0 +1,19 @@ +class MailConverter: + + def __init__(self, mail_service): + pass + + def from_mail(self, imap_mail): + return inbox_mail + + + def to_mail(self, pixelated_mail, account): + raise NotImplementedError() + + + def from_tag(self, imap_tag): + raise NotImplementedError() + + + def from_contact(self, imap_contact): + raise NotImplementedError() diff --git a/service/app/adapter/mail_service.py b/service/app/adapter/mail_service.py new file mode 100644 index 00000000..b9ea238f --- /dev/null +++ b/service/app/adapter/mail_service.py @@ -0,0 +1,76 @@ +import traceback +import sys +import os +from app.bitmask_libraries.config import LeapConfig +from app.bitmask_libraries.provider import LeapProvider +from app.bitmask_libraries.session import LeapSessionFactory +from app.bitmask_libraries.auth import LeapCredentials + + +class MailService: + def __init__(self): + try: + self.username = 'test_user' + self.password = 'testpassword' + self.server_name = 'example.wazokazi.is' + self.mailbox_name = 'inbox' + self.leapdir = os.path.join(os.path.abspath("."), "leap") + + self._open_leap_session() + except: + traceback.print_exc(file=sys.stdout) + raise + + def _open_leap_session(self): + self.leap_config = LeapConfig(leap_home=self.leapdir) + self.provider = LeapProvider(self.server_name, self.leap_config) + self.leap_session = LeapSessionFactory(self.provider).create(LeapCredentials(self.username, self.password)) + self.mail_box = self.leap_session.account.getMailbox(self.mailbox_name) + + def mails(self, query): + self.mail_box.messages + return [] + + + def drafts(self): + return [] + + def mail(self, mail_id): + raise NotImplementedError() + + def thread(self, thread_id): + raise NotImplementedError() + + def mark_as_read(self, mail_id): + raise NotImplementedError() + + def tags_for_thread(self, thread): + raise NotImplementedError() + + def add_tag_to_thread(self, thread_id, tag): + raise NotImplementedError() + + def remove_tag_from_thread(self, thread_id, tag): + raise NotImplementedError() + + def delete_mail(self, mail_id): + raise NotImplementedError() + + def save_draft(self, draft): + raise NotImplementedError() + + def send_draft(self, draft): + raise NotImplementedError() + + def draft_reply_for(self, mail_id): + raise NotImplementedError() + + def all_tags(self): + raise NotImplementedError() + + def all_contacts(self, query): + raise NotImplementedError() + +if __name__ == '__main__': + print('Running Standalone') + client = Client() diff --git a/service/app/leap/__init__.py b/service/app/leap/__init__.py deleted file mode 100644 index b836e508..00000000 --- a/service/app/leap/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from client import Client -from mailconverter import MailConverter - diff --git a/service/app/leap/client.py b/service/app/leap/client.py deleted file mode 100644 index b1e4fb8b..00000000 --- a/service/app/leap/client.py +++ /dev/null @@ -1,74 +0,0 @@ -import traceback -import sys -import os -from app.bitmask_libraries.config import LeapConfig -from app.bitmask_libraries.provider import LeapProvider -from app.bitmask_libraries.session import LeapSessionFactory -from app.bitmask_libraries.auth import LeapCredentials - - -class Client: - def __init__(self): - try: - self.username = 'test_user' - self.password = 'testpassword' - self.server_name = 'example.wazokazi.is' - self.mailbox_name = 'inbox' - self.leapdir = os.path.join(os.path.abspath("."), "leap") - - self._open_leap_session() - except: - traceback.print_exc(file=sys.stdout) - raise - - def _open_leap_session(self): - self.leap_config = LeapConfig(leap_home=self.leapdir) - self.provider = LeapProvider(self.server_name, self.leap_config) - self.leap_session = LeapSessionFactory(self.provider).create(LeapCredentials(self.username, self.password)) - self.mbx = self.leap_session.account.getMailbox(self.mailbox_name) - - def mails(self, query): - raise NotImplementedError() - - def drafts(self): - raise NotImplementedError() - - def mail(self, mail_id): - raise NotImplementedError() - - def thread(self, thread_id): - raise NotImplementedError() - - def mark_as_read(self, mail_id): - raise NotImplementedError() - - def tags_for_thread(self, thread): - raise NotImplementedError() - - def add_tag_to_thread(self, thread_id, tag): - raise NotImplementedError() - - def remove_tag_from_thread(self, thread_id, tag): - raise NotImplementedError() - - def delete_mail(self, mail_id): - raise NotImplementedError() - - def save_draft(self, draft): - raise NotImplementedError() - - def send_draft(self, draft): - raise NotImplementedError() - - def draft_reply_for(self, mail_id): - raise NotImplementedError() - - def all_tags(self): - raise NotImplementedError() - - def all_contacts(self, query): - raise NotImplementedError() - -if __name__ == '__main__': - print('Running Standalone') - client = Client() diff --git a/service/app/leap/mailconverter.py b/service/app/leap/mailconverter.py deleted file mode 100644 index e05b2c30..00000000 --- a/service/app/leap/mailconverter.py +++ /dev/null @@ -1,21 +0,0 @@ -class MailConverter: - - def __init__(self, client): - pass - - def from_mail(self, inbox_mail): - raise NotImplementedError() - - - def to_mail(self, pixelated_mail, account): - raise NotImplementedError() - - - def from_tag(self, inbox_tag): - raise NotImplementedError() - - - def from_contact(self, inbox_contact): - raise NotImplementedError() - - diff --git a/service/app/pixelated_user_agent.py b/service/app/pixelated_user_agent.py index 3f812f27..e2544481 100644 --- a/service/app/pixelated_user_agent.py +++ b/service/app/pixelated_user_agent.py @@ -1,11 +1,16 @@ -from flask import Flask, request, Response -from factory import MailConverterFactory, ClientFactory -from search import SearchQuery - +import sys +import os import json import datetime import requests +sys.path.insert(0, os.environ['APP_ROOT']) + +from flask import Flask, request, Response +from search import SearchQuery +from adapter.mail_service import MailService +from adapter.mail_converter import MailConverter + app = Flask(__name__) client = None converter = None @@ -40,7 +45,7 @@ def update_draft(): @app.route('/mails') def mails(): query = SearchQuery.compile(request.args.get("q")) - mails = client.drafts() if "drafts" in query['tags'] else client.mails(query) + mails = mail_service.drafts() if "drafts" in query['tags'] else mail_service.mails(query) mails = [converter.from_mail(mail) for mail in mails] if "inbox" in query['tags']: @@ -119,9 +124,8 @@ def redirect_to_front(path): if __name__ == '__main__': app.config.from_envvar('PIXELATED_UA_CFG') - provider = app.config['PROVIDER'] account = app.config['ACCOUNT'] - client = ClientFactory.create(provider, account) - converter = MailConverterFactory.create(provider, client) + mail_service = MailService() + converter = MailConverter(mail_service) app.run(host=app.config['HOST'], debug=app.config['DEBUG'], port=app.config['PORT']) diff --git a/service/go b/service/go index dd404a5b..1342660b 100755 --- a/service/go +++ b/service/go @@ -1,4 +1,5 @@ #!/bin/bash export PIXELATED_UA_CFG=../config/pixelated_ua.cfg +export APP_ROOT=. python app/pixelated_user_agent.py diff --git a/service/test/adapter/mail_service_test.py b/service/test/adapter/mail_service_test.py new file mode 100644 index 00000000..9f0ac616 --- /dev/null +++ b/service/test/adapter/mail_service_test.py @@ -0,0 +1,15 @@ +import sys +import os +import unittest + +from app.adapter.mail_service import MailService + +class TestMailService(unittest.TestCase): + + def test_initialization(self): + mail_service = MailService() + + def test_receive_mail(self): + mail_service = MailService() + mails = mail_service.mails("") + self.assertIsNotNone(mails) diff --git a/service/test/leap/client_test.py b/service/test/leap/client_test.py deleted file mode 100644 index 3f2a869e..00000000 --- a/service/test/leap/client_test.py +++ /dev/null @@ -1,10 +0,0 @@ -import sys -import os -sys.path.insert(0, os.environ['APP_ROOT']) - -from app.leap.client import Client - - -def test_initialization(): - client = Client() - print('Run') -- cgit v1.2.3