class test_user_service(unittest.TestCase): def setUp(self): self.dbClient = MongoClient() self.db = self.dbClient.test_foodbeazt_database self.db.user_collection.drop() self.service = UserService(self.db) def get_model(self, email): item = {"name": "test", "username": email, "email": email, "auth_type": "google", "registered_ip": "10.0.0.1"} return item def test_create_user(self): no = str(random.randint(1, 10000)) item = self.get_model("test" + no + "@test.com") id = self.service.create(item) assert id is not None return id def test_duplicate_user(self): item = self.get_model("*****@*****.**") self.service.create(item) try: self.service.create(item) assert False except DuplicateUserException as e: assert True def test_get_user_by_email(self): item = self.get_model("*****@*****.**") self.service.create(item) item = self.service.get_by_email("*****@*****.**") assert item is not None assert item["email"] == "*****@*****.**" def test_get_all_users(self): self.test_create_user() items = self.service.search() assert items is not None assert len(items) > 0 def test_delete_user(self): id = self.test_create_user() self.service.delete(str(id)) def test_update_user(self): id = self.test_create_user() item = self.test_get_by_id(str(id)) item['name'] = "updated test name" item = self.service.update(item) assert item is not None assert item['name'] == 'updated test name' assert 'updated_at' in item def test_get_by_id(self, id=None): if not id: id = self.test_create_user() item = self.service.get_by_id(id) assert item is not None return item
def get_or_create_user(item): service = UserService(mongo.db) email = item['email'] prev = service.get_by_email(email) if prev: return prev logger.info("Creating new user...[%s]" % email) tenant_id = default_tenantId() if email == app.config['SUPER_ADMIN_EMAIL']: roles = ["tenant_admin", 'member'] else: roles = ["member"] user = { 'username': email, 'email': email, 'name': item['name'], 'auth_type': 'google', 'tenant_id': tenant_id, 'roles': roles, 'identity': item.get('id', item.get('sub', None)) } service.create(user) return user
def setup(client, dbname='foodbeaztDb', sample_data=False, debug=True): global log_enabled log_enabled = debug db = client[dbname] log("Checking admin tenant") tenant_service = TenantService(db) user_service = UserService(db) pincode_service = PincodeService(db) if not tenant_service.check_name_exists(None, "FoodBeazt"): log("Creating admin tenant") item = {"name": "FoodBeazt", "description": "super admin tenant", "website": "http://www.foodbeazt.in", "url": "http://www.foodbeazt.in", "type": "super_admin", "logo": "foodbeazt_logo.png", "contact": {"name": "admin", "email": "*****@*****.**", "phone": "+91 7373730484"}, "registered_ip": "10.0.0.1", "address": {"address": "Puducherry", "zipcode": "605001", "country": "INDIA", "state": "Puducherry"}} tenant_id = tenant_service.create(item) item['tenant_id'] = tenant_id tenant_service.update(item) log('\nTenant:') tenant = tenant_service.get_by_name("FoodBeazt") log(json.dumps(tenant, default=json_util.default)) tenant_id = tenant['_id'] log('\nUser:'******'pincode': '605001'} pincode_service.save(pincode) if sample_data: log('\nCreating sample product data:') create_sample_data(db, tenant_id)