コード例 #1
0
ファイル: views.py プロジェクト: huygun/wstore
    def create(self, request):
        if not request.user.is_staff:  # Only an admin could register the store in a marketplace
            return build_response(request, 403, 'Forbidden')

        name = None
        host = None

        # Get contents from the request
        try:
            content = json.loads(request.raw_post_data)
            name = content['name']
            host = content['host']
        except:
            msg = "Request body is not valid JSON data"
            return build_response(request, 400, msg)

        # Check data formats
        if not is_valid_id(name):
            return build_response(request, 400, 'Invalid name format')

        if not is_valid_url(host):
            return build_response(request, 400, 'Invalid URL format')
        
        code = 201
        msg = 'Created'
        try:
            # Register the store in the selected marketplace
            register_on_market(name, host, get_current_site(request).domain)
        except Exception, e:
            if e.message == 'Bad Gateway':
                code = 502
                msg = e.message
            else:
                code = 400
                msg = 'Bad request'
コード例 #2
0
ファイル: tests.py プロジェクト: huygun/wstore
    def test_registering_already_registered(self):

        self.adaptor_object.add_store.side_effect = HTTPError('site', 500, 'Internal server error', None, None)
        try:
            markets_management.register_on_market('test_market', 'http://testmarket.com', 'http://currentsiteerr.com')
        except Exception as e:
            error = True
            msg = e.message

        self.assertTrue(error)
        self.assertEquals(msg, 'Bad Gateway')
コード例 #3
0
ファイル: tests.py プロジェクト: huygun/wstore
    def test_registering_existing_name(self):

        markets_management.Marketplace.objects.get.side_effect = None
        error = False
        try:
            markets_management.register_on_market('test_market1', 'http://testmarket.com', 'http://currentsite.com')
        except Exception as e:
            error = True
            msg = e.message

        self.assertTrue(error)
        self.assertEquals(msg, 'Marketplace already registered')
コード例 #4
0
ファイル: tests.py プロジェクト: huygun/wstore
    def test_basic_registering_on_market(self, data):

        markets_management.register_on_market(data['name'], data['host'], data['site'])

        # Check calls
        markets_management.MarketAdaptor.assert_called_with('http://testmarket.com/')
        markets_management.Marketplace.objects.get.assert_called_with(name=data['name'])
        self.adaptor_object.add_store.assert_called_with({
            'store_name': 'test_store',
            'store_uri': data['site']
        })
        markets_management.Marketplace.objects.create.assert_called_with(name=data['name'], host='http://testmarket.com/')
コード例 #5
0
ファイル: tests.py プロジェクト: huygun/wstore
    def test_registering_creation_error(self):
        # Mock Marketplace
        markets_management.Marketplace.objects.create.side_effect = Exception('Creation error')

        error = False
        msg = None
        try:
            markets_management.register_on_market('test_market', 'http://testmarket.com', 'http://currentsite.com')
        except Exception as e:
            error = True
            msg = e.message

        self.assertTrue(error)
        self.assertEquals('Creation error', msg)
コード例 #6
0
    def test_basic_registering_on_market(self, data, side_effect=None, err_type=None, err_msg=None):

        if side_effect:
            side_effect(self)

        error = None
        try:
            markets_management.register_on_market(self._user, data['name'], data['host'], data['api_version'], data['credentials'], data['site'])
        except Exception as e:
            error = e

        if not err_type:
            self.assertEquals(error, None)

            # Check calls
            usr = None
            passwd = None
            if data['credentials'] is not None:
                usr = data['credentials']['username']
                passwd = data['credentials']['passwd']

            cred = MarketCredentials(
                username=usr,
                passwd=passwd
            )
            markets_management.Marketplace.assert_called_with(
                name=data['name'],
                host='http://testmarket.com/',
                api_version=data['api_version'],
                credentials=cred
            )

            markets_management.marketadaptor_factory.assert_called_with(self._market_obj, self._user)

            calls = [call(name=data['name']), call(host='http://testmarket.com/')]
            markets_management.Marketplace.objects.filter.assert_has_calls(calls)
            self.assertEquals(markets_management.Marketplace.objects.filter.call_count, 2)

            self.adaptor_object.add_store.assert_called_with({
                'store_name': 'test_store',
                'store_uri': data['site']
            })
            self._market_obj.save.assert_called_once_with()

        else:
            self.assertTrue(isinstance(error, err_type))
            self.assertEquals(unicode(e), err_msg)
コード例 #7
0
ファイル: tests.py プロジェクト: Fiware/apps.Wstore
    def test_basic_registering_on_market(self, data, side_effect=None, err_type=None, err_msg=None):

        if side_effect:
            side_effect(self)

        error = None
        try:
            markets_management.register_on_market(
                self._user, data["name"], data["host"], data["api_version"], data["credentials"], data["site"]
            )
        except Exception as e:
            error = e

        if not err_type:
            self.assertEquals(error, None)

            # Check calls
            usr = None
            passwd = None
            if data["credentials"] is not None:
                usr = data["credentials"]["username"]
                passwd = data["credentials"]["passwd"]

            cred = MarketCredentials(username=usr, passwd=passwd)
            markets_management.Marketplace.assert_called_with(
                name=data["name"], host="http://testmarket.com/", api_version=data["api_version"], credentials=cred
            )

            markets_management.marketadaptor_factory.assert_called_with(self._market_obj, self._user)

            calls = [call(name=data["name"]), call(host="http://testmarket.com/")]
            markets_management.Marketplace.objects.filter.assert_has_calls(calls)
            self.assertEquals(markets_management.Marketplace.objects.filter.call_count, 2)

            self.adaptor_object.add_store.assert_called_with({"store_name": "test_store", "store_uri": data["site"]})
            self._market_obj.save.assert_called_once_with()

        else:
            self.assertTrue(isinstance(error, err_type))
            self.assertEquals(unicode(e), err_msg)
コード例 #8
0
ファイル: tests.py プロジェクト: jartieda/wstore
    def test_basic_registering_on_market(self, data, side_effect=None, err_type=None, err_msg=None):

        if side_effect:
            side_effect(self)

        error = None
        try:
            markets_management.register_on_market(data['name'], data['host'], data['site'])
        except Exception as e:
            error = e

        if not err_type:
            self.assertEquals(error, None)
            # Check calls
            markets_management.MarketAdaptor.assert_called_with('http://testmarket.com/')
            markets_management.Marketplace.objects.get.assert_called_with(name=data['name'])
            self.adaptor_object.add_store.assert_called_with({
                'store_name': 'test_store',
                'store_uri': data['site']
            })
            markets_management.Marketplace.objects.create.assert_called_with(name=data['name'], host='http://testmarket.com/')
        else:
            self.assertTrue(isinstance(error, err_type))
            self.assertEquals(unicode(e), err_msg)
コード例 #9
0
ファイル: views.py プロジェクト: Fiware/apps.Wstore
    def create(self, request):

        if not request.user.is_staff:  # Only an admin can register the store in a marketplace
            return build_response(request, 403, 'You are not allowed to register WStore in a Marketplace')

        name = None
        host = None
        api_version = None

        # Get contents from the request
        try:
            content = json.loads(request.raw_post_data)
            name = content['name']
            host = content['host']
            api_version = content['api_version']
        except:
            msg = "Request body is not valid JSON data"
            return build_response(request, 400, msg)

        # Check data formats
        if not is_valid_id(name):
            return build_response(request, 400, 'Invalid name format')

        if not is_valid_url(host):
            return build_response(request, 400, 'Invalid URL format')

        if not api_version.isdigit():
            return build_response(request, 400, 'Invalid API version')

        api_version = int(api_version)

        if api_version != 1 and api_version != 2:
            return build_response(request, 400, 'Invalid API version')

        credentials = None
        # Validate credentials if required
        if api_version == 1 or not settings.OILAUTH:
            if 'credentials' not in content:
                return build_response(request, 400, 'Missing required field credentials')

            if 'username' not in content['credentials']:
                return build_response(request, 400, 'Missing required field username in credentials')

            if 'passwd' not in content['credentials']:
                return build_response(request, 400, 'Missing required field passwd in credentials')

            credentials = content['credentials']

        code = 201
        msg = 'Created'
        try:
            # Register the store in the selected marketplace
            register_on_market(request.user, name, host, api_version, credentials, get_current_site(request).domain)
        except HTTPError:
            code = 502
            msg = "The Marketplace has failed registering the store"
        except ConflictError as e:
            code = 409
            msg = unicode(e)
        except Exception as e:
            code = 500
            msg = unicode(e)

        return build_response(request, code, msg)
コード例 #10
0
    def create(self, request):

        if not request.user.is_staff:  # Only an admin can register the store in a marketplace
            return build_response(
                request, 403,
                'You are not allowed to register WStore in a Marketplace')

        name = None
        host = None
        api_version = None

        # Get contents from the request
        try:
            content = json.loads(request.raw_post_data)
            name = content['name']
            host = content['host']
            api_version = content['api_version']
        except:
            msg = "Request body is not valid JSON data"
            return build_response(request, 400, msg)

        # Check data formats
        if not is_valid_id(name):
            return build_response(request, 400, 'Invalid name format')

        if not is_valid_url(host):
            return build_response(request, 400, 'Invalid URL format')

        if not api_version.isdigit():
            return build_response(request, 400, 'Invalid API version')

        api_version = int(api_version)

        if api_version != 1 and api_version != 2:
            return build_response(request, 400, 'Invalid API version')

        credentials = None
        # Validate credentials if required
        if api_version == 1 or not settings.OILAUTH:
            if 'credentials' not in content:
                return build_response(request, 400,
                                      'Missing required field credentials')

            if 'username' not in content['credentials']:
                return build_response(
                    request, 400,
                    'Missing required field username in credentials')

            if 'passwd' not in content['credentials']:
                return build_response(
                    request, 400,
                    'Missing required field passwd in credentials')

            credentials = content['credentials']

        code = 201
        msg = 'Created'
        try:
            # Register the store in the selected marketplace
            register_on_market(request.user, name, host, api_version,
                               credentials,
                               get_current_site(request).domain)
        except HTTPError:
            code = 502
            msg = "The Marketplace has failed registering the store"
        except ConflictError as e:
            code = 409
            msg = unicode(e)
        except Exception as e:
            code = 500
            msg = unicode(e)

        return build_response(request, code, msg)