def test_unicode(self):
     # blog
     unicode_blog = Blogs(PROFILE_UNICODE, PROFILE_DIRECTORY)
     unicode_blog.add_blog(u"Enchanté", PROFILE_UNICODE)
     unicode_blog.save()
     # doc
     unicode_doc = FileDocument(PROFILE_UNICODE, PROFILE_DIRECTORY)
     # write data
     unicode_doc.set_title(u"Mr")
     unicode_doc.set_firstname(u"Zoé")
     unicode_doc.set_lastname(u"Bréton")
     unicode_doc.set_photo(QUESTION_MARK())
     unicode_doc.set_email(u"*****@*****.**")
     unicode_doc.load_defaults()
     unicode_doc.add_custom_attributes((u"été", u"chôô"))
     unicode_doc.remove_custom_attributes(u'Sport')
     # save
     unicode_doc.save()
     # check content
     blog = load_blogs(PROFILE_UNICODE, PROFILE_DIRECTORY)
     self.assertEquals(blog.blogs[0].text, u"Enchanté")
     doc = FileDocument(PROFILE_UNICODE, PROFILE_DIRECTORY)
     doc.load()
     self.assertEquals(u"Mr", doc.get_title())
     self.assertEquals(u"Zoé", doc.get_firstname())
     self.assertEquals(u"Bréton", doc.get_lastname())
     self.assertEquals(QUESTION_MARK(), doc.get_photo())
     self.assertEquals(u"*****@*****.**", doc.get_email())
     self.assertEquals({'City': u'', 'été': u'chôô', 'Country': u'',
                        'Favourite Book': u'',
                        'Favourite Movie': u'', 'Studies': u''},
                       doc.get_custom_attributes())
 def test_save(self):
     # write bruce blog
     try:
         bruce_blog = load_blogs(PROFILE_BRUCE, PROFILE_DIRECTORY)
     except ValueError:
         bruce_blog = Blogs(PROFILE_BRUCE, PROFILE_DIRECTORY, pseudo=PROFILE_BRUCE)
         bruce_blog.add_blog("Hi Buddy", PROFILE_BRUCE)
         bruce_blog.save()
     # write data
     self.document.set_title(u"Mr")
     self.document.set_firstname(u"manu")
     self.document.set_lastname(u"breton")
     self.document.set_photo(QUESTION_MARK())
     self.document.set_email(u"*****@*****.**")
     self.document.add_custom_attributes((u"homepage", u"manu.com"))
     self.document.add_custom_attributes((u'color', u'blue'))
     # set files
     self.document.add(abspath(u"data"))
     self.document.expand_dir(abspath(u"data"))
     self.document.share_files((abspath(u"data"), ["routage", u"emptydir", u"subdir1"], True))
     self.document.expand_dir(abspath(u"data/subdir1"))
     self.document.share_files((abspath(u"data/subdir1/subsubdir"), ["null", "dummy.txt"], True))
     self.document.tag_files((abspath(u"data"), ["date.txt"], u"tagos"))
     self.document.tag_files((abspath(u"data/subdir1/subsubdir"), ["null", "dummy.txt"], u"empty"))
     # set peers
     bruce_doc = FileDocument(PROFILE_BRUCE, PROFILE_DIRECTORY)
     bruce_doc.load()
     self.document.fill_data((u"bruce", bruce_doc))
     self.document.fill_blog((u"bruce", load_blogs(PROFILE_BRUCE, PROFILE_DIRECTORY)))
     self.document.make_friend(u"bruce")
     # write file
     self.document.save()
     # check content
     self._assertContent(self.document)
class BlogTest(unittest.TestCase):
    """Test Blog behaviour"""

    def setUp(self):
        """override one in unittest.TestCase"""
        self.blog = Blogs(PROFILE_TEST, directory=PROFILE_DIRECTORY)
        self.blog.add_blog("first blog", PROFILE_TEST)
        self.blog.add_blog("second blog", PROFILE_TEST)
        self.blog.add_comment(0, "commenting the first", PSEUDO)
        self.blog.save()

    def test_blog(self):
        self.assertEquals(self.blog.count_blogs(), 2)
        self.assertEquals(self.blog.get_blog(0).text, "first blog")
        self.assertEquals(self.blog.get_blog(0).count_blogs(), 1)
        self.assertEquals(self.blog.get_blog(1).text, "second blog")
        self.assertEquals(self.blog.get_blog(1).count_blogs(), 0)

    def test_security(self):
        self.assertRaises(AssertionError, self.blog.add_blog, "forbidden", "jules")
        self.assertRaises(AssertionError, self.blog.remove_blog, 0, "jules")
        self.assertRaises(AssertionError, self.blog.get_blog, 2)

    def test_copy(self):
        copied_blog = self.blog.copy()
        # add some blogs in first
        self.blog.add_blog("more blog", PROFILE_TEST)
        self.blog.add_comment(0, "commenting (again) the first", PSEUDO)
        # check result
        self.assertEquals(self.blog.count_blogs(), 3)
        self.assertEquals(self.blog.get_blog(0).count_blogs(), 2)
        # check copy
        self.assertEquals(copied_blog.count_blogs(), 2)
        self.assertEquals(copied_blog.get_blog(0).text, "first blog")
        self.assertEquals(copied_blog.get_blog(0).count_blogs(), 1)
        self.assertEquals(copied_blog.get_blog(1).text, "second blog")
        self.assertEquals(copied_blog.get_blog(1).count_blogs(), 0)

    def test_load(self):
        loaded_blog = load_blogs(PROFILE_TEST, directory=PROFILE_DIRECTORY)
        self.assertEquals(loaded_blog.count_blogs(), 2)
        self.assertEquals(loaded_blog.get_blog(0).text, "first blog")
        self.assertEquals(loaded_blog.get_blog(0).count_blogs(), 1)
        self.assertEquals(loaded_blog.get_blog(1).text, "second blog")
        self.assertEquals(loaded_blog.get_blog(1).count_blogs(), 0)

    def test_retro_compatibility(self):
        loaded_blog = load_blogs(PROFILE_010, directory=PROFILE_DIRECTORY)
        self.assertEquals(loaded_blog.count_blogs(), 4)
        self.assertEquals(loaded_blog.get_blog(0).text, u"Hi there! Watch my next movie... it's going to be real fun")
        self.assertEquals(loaded_blog.get_blog(0).count_blogs(), 0)
        self.assertEquals(
            loaded_blog.get_blog(1).text, u"I won't tell you much but this I can say: it's going to be terrific!"
        )
        self.assertEquals(loaded_blog.get_blog(2).text, u"Watch here for its name... coming soon")
        self.assertEquals(loaded_blog.get_blog(3).text, u"A Godess' world.  What do you think?")
def write_test_profile():
    """write testing profile & blogs into test.prf & test.blog
    
    node_id = PROFILE_BRUCE
    
    Blog:
    `````
      'This is a test'

    Files:
    ``````
      data/
      |-- date.txt                  - tagos
      |-- emptydir           Shared
      |-- profiles
      |   `-- ...
      |-- routage            Shared
      `-- subdir1            Shared
          |-- TOtO.txt
          |-- date.doc
          `-- subsubdir
              |-- dummy.txt  Shared - tag2
              |-- null       Shared - tag1
              `-- ..."""
    # write filter
    filter_document = FilterDocument()
    filter_document.set_pseudo(FilterValue(value=".*", activate=True))
    filter_document.set_title(FilterValue(value="Mr", activate=True))
    filter_document.set_lastname(FilterValue(value="b.*", activate=True))
    filter_document.add_custom_attributes('color', FilterValue(value="blue", activate=True))
    filter_document.add_repository("MP3", FilterValue(value=".*\.mp3", activate=True))
    if os.path.exists(FILE_TEST + FILTER_EXT):
        os.remove(FILE_TEST + FILTER_EXT)
    filter_document.save(FILE_TEST + FILTER_EXT)
    # write blog
    blog = Blogs()
    blog.add_blog(u"This is a test", PSEUDO)
    if os.path.exists(FILE_TEST + BLOG_EXT):
        os.remove(FILE_TEST + BLOG_EXT)
    blog.save(FILE_TEST + BLOG_EXT)
    # write profile
    document = FileDocument()
    document.set_pseudo(PSEUDO)
    document.set_title(u"Mr")
    document.set_firstname(u"manu")
    document.set_lastname(u"breton")
    document.set_photo(QUESTION_MARK())
    document.set_email(u"*****@*****.**")
    document.load_defaults()
    document.add_custom_attributes(u"homepage", u"manu.com")
    document.add_custom_attributes(u'color', u'blue')
    document.remove_custom_attributes(u'Sport')
    document.add_repository(TEST_DIR)
    document.expand_dir(DATA_DIR)
    document.expand_dir(os.path.join(DATA_DIR,
                                     "subdir1"))
    document.share_files(DATA_DIR,
                         ["routage", "emptydir", "subdir1"])
    document.share_files(os.sep.join([DATA_DIR,
                                      "subdir1",
                                      "subsubdir"]),
                         ["null", "dummy.txt"])
    document.tag_file(os.path.join(DATA_DIR,
                                   "date.txt"),
                      u"tagos")
    document.tag_file(os.sep.join([DATA_DIR,
                                   "subdir1",
                                   "subsubdir",
                                   "null"]),
                      u"tag1")
    document.tag_file(os.sep.join([DATA_DIR,
                                   "subdir1",
                                   "subsubdir",
                                   "dummy.txt"]),
                      u"tag2")
    # set peers
    bruce = get_bruce_profile()
    bruce_doc = bruce.document
    bruce_blog = bruce.blog
    document.fill_data(PROFILE_BRUCE, bruce_doc)
    document.fill_blog(PROFILE_BRUCE, bruce_blog)
    document.make_friend(PROFILE_BRUCE)
    # write file
    if os.path.exists(FILE_TEST + PROFILE_EXT):
        os.remove(FILE_TEST + PROFILE_EXT)
    document.save(FILE_TEST + PROFILE_EXT)