def test_add_failure(self):
        compute = self.fake_client_set.compute
        tcs = mock_client_set(self.mox)

        compute.servers.get(self.server.id).AndReturn(self.server)
        compute.security_groups.get(self.sg_id).AndReturn(self.sg)
        ifwrs.client_set_for_tenant(self.server.tenant_id,
                                              fallback_to_api=True) \
                .AndReturn(tcs)
        tcs.compute.servers.add_security_group(self.server, self.sg.name)\
                .AndRaise(osc_exc.BadRequest('failure'))

        self.mox.ReplayAll()
        self.interact(expected_status_code=400)
    def test_add_works(self):
        compute = self.fake_client_set.compute
        tcs = mock_client_set(self.mox)

        compute.servers.get(self.server.id).AndReturn(self.server)
        compute.security_groups.get(self.sg_id).AndReturn(self.sg)
        ifwrs.client_set_for_tenant(self.server.tenant_id,
                                              fallback_to_api=True) \
                .AndReturn(tcs)
        tcs.compute.servers.add_security_group(self.server, self.sg.name)
        ifwrs.link_for_security_group(self.sg).AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact()
        self.assertEquals(data, 'REPLY')
    def test_remove_works(self):
        compute = self.fake_client_set.compute

        compute.servers.get(self.server.id).AndReturn(self.server)
        compute.security_groups._list(
            '/servers/%s/os-security-groups' % self.server.id,
            'security_groups').AndReturn([self.sg])
        ifwrs.assert_admin_or_project_user(
            u'FWPROJECT', eperm_status=404)
        ifwrs.client_set_for_tenant(u'FWPROJECT',
                                              fallback_to_api=True) \
                .AndReturn(self.tcs)
        self.tcs.compute.servers.remove_security_group(
            self.server, self.sg.name)

        self.mox.ReplayAll()
        self.interact()
    def test_remove_other_failure(self):
        compute = self.fake_client_set.compute
        self.mox.StubOutWithMock(ifwrs, '_find_sg_on_server')

        compute.servers.get(self.server.id).AndReturn(self.server)
        ifwrs._find_sg_on_server(self.server.id, self.sg_id) \
                .AndReturn(self.sg)
        ifwrs.client_set_for_tenant(u'FWPROJECT',
                                              fallback_to_api=True) \
                .AndReturn(self.tcs)
        self.tcs.compute.servers.remove_security_group(
            self.server, self.sg.name) \
                .AndRaise(osc_exc.HttpException('something happened'))
        ifwrs._find_sg_on_server(self.server.id, self.sg_id) \
                .AndReturn(self.sg)

        self.mox.ReplayAll()
        data = self.interact(expected_status_code=500)
        self.assertTrue('something happened' in data.get('message', ''),
                        'Unexpected message: %s' % data.get('message'))