@@ -84,7 +84,7 @@ def test_register_post_ok(self):
84
84
postparams = '%s=1' % self .dumps (self .package_fixture_data )
85
85
res = self .app .post (offset , params = postparams , status = self .STATUS_409_CONFLICT ,
86
86
extra_environ = self .extra_environ )
87
- self .remove ()
87
+ self .remove ()
88
88
89
89
def test_register_post_bad_request (self ):
90
90
test_params = {
@@ -101,6 +101,17 @@ def test_register_post_denied(self):
101
101
postparams = '%s=1' % self .dumps (self .package_fixture_data )
102
102
res = self .app .post (offset , params = postparams , status = self .STATUS_403_ACCESS_DENIED )
103
103
104
+ def test_register_post_readonly_fields (self ):
105
+ # (ticket 662) Post a package with readonly field such as 'id'
106
+ offset = self .offset ('/rest/package' )
107
+ data = {'name' : u'test_readonly' ,
108
+ 'id' : u'not allowed to be set' ,
109
+ }
110
+ postparams = '%s=1' % self .dumps (data )
111
+ res = self .app .post (offset , params = postparams ,
112
+ status = self .STATUS_400_BAD_REQUEST ,
113
+ extra_environ = self .extra_environ )
114
+
104
115
def test_entity_get_ok (self ):
105
116
package_refs = [self .anna .name , self .anna .id ]
106
117
for ref in package_refs :
@@ -122,6 +133,28 @@ def test_entity_get_not_found(self):
122
133
res = self .app .get (offset , status = self .STATUS_404_NOT_FOUND )
123
134
self .remove ()
124
135
136
+ def test_entity_get_then_post (self ):
137
+ # (ticket 662) Ensure an entity you 'get' from a register can be
138
+ # returned by posting it back
139
+ offset = self .package_offset (self .war .name )
140
+ res = self .app .get (offset , status = self .STATUS_200_OK )
141
+ data = self .loads (res .body )
142
+ postparams = '%s=1' % self .dumps (data )
143
+ res = self .app .post (offset , params = postparams ,
144
+ status = self .STATUS_200_OK ,
145
+ extra_environ = self .extra_environ )
146
+
147
+ def test_entity_post_changed_readonly (self ):
148
+ # (ticket 662) Edit a readonly field gives error
149
+ offset = self .package_offset (self .war .name )
150
+ res = self .app .get (offset , status = self .STATUS_200_OK )
151
+ data = self .loads (res .body )
152
+ data ['id' ] = 'illegally changed value'
153
+ postparams = '%s=1' % self .dumps (data )
154
+ res = self .app .post (offset , params = postparams ,
155
+ status = self .STATUS_400_BAD_REQUEST ,
156
+ extra_environ = self .extra_environ )
157
+
125
158
def test_entity_update_denied (self ):
126
159
offset = self .anna_offset ()
127
160
postparams = '%s=1' % self .dumps (self .package_fixture_data )
0 commit comments