Changeset 737:3d6eb6ad3655 in hatta-dev


Ignore:
Timestamp:
01/24/10 13:01:11 (2 years ago)
Author:
sheep@…
Branch:
default
Message:

add tests for forbidding access to symlinks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/test_repo.py

    r736 r737  
    1313import hatta 
    1414import py 
     15import werkzeug 
    1516 
    1617# Patch for no gettext 
     
    2627            os.remove(os.path.join(root, name)) 
    2728        for name in dirs: 
    28             os.rmdir(os.path.join(root, name)) 
     29            path = os.path.join(root, name) 
     30            if os.path.islink(path): 
     31                os.remove(path) 
     32            else: 
     33                os.rmdir(path) 
    2934    try: 
    3035        os.removedirs(top) 
     
    4348    return hatta.WikiStorage(repo_path) 
    4449 
     50class TestMercurialStorage(object): 
     51    """ 
     52    Groups tests specific to Hatta's default storage. 
     53    """ 
     54 
     55    title = 'test title' 
     56    filename = 'test%20title' 
     57    author = u'test author' 
     58    text = u'test text' 
     59    comment = u'test comment' 
     60 
     61    def test_filename(self, repo): 
     62        """ 
     63        Check if the page's file is named properly. 
     64        """ 
     65 
     66        title = u'../some/+s page/ąęść?.txt' 
     67        filename = '..%2Fsome%2F%2Bs%20page%2F%C4%85%C4%99%C5%9B%C4%87%3F.txt' 
     68        filepath = os.path.join(repo.path, filename) 
     69        repo.save_text(title, self.text, self.author, self.comment, parent=-1) 
     70        assert os.path.exists(filepath) 
     71 
     72    def test_symlinks(self, repo): 
     73        """ 
     74        Make sure access to symlinks is blocked. 
     75        """ 
     76 
     77        path = os.path.join(repo.path, self.filename) 
     78        os.symlink('/', path) 
     79        py.test.raises(werkzeug.exceptions.Forbidden, repo.save_text, 
     80                       self.title, self.text, self.author, self.comment, 
     81                       parent=-1) 
     82        py.test.raises(werkzeug.exceptions.Forbidden, repo.open_page, 
     83                       self.title) 
    4584 
    4685class TestStorage(object): 
     
    6099        """ 
    61100 
    62         repo.save_text(self.title, self.text, self.author, self.comment, parent=-1) 
     101        repo.save_text(self.title, self.text, self.author, self.comment, 
     102                       parent=-1) 
    63103        saved = repo.open_page(self.title).read() 
    64104        assert saved == self.text 
     
    69109        """ 
    70110 
    71         repo.save_text(self.title, self.text, self.author, self.comment, parent=None) 
     111        repo.save_text(self.title, self.text, self.author, self.comment, 
     112                       parent=None) 
    72113        saved = repo.open_page(self.title).read() 
    73114        assert saved == self.text 
Note: See TracChangeset for help on using the changeset viewer.