예제 #1
0
    def test_create(self):
        """POST /mapfiles: Create a new item."""
        # login as admin to be allowed to access /mapfiles/1
        log_in(self.app, 'enduser', 'password')

        mapfile = Mapfile()
        mapfile.from_file(os.path.join(config['mapserver_dir'], 'dummy_mapfile.map'))
        mapfile.set_name('Dummy mapfile name')
        mapfile = change_mapfile_paths(mapfile)
        dict = mapfile.to_dict()
        content = simplejson.dumps(dict)

        # post create request that must be tested
        response = self.app.post(url('mapfiles'), params=content, content_type='application/json')
        dict = simplejson.loads(response.normal_body)

        print os.path.join(config['mapfiles_dir'], dict['name'])
        map = model.meta.Session.query(model.Map).filter(model.Map.name=='Dummy mapfile name').one()
        assert map.id == dict['id']
        assert map.name == dict['name']
        assert os.path.exists(os.path.join(config['mapfiles_dir'], map.filepath))

        # test redirection to /signin when log out
        log_out(self.app)
        response = self.app.post(url('mapfiles'), params=content, content_type='application/json',
                status=302)
        urlparsed = urlparse(response.location)
        assert urlparsed.path == '/signin' # we are redirected to "signin"

        # Clean the mapfile created by POST request
        delete_mapfile(map)
예제 #2
0
    def test_get_symbols(self):
        # Create new mapfile for this test
        filename = h.gen_mapname()
        map = create_mapfile('Dummy mapfile name', filename)
        # login as admin to be allowed to access /mapfiles/1
        log_in(self.app, 'enduser', 'password')

        response = self.app.get(url(controller='mapfiles', action='get_symbols', id=map.id))
        assert response.response.content_type == 'application/json'
        assert '"symbols": [' in response

        # test redirection to /signin when log out
        log_out(self.app)
        response = self.app.get(url(controller='mapfiles', action='get_symbols', id=map.id),
                status=302)
        urlparsed = urlparse(response.location)
        assert urlparsed.path == '/signin' # we are redirected to "signin"

        # Clean the test mapfile
        delete_mapfile(map)
예제 #3
0
    def test_show(self):
        """ GET /mapfiles/id: Get a specific mapfile owned by the current user. """
        # Create new mapfile for this test
        filename = h.gen_mapname()
        map = create_mapfile('Dummy mapfile name', filename)
        # login as admin to be allowed to access /mapfiles/1
        log_in(self.app, 'enduser', 'password')

        response = self.app.get(url('MapFiles', id=map.id))
        assert response.response.content_type == 'application/json'
        assert '"map": {' in response
        assert 'Dummy mapfile name' in response

        # test redirection to /signin when log out
        log_out(self.app)
        response = self.app.get(url('MapFiles', id=map.id), status=302)
        urlparsed = urlparse(response.location)
        assert urlparsed.path == '/signin' # we are redirected to "signin"

        # Clean the test mapfile
        delete_mapfile(map)
예제 #4
0
    def test_download(self):
        """ GET /mapfiles/id/download: Download the mapfile as an attachment. """
        # Create new mapfile for this test
        filename = h.gen_mapname()
        map = create_mapfile('Dummy mapfile name', filename)
        # login as admin to be allowed to access /mapfiles/1
        log_in(self.app, 'enduser', 'password')

        response = self.app.get(url(controller='mapfiles', action='download_mapfile', id=map.id))
        assert response.content_type == 'text/plain'
        assert response.body.startswith('MAP')
        assert response.headers['content-disposition'] == 'attachment; filename=%s' \
                %os.path.join(config['mapfiles_dir'], filename)

        # test redirection to /signin when log out
        log_out(self.app)
        response = self.app.get(url(controller='mapfiles', action='download_mapfile', id=map.id),
                status=302)
        urlparsed = urlparse(response.location)
        assert urlparsed.path == '/signin' # we are redirected to "signin"

        # Clean the test mapfile
        delete_mapfile(map)
예제 #5
0
    def test_update(self):
        """PUT /mapfiles/id: Update an existing item."""
        # Create new mapfile for this test
        filename = h.gen_mapname()
        map = create_mapfile('Dummy mapfile name', filename)
        # login as admin to be allowed to access /mapfiles/1
        log_in(self.app, 'enduser', 'password')

        mapfile = Mapfile()
        mapfile.from_file(os.path.join(config['mapserver_dir'], 'dummy_mapfile.map'))
        mapfile.set_name('New dummy name')
        mapfile = change_mapfile_paths(mapfile)
        dict = mapfile.to_dict()
        content = simplejson.dumps(dict)

        # PUT update request that must be tested
        map_id = map.id
        response = self.app.put(url('MapFiles', id=map_id), params=content,
                content_type='application/json')
        updated_map = model.meta.Session.query(model.Map).get(map_id)
        assert updated_map.name == 'New dummy name'
        map_path = os.path.join(config['mapfiles_dir'],updated_map.filepath)
        assert os.path.exists(map_path)
        mapobj = Mapfile()
        mapobj.from_file(map_path)
        assert mapobj.get_name() == 'New dummy name'

        # test redirection to /signin when log out
        log_out(self.app)
        response = self.app.get(url('MapFiles', id=map_id), params=content,
                status=302)
        urlparsed = urlparse(response.location)
        assert urlparsed.path == '/signin' # we are redirected to "signin"

        # Clean the test mapfile
        delete_mapfile(updated_map)