@@ -69,3 +69,48 @@ def test_flavor_contents(self):
6969 self .assertEqual (params ['zone' ], 'any' )
7070 self .assertEqual (params ['size' ], 'm1.medium' )
7171 self .assertTrue (params ['image' ])
72+
73+ def test_flavor_update (self ):
74+ """Tests that flavors can be updated by the client."""
75+ url = '/api/flavors'
76+ params = {
77+ 'region' : 'us-west-2' ,
78+ 'size' : 't1.micro' ,
79+ }
80+ body = {'id' : 'autotest' , 'provider' : 'autotest' , 'params' : json .dumps (params )}
81+ response = self .client .post (url , json .dumps (body ), content_type = 'application/json' )
82+ self .assertEqual (response .status_code , 201 )
83+ flavor_id = response .data ['id' ]
84+ response = self .client .get ('/api/flavors' )
85+ self .assertEqual (response .status_code , 200 )
86+ self .assertEqual (len (response .data ['results' ]), 1 )
87+ url = "/api/flavors/{flavor_id}" .format (** locals ())
88+ response = self .client .get (url )
89+ self .assertEqual (response .status_code , 200 )
90+ uuid = response .data ['uuid' ]
91+ self .assertRegexpMatches (uuid , r'^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$' )
92+ params = json .loads (response .data ['params' ])
93+ self .assertEqual (params ['region' ], 'us-west-2' )
94+ self .assertEqual (params ['zone' ], 'any' )
95+ self .assertEqual (params ['size' ], 't1.micro' )
96+ self .assertTrue (params ['image' ])
97+ params = {
98+ 'size' : 'c1.xlarge' ,
99+ 'image' : 'ami-c98d1bf9' ,
100+ }
101+ body = {'id' : flavor_id , 'params' : json .dumps (params )}
102+ response = self .client .patch (url , json .dumps (body ), content_type = 'application/json' )
103+ self .assertEqual (response .status_code , 200 )
104+ flavor_id = response .data ['id' ]
105+ response = self .client .get ('/api/flavors' )
106+ self .assertEqual (response .status_code , 200 )
107+ self .assertEqual (len (response .data ['results' ]), 1 )
108+ url = "/api/flavors/{flavor_id}" .format (** locals ())
109+ response = self .client .get (url )
110+ self .assertEqual (response .status_code , 200 )
111+ self .assertEqual (response .data ['uuid' ], uuid )
112+ params = json .loads (response .data ['params' ])
113+ self .assertNotIn ('region' , params )
114+ self .assertNotIn ('zone' , params )
115+ self .assertEqual (params ['size' ], 'c1.xlarge' )
116+ self .assertEqual (params ['image' ], 'ami-c98d1bf9' )
0 commit comments