325
350
response = self._delete_security_group(11111111)
326
351
self.assertEquals(response.status_int, 404)
353
def test_associate_by_non_existing_security_group_name(self):
354
body = dict(addSecurityGroup=dict(name='non-existing'))
355
req = webob.Request.blank('/v1.1/servers/1/action')
356
req.headers['Content-Type'] = 'application/json'
358
req.body = json.dumps(body)
359
response = req.get_response(fakes.wsgi_app())
360
self.assertEquals(response.status_int, 404)
362
def test_associate_by_invalid_server_id(self):
363
body = dict(addSecurityGroup=dict(name='test'))
364
self.stubs.Set(nova.db, 'security_group_get_by_name',
365
return_security_group)
366
req = webob.Request.blank('/v1.1/servers/invalid/action')
367
req.headers['Content-Type'] = 'application/json'
369
req.body = json.dumps(body)
370
response = req.get_response(fakes.wsgi_app())
371
self.assertEquals(response.status_int, 400)
373
def test_associate_without_body(self):
374
req = webob.Request.blank('/v1.1/servers/1/action')
375
body = dict(addSecurityGroup=None)
376
self.stubs.Set(nova.db, 'instance_get', return_server)
377
req.headers['Content-Type'] = 'application/json'
379
req.body = json.dumps(body)
380
response = req.get_response(fakes.wsgi_app())
381
self.assertEquals(response.status_int, 400)
383
def test_associate_no_security_group_name(self):
384
req = webob.Request.blank('/v1.1/servers/1/action')
385
body = dict(addSecurityGroup=dict())
386
self.stubs.Set(nova.db, 'instance_get', return_server)
387
req.headers['Content-Type'] = 'application/json'
389
req.body = json.dumps(body)
390
response = req.get_response(fakes.wsgi_app())
391
self.assertEquals(response.status_int, 400)
393
def test_associate_security_group_name_with_whitespaces(self):
394
req = webob.Request.blank('/v1.1/servers/1/action')
395
body = dict(addSecurityGroup=dict(name=" "))
396
self.stubs.Set(nova.db, 'instance_get', return_server)
397
req.headers['Content-Type'] = 'application/json'
399
req.body = json.dumps(body)
400
response = req.get_response(fakes.wsgi_app())
401
self.assertEquals(response.status_int, 400)
403
def test_associate_non_existing_instance(self):
404
self.stubs.Set(nova.db, 'instance_get', return_server_nonexistant)
405
body = dict(addSecurityGroup=dict(name="test"))
406
self.stubs.Set(nova.db, 'security_group_get_by_name',
407
return_security_group)
408
req = webob.Request.blank('/v1.1/servers/10000/action')
409
req.headers['Content-Type'] = 'application/json'
411
req.body = json.dumps(body)
412
response = req.get_response(fakes.wsgi_app())
413
self.assertEquals(response.status_int, 404)
415
def test_associate_non_running_instance(self):
416
self.stubs.Set(nova.db, 'instance_get', return_non_running_server)
417
self.stubs.Set(nova.db, 'security_group_get_by_name',
418
return_security_group_without_instances)
419
body = dict(addSecurityGroup=dict(name="test"))
420
req = webob.Request.blank('/v1.1/servers/1/action')
421
req.headers['Content-Type'] = 'application/json'
423
req.body = json.dumps(body)
424
response = req.get_response(fakes.wsgi_app())
425
self.assertEquals(response.status_int, 400)
427
def test_associate_already_associated_security_group_to_instance(self):
428
self.stubs.Set(nova.db, 'instance_get', return_server)
429
self.stubs.Set(nova.db, 'security_group_get_by_name',
430
return_security_group)
431
body = dict(addSecurityGroup=dict(name="test"))
432
req = webob.Request.blank('/v1.1/servers/1/action')
433
req.headers['Content-Type'] = 'application/json'
435
req.body = json.dumps(body)
436
response = req.get_response(fakes.wsgi_app())
437
self.assertEquals(response.status_int, 400)
439
def test_associate(self):
440
self.stubs.Set(nova.db, 'instance_get', return_server)
441
self.mox.StubOutWithMock(nova.db, 'instance_add_security_group')
442
nova.db.instance_add_security_group(mox.IgnoreArg(),
445
self.stubs.Set(nova.db, 'security_group_get_by_name',
446
return_security_group_without_instances)
449
body = dict(addSecurityGroup=dict(name="test"))
450
req = webob.Request.blank('/v1.1/servers/1/action')
451
req.headers['Content-Type'] = 'application/json'
453
req.body = json.dumps(body)
454
response = req.get_response(fakes.wsgi_app())
455
self.assertEquals(response.status_int, 202)
457
def test_associate_xml(self):
458
self.stubs.Set(nova.db, 'instance_get', return_server)
459
self.mox.StubOutWithMock(nova.db, 'instance_add_security_group')
460
nova.db.instance_add_security_group(mox.IgnoreArg(),
463
self.stubs.Set(nova.db, 'security_group_get_by_name',
464
return_security_group_without_instances)
467
req = webob.Request.blank('/v1.1/servers/1/action')
468
req.headers['Content-Type'] = 'application/xml'
470
req.body = """<addSecurityGroup>
472
</addSecurityGroup>"""
473
response = req.get_response(fakes.wsgi_app())
474
self.assertEquals(response.status_int, 202)
476
def test_disassociate_by_non_existing_security_group_name(self):
477
body = dict(removeSecurityGroup=dict(name='non-existing'))
478
req = webob.Request.blank('/v1.1/servers/1/action')
479
req.headers['Content-Type'] = 'application/json'
481
req.body = json.dumps(body)
482
response = req.get_response(fakes.wsgi_app())
483
self.assertEquals(response.status_int, 404)
485
def test_disassociate_by_invalid_server_id(self):
486
body = dict(removeSecurityGroup=dict(name='test'))
487
self.stubs.Set(nova.db, 'security_group_get_by_name',
488
return_security_group)
489
req = webob.Request.blank('/v1.1/servers/invalid/action')
490
req.headers['Content-Type'] = 'application/json'
492
req.body = json.dumps(body)
493
response = req.get_response(fakes.wsgi_app())
494
self.assertEquals(response.status_int, 400)
496
def test_disassociate_without_body(self):
497
req = webob.Request.blank('/v1.1/servers/1/action')
498
body = dict(removeSecurityGroup=None)
499
self.stubs.Set(nova.db, 'instance_get', return_server)
500
req.headers['Content-Type'] = 'application/json'
502
req.body = json.dumps(body)
503
response = req.get_response(fakes.wsgi_app())
504
self.assertEquals(response.status_int, 400)
506
def test_disassociate_no_security_group_name(self):
507
req = webob.Request.blank('/v1.1/servers/1/action')
508
body = dict(removeSecurityGroup=dict())
509
self.stubs.Set(nova.db, 'instance_get', return_server)
510
req.headers['Content-Type'] = 'application/json'
512
req.body = json.dumps(body)
513
response = req.get_response(fakes.wsgi_app())
514
self.assertEquals(response.status_int, 400)
516
def test_disassociate_security_group_name_with_whitespaces(self):
517
req = webob.Request.blank('/v1.1/servers/1/action')
518
body = dict(removeSecurityGroup=dict(name=" "))
519
self.stubs.Set(nova.db, 'instance_get', return_server)
520
req.headers['Content-Type'] = 'application/json'
522
req.body = json.dumps(body)
523
response = req.get_response(fakes.wsgi_app())
524
self.assertEquals(response.status_int, 400)
526
def test_disassociate_non_existing_instance(self):
527
self.stubs.Set(nova.db, 'instance_get', return_server_nonexistant)
528
body = dict(removeSecurityGroup=dict(name="test"))
529
self.stubs.Set(nova.db, 'security_group_get_by_name',
530
return_security_group)
531
req = webob.Request.blank('/v1.1/servers/10000/action')
532
req.headers['Content-Type'] = 'application/json'
534
req.body = json.dumps(body)
535
response = req.get_response(fakes.wsgi_app())
536
self.assertEquals(response.status_int, 404)
538
def test_disassociate_non_running_instance(self):
539
self.stubs.Set(nova.db, 'instance_get', return_non_running_server)
540
self.stubs.Set(nova.db, 'security_group_get_by_name',
541
return_security_group)
542
body = dict(removeSecurityGroup=dict(name="test"))
543
req = webob.Request.blank('/v1.1/servers/1/action')
544
req.headers['Content-Type'] = 'application/json'
546
req.body = json.dumps(body)
547
response = req.get_response(fakes.wsgi_app())
548
self.assertEquals(response.status_int, 400)
550
def test_disassociate_already_associated_security_group_to_instance(self):
551
self.stubs.Set(nova.db, 'instance_get', return_server)
552
self.stubs.Set(nova.db, 'security_group_get_by_name',
553
return_security_group_without_instances)
554
body = dict(removeSecurityGroup=dict(name="test"))
555
req = webob.Request.blank('/v1.1/servers/1/action')
556
req.headers['Content-Type'] = 'application/json'
558
req.body = json.dumps(body)
559
response = req.get_response(fakes.wsgi_app())
560
self.assertEquals(response.status_int, 400)
562
def test_disassociate(self):
563
self.stubs.Set(nova.db, 'instance_get', return_server)
564
self.mox.StubOutWithMock(nova.db, 'instance_remove_security_group')
565
nova.db.instance_remove_security_group(mox.IgnoreArg(),
568
self.stubs.Set(nova.db, 'security_group_get_by_name',
569
return_security_group)
572
body = dict(removeSecurityGroup=dict(name="test"))
573
req = webob.Request.blank('/v1.1/servers/1/action')
574
req.headers['Content-Type'] = 'application/json'
576
req.body = json.dumps(body)
577
response = req.get_response(fakes.wsgi_app())
578
self.assertEquals(response.status_int, 202)
580
def test_disassociate_xml(self):
581
self.stubs.Set(nova.db, 'instance_get', return_server)
582
self.mox.StubOutWithMock(nova.db, 'instance_remove_security_group')
583
nova.db.instance_remove_security_group(mox.IgnoreArg(),
586
self.stubs.Set(nova.db, 'security_group_get_by_name',
587
return_security_group)
590
req = webob.Request.blank('/v1.1/servers/1/action')
591
req.headers['Content-Type'] = 'application/xml'
593
req.body = """<removeSecurityGroup>
595
</removeSecurityGroup>"""
596
response = req.get_response(fakes.wsgi_app())
597
self.assertEquals(response.status_int, 202)
329
600
class TestSecurityGroupRules(test.TestCase):