a/ForgeBlog/forgeblog/tests/functional/test_rest.py b/ForgeBlog/forgeblog/tests/functional/test_rest.py
...
...
41
            'text': 'test text',
41
            'text': 'test text',
42
            'state': 'published',
42
            'state': 'published',
43
            'labels': 'label1, label2'
43
            'labels': 'label1, label2'
44
        }
44
        }
45
        r = self.api_post('/rest/p/test/blog/', **data)
45
        r = self.api_post('/rest/p/test/blog/', **data)
46
        assert_equal(r.status_int, 200)
46
        assert_equal(r.status_int, 201)
47
        url = '/rest' + BM.BlogPost.query.find().first().url()
47
        url = '/rest' + BM.BlogPost.query.find().first().url()
48
        r = self.api_get('/rest/p/test/blog/')
48
        r = self.api_get('/rest/p/test/blog/')
49
        assert_equal(r.json['posts'][0]['title'], 'test')
49
        assert_equal(r.json['posts'][0]['title'], 'test')
50
        assert_equal(r.json['posts'][0]['url'], h.absurl(url))
50
        assert_equal(r.json['posts'][0]['url'], h.absurl(url))
51
51
52
        r = self.api_get(url)
52
        r = self.api_get(url)
53
        assert_equal(r.json['title'], 'test')
53
        assert_equal(r.json['title'], data['title'])
54
        assert_equal(r.json['text'], data['text'])
54
        assert_equal(r.json['text'], data['text'])
55
        assert_equal(r.json['author'], 'test-admin')
55
        assert_equal(r.json['state'], data['state'])
56
        assert_equal(r.json['state'], data['state'])
56
        assert_equal(r.json['labels'], data['labels'].split(','))
57
        assert_equal(r.json['labels'], data['labels'].split(','))
57
58
58
    def test_update_post(self):
59
    def test_update_post(self):
59
        data = {
60
        data = {
...
...
61
            'text': 'test text',
62
            'text': 'test text',
62
            'state': 'published',
63
            'state': 'published',
63
            'labels': 'label1, label2'
64
            'labels': 'label1, label2'
64
        }
65
        }
65
        r = self.api_post('/rest/p/test/blog/', **data)
66
        r = self.api_post('/rest/p/test/blog/', **data)
66
        assert_equal(r.status_int, 200)
67
        assert_equal(r.status_int, 201)
67
        url = '/rest' + BM.BlogPost.query.find().first().url()
68
        url = '/rest' + BM.BlogPost.query.find().first().url()
68
        data = {
69
        data = {
69
            'text': 'test text2',
70
            'text': 'test text2',
70
            'state': 'draft',
71
            'state': 'draft',
71
            'labels': 'label3'
72
            'labels': 'label3'
...
...
82
            'title': 'test',
83
            'title': 'test',
83
            'state': 'published',
84
            'state': 'published',
84
            'labels': 'label1, label2'
85
            'labels': 'label1, label2'
85
        }
86
        }
86
        r = self.api_post('/rest/p/test/blog/', **data)
87
        r = self.api_post('/rest/p/test/blog/', **data)
87
        assert_equal(r.status_int, 200)
88
        assert_equal(r.status_int, 201)
88
        url = '/rest' + BM.BlogPost.query.find().first().url()
89
        url = '/rest' + BM.BlogPost.query.find().first().url()
89
        self.api_post(url, delete='')
90
        self.api_post(url, delete='')
90
        r = self.api_get(url)
91
        r = self.api_get(url)
91
        assert_equal(r.status_int, 404)
92
        assert_equal(r.status_int, 404)
92
93
...
...
117
        anon_write = M.ACE.allow(anon, 'write')
118
        anon_write = M.ACE.allow(anon, 'write')
118
        acl.append(anon_write)
119
        acl.append(anon_write)
119
        self.app.post('/rest/p/test/blog/',
120
        self.app.post('/rest/p/test/blog/',
120
                      params=dict(title='test', text='test text', state='published'),
121
                      params=dict(title='test', text='test text', state='published'),
121
                      extra_environ={'username': '*anonymous'},
122
                      extra_environ={'username': '*anonymous'},
122
                      status=200)
123
                      status=201)
123
124
124
    def test_update_post_permissons(self):
125
    def test_update_post_permissons(self):
125
        self.api_post('/rest/p/test/blog/', title='test', text='test text', state='published')
126
        self.api_post('/rest/p/test/blog/', title='test', text='test text', state='published')
126
        url = '/rest' + BM.BlogPost.query.find().first().url()
127
        url = '/rest' + BM.BlogPost.query.find().first().url()
127
        self.app.post(url.encode('utf-8'),
128
        self.app.post(url.encode('utf-8'),
...
...
143
        assert_equal(r.json['state'], 'published')
144
        assert_equal(r.json['state'], 'published')
144
145
145
    def test_permission_draft_post(self):
146
    def test_permission_draft_post(self):
146
        self.api_post('/rest/p/test/blog/', title='test', text='test text', state='draft')
147
        self.api_post('/rest/p/test/blog/', title='test', text='test text', state='draft')
147
        r = self.app.get('/rest/p/test/blog/', extra_environ={'username': '*anonymous'})
148
        r = self.app.get('/rest/p/test/blog/', extra_environ={'username': '*anonymous'})
148
        assert_equal(r.json, {'posts': []})
149
        assert_equal(r.json['posts'], [])
149
        url = '/rest' + BM.BlogPost.query.find().first().url()
150
        url = '/rest' + BM.BlogPost.query.find().first().url()
150
        self.app.post(url.encode('utf-8'),
151
        self.app.post(url.encode('utf-8'),
151
                      params=dict(title='test2', text='test text2', state='published'),
152
                      params=dict(title='test2', text='test text2', state='published'),
152
                      extra_environ={'username': '*anonymous'},
153
                      extra_environ={'username': '*anonymous'},
153
                      status=401)
154
                      status=401)
...
...
160
        assert_equal(r.json['posts'][0]['title'], 'test')
161
        assert_equal(r.json['posts'][0]['title'], 'test')
161
162
162
    def test_draft_post(self):
163
    def test_draft_post(self):
163
        self.api_post('/rest/p/test/blog/', title='test', text='test text', state='draft')
164
        self.api_post('/rest/p/test/blog/', title='test', text='test text', state='draft')
164
        r = self.app.get('/rest/p/test/blog/', extra_environ={'username': '*anonymous'})
165
        r = self.app.get('/rest/p/test/blog/', extra_environ={'username': '*anonymous'})
165
        assert_equal(r.json, {'posts': []})
166
        assert_equal(r.json['posts'], [])
166
        url = '/rest' + BM.BlogPost.query.find().first().url()
167
        url = '/rest' + BM.BlogPost.query.find().first().url()
167
        self.api_post(url, state='published')
168
        self.api_post(url, state='published')
168
        r = self.app.get('/rest/p/test/blog/', extra_environ={'username': '*anonymous'})
169
        r = self.app.get('/rest/p/test/blog/', extra_environ={'username': '*anonymous'})
169
        assert_equal(r.json['posts'][0]['title'], 'test')
170
        assert_equal(r.json['posts'][0]['title'], 'test')
171
172
    def test_pagination(self):
173
        self.api_post('/rest/p/test/blog/', title='test1', text='test text1', state='published')
174
        self.api_post('/rest/p/test/blog/', title='test2', text='test text2', state='published')
175
        self.api_post('/rest/p/test/blog/', title='test3', text='test text3', state='published')
176
        r = self.api_get('/rest/p/test/blog/', limit='1', page='0')
177
        assert_equal(r.json['posts'][0]['title'], 'test3')
178
        assert_equal(r.json['count'], 3)
179
        assert_equal(r.json['limit'], 1)
180
        assert_equal(r.json['page'], 0)
181
        r = self.api_get('/rest/p/test/blog/', limit='2', page='0')
182
        assert_equal(r.json['posts'][0]['title'], 'test3')
183
        assert_equal(r.json['posts'][1]['title'], 'test2')
184
        assert_equal(r.json['count'], 3)
185
        assert_equal(r.json['limit'], 2)
186
        assert_equal(r.json['page'], 0)
187
        r = self.api_get('/rest/p/test/blog/', limit='1', page='2')
188
        assert_equal(r.json['posts'][0]['title'], 'test1')
189
        assert_equal(r.json['count'], 3)
190
        assert_equal(r.json['limit'], 1)
191
        assert_equal(r.json['page'], 2)