Example #1
0
    def test_post_node_success(self, m_load_neighbordb, m_repository):
        node = create_node()

        definition = create_definition()
        definition.add_action()

        cfg = {'return_value.exists.return_value': False}
        m_repository.configure_mock(**cfg)

        cfg = {'return_value.match_node.return_value': [Mock()]}
        m_load_neighbordb.configure_mock(**cfg)

        request = Request.blank('/nodes', body=node.as_json(), method='POST',
                                headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        args_list = list()
        args_list.append('nodes/%s/%s' % (node.serialnumber, DEFINITION_FN))
        args_list.append('nodes/%s/%s' % (node.serialnumber, PATTERN_FN))

        for arg in args_list:
            m_repository.return_value.add_file.assert_any_call(arg)

        location = 'http://localhost/nodes/%s' % node.serialnumber
        self.assertEqual(resp.status_code, constants.HTTP_STATUS_CREATED)
        self.assertEqual(resp.location, location)
Example #2
0
    def test_post_node_success(self, m_load_neighbordb, m_repository):
        node = create_node()

        definition = create_definition()
        definition.add_action()

        cfg = {'return_value.exists.return_value': False}
        m_repository.configure_mock(**cfg)

        cfg = {'return_value.match_node.return_value': [Mock()]}
        m_load_neighbordb.configure_mock(**cfg)

        request = Request.blank('/nodes',
                                body=node.as_json(),
                                method='POST',
                                headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        args_list = list()
        args_list.append('nodes/%s/%s' % (node.serialnumber, DEFINITION_FN))
        args_list.append('nodes/%s/%s' % (node.serialnumber, PATTERN_FN))

        for arg in args_list:
            m_repository.return_value.add_file.assert_any_call(arg)

        location = 'http://localhost/nodes/%s' % node.serialnumber
        self.assertEqual(resp.status_code, constants.HTTP_STATUS_CREATED)
        self.assertEqual(resp.location, location)
Example #3
0
    def test_get_bootstrap_misconfigured(self, m_substitute):
        m_substitute.side_effect = KeyError

        request = Request.blank('/bootstrap', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, constants.HTTP_STATUS_BAD_REQUEST)
        self.assertEqual(resp.content_type, constants.CONTENT_TYPE_HTML)
Example #4
0
    def test_get_bootstrap_misconfigured(self, m_substitute):
        m_substitute.side_effect = KeyError

        request = Request.blank('/bootstrap', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, constants.HTTP_STATUS_BAD_REQUEST)
        self.assertEqual(resp.content_type, constants.CONTENT_TYPE_HTML)
Example #5
0
    def test_missing_required_attributes(self, m_repository):
        url = '/nodes'
        body = json.dumps(dict())

        request = Request.blank(url, body=body, method='POST',
                                headers=ztp_headers())

        resp = request.get_response(ztpserver.controller.Router())
        self.assertEqual(resp.status_code, constants.HTTP_STATUS_BAD_REQUEST)
Example #6
0
    def test_get_bootstrap_inaccessible(self):
        cfg = {'return_value.get_file.side_effect': FileObjectError}
        self.m_repository.configure_mock(**cfg)

        request = Request.blank('/bootstrap', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, constants.HTTP_STATUS_BAD_REQUEST)
        self.assertEqual(resp.content_type, constants.CONTENT_TYPE_HTML)
Example #7
0
    def test_get_bootstrap_inaccessible(self):
        cfg = {'return_value.get_file.side_effect': FileObjectError}
        self.m_repository.configure_mock(**cfg)

        request = Request.blank('/bootstrap', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, constants.HTTP_STATUS_BAD_REQUEST)
        self.assertEqual(resp.content_type, constants.CONTENT_TYPE_HTML)
Example #8
0
    def test_get_bootstrap_success(self, m_substitute):
        contents = random_string()
        m_substitute.return_value = contents

        request = Request.blank('/bootstrap', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, constants.HTTP_STATUS_OK)
        self.assertEqual(resp.content_type, constants.CONTENT_TYPE_PYTHON)
        self.assertEqual(resp.body, contents)
Example #9
0
    def test_get_bootstrap_success(self, m_substitute):
        contents = random_string()
        m_substitute.return_value = contents

        request = Request.blank('/bootstrap', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, constants.HTTP_STATUS_OK)
        self.assertEqual(resp.content_type, constants.CONTENT_TYPE_PYTHON)
        self.assertEqual(resp.body, contents)
Example #10
0
    def test_missing_required_attributes(self, m_repository):
        url = '/nodes'
        body = json.dumps(dict())

        request = Request.blank(url,
                                body=body,
                                method='POST',
                                headers=ztp_headers())

        resp = request.get_response(ztpserver.controller.Router())
        self.assertEqual(resp.status_code, constants.HTTP_STATUS_BAD_REQUEST)
    def test_missing_required_attributes(self):
        url = '/nodes'
        body = json.dumps(dict())

        ztpserver.controller.create_file_store = Mock()

        request = Request.blank(url, body=body, method='POST',
                                headers=ztp_headers())

        resp = request.get_response(ztpserver.controller.Router())
        self.assertEqual(resp.status_code, 400)
    def test_get_bootstrap(self):

        contents = random_string()

        filestore = Mock()
        ztpserver.controller.create_file_store = filestore
        filestore.return_value.get_file.return_value = Mock(contents=contents)

        request = Request.blank('/bootstrap', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.content_type, 'text/x-python')
        self.assertEqual(resp.body, contents)
Example #13
0
    def test_post_config(self, m_repository):
        url = '/nodes'
        serialnumber = random_string()
        config = random_string()
        body = json.dumps(dict(serialnumber=serialnumber, config=config))

        m_repository.return_value.exists.return_value = False

        request = Request.blank(url, body=body, method='POST',
                                headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        location = 'http://localhost/nodes/%s' % serialnumber
        self.assertEqual(resp.status_code, constants.HTTP_STATUS_CREATED)
        self.assertEqual(resp.location, location)
Example #14
0
    def test_post_config(self, m_repository):
        url = '/nodes'
        serialnumber = random_string()
        config = random_string()
        body = json.dumps(dict(serialnumber=serialnumber, config=config))

        m_repository.return_value.exists.return_value = False

        request = Request.blank(url,
                                body=body,
                                method='POST',
                                headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        location = 'http://localhost/nodes/%s' % serialnumber
        self.assertEqual(resp.status_code, constants.HTTP_STATUS_CREATED)
        self.assertEqual(resp.location, location)
    def test_node_exists(self):
        url = '/nodes'
        systemmac = random_string()
        body = json.dumps(dict(systemmac=systemmac))

        filestore = Mock()
        filestore.exists.return_value = True
        ztpserver.controller.create_file_store = filestore

        request = Request.blank(url, body=body, method='POST',
                                headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        location = 'http://localhost/nodes/%s' % systemmac

        self.assertTrue(filestore.return_value.write_file.called)
        self.assertEqual(resp.status_code, 409)
        self.assertEqual(resp.location, location)
    def test_get_bootstrap_config(self):

        logging = [dict(destination=random_string(), level=random_string())]
        xmpp = dict(username=random_string(), domain=random_string(),
                    password=random_string(), rooms=[random_string()])
        conf = dict(logging=logging, xmpp=xmpp)
        conf = json.dumps(conf)

        filestore = Mock()
        ztpserver.controller.create_file_store = filestore
        filestore.return_value.get_file.return_value.contents = conf

        request = Request.blank('/bootstrap/config', headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.content_type, 'application/json')
        self.assertEqual(resp.body, conf)
    def test_post_config(self):
        url = '/nodes'
        systemmac = random_string()
        config = random_string()
        body = json.dumps(dict(systemmac=systemmac, config=config))

        filestore = Mock()
        filestore.return_value.exists.return_value = False
        ztpserver.controller.create_file_store = filestore

        request = Request.blank(url, body=body, method='POST',
                                headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        location = 'http://localhost/nodes/%s' % systemmac
        filename = '%s/startup-config' % systemmac

        filestore.return_value.add_folder.assert_called_with(systemmac)
        filestore.return_value.write_file.assert_called_with(filename, config)
        self.assertEqual(resp.status_code, 201)
        self.assertEqual(resp.location, location)
    def test_post_node_success(self):
        node = create_node()

        definition_file = create_definition()
        definition_file.add_action()

        filestore = Mock()
        filestore.return_value.exists.return_value = False
        filestore.return_value.get_file.return_value.contents = \
            definition_file.as_yaml()

        ztpserver.controller.create_file_store = filestore

        ztpserver.neighbordb.topology.match_node = Mock(return_value=[Mock()])

        request = Request.blank('/nodes', body=node.as_json(), method='POST',
                                headers=ztp_headers())
        resp = request.get_response(ztpserver.controller.Router())

        location = 'http://localhost/nodes/%s' % node.systemmac
        self.assertEqual(resp.status_code, 201)
        self.assertEqual(resp.location, location)