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'
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')
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')
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/')
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)
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)
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)
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)
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)
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)