def usergroup_create(): """Add a usergroup in the database""" # Only POST data are handled if request.method != "POST": return utils.response("ERROR: POST method is required ", 405) # Simplification for the reading name = request.form["name"] comment = request.form["comment"] # Check for required fields if not name: return utils.response("ERROR: The name is required ", 417) # Check unicity for name query = db.session.query(usergroup.Usergroup.name)\ .filter_by(name=name).first() if query is not None: return utils.response('ERROR: The name "' + name + \ '" is already used by another usergroup ', 417) g = usergroup.Usergroup(name=name, comment=comment) db.session.add(g) # Try to add the usergroup on the database try: db.session.commit() except exc.SQLAlchemyError as e: return utils.response('ERROR: "' + name + '" -> ' + \ e.message, 409) return utils.response('OK: "' + name + '" -> created', 200)
def test_remove_usergroup(self): """Target removing a usergroup succeeds""" name = "clever_server" hostname = "127.0.0.1" port = 54 sshoptions = "--zap" comment = "Magnificent target" usergroupname = "VVVVVV" comment_usergroup = "Captain Viridian to the rescue" t = target.Target(name=name, hostname=hostname, port=port, sshoptions=sshoptions, comment=comment) ug = usergroup.Usergroup(name=usergroupname, comment=comment_usergroup) db.session.add(t) db.session.commit() t.addusergroup(ug) db.session.commit() t.rmusergroup(ug) db.session.commit() t_db = db.session.query(target.Target).filter_by(name=name).first() assert_equal(t_db.gmembers, [])
def test_add_usergroup_already_in_target(self): """Target adding a usergroup already in target does nothing (but doesn't raise error) """ name = "clever_server" hostname = "127.0.0.1" port = 54 sshoptions = "--zap" comment = "Magnificent target" usergroupname = "VVVVVV" comment_usergroup = "Captain Viridian to the rescue" t = target.Target(name=name, hostname=hostname, port=port, sshoptions=sshoptions, comment=comment) ug = usergroup.Usergroup(name=usergroupname, comment=comment_usergroup) db.session.add(t) db.session.commit() t.addusergroup(ug) db.session.commit() t.addusergroup(ug) db.session.commit() t_db = db.session.query(target.Target).filter_by(name=name).first() assert_equal(t_db.gmembers, [ug])
def test_create_existing_name(self): """Target creation in database with an already used name fails """ name = "clever_server" hostname = "127.0.0.1" port = 54 sshoptions = "--zap" comment = "Magnificent target" name = "*****@*****.**" sshkey = "railway" comment_user = "******" user_list = [] usergroupname = "Chevaliers_du_zodiaque" comment_usergroup = "Energie_du_cosmos" usergroup_list = [] u = user.User(name=name, sshkey=sshkey, comment=comment_user) user_list.append(u) ug = usergroup.Usergroup(name=usergroupname, comment=comment_usergroup) usergroup_list.append(ug) t = target.Target(name=name, hostname=hostname, port=port, sshoptions=sshoptions, comment=comment, members=user_list, gmembers=usergroup_list) db.session.add(t) db.session.commit() t = target.Target(name=name, hostname="a great host", port=port, sshoptions=sshoptions, comment=comment, members=user_list, gmembers=usergroup_list) db.session.add(t) db.session.commit()
def test_create(self): """Target creation in database succeeds""" targetname = "clever_server" hostname = "127.0.0.1" port = 54 sshoptions = "--zap" comment = "Magnificent target" output = """Name: clever_server\nHostname: 127.0.0.1\nPort: 54\nSSH options: --zap\nComment: Magnificent target\nAttached users: [email protected]\nUsergroup list: Chevaliers_du_zodiaque\nUsers who can access this target: [email protected]\nAll usergroups: Chevaliers_du_zodiaque\nMember of the following targetgroups: """ username = "******" sshkey = "railway" comment_user = "******" user_list = [] usergroupname = "Chevaliers_du_zodiaque" comment_usergroup = "Energie_du_cosmos" usergroup_list = [] u = user.User(name=username, sshkey=sshkey, comment=comment_user) user_list.append(u) ug = usergroup.Usergroup(name=usergroupname, comment=comment_usergroup) usergroup_list.append(ug) t = target.Target(name=targetname, hostname=hostname, port=port, sshoptions=sshoptions, comment=comment, members=user_list, gmembers=usergroup_list) db.session.add(t) db.session.commit() t_db = db.session.query( target.Target).filter_by(name="clever_server").first() assert_equal(t_db.name, targetname) assert_equal(t_db.hostname, hostname) assert_equal(t_db.port, port) assert_equal(t_db.sshoptions, sshoptions) assert_equal(t_db.comment, comment) assert_equal(repr(t_db), output)
def test_edit(self): """Target edition in database succeeds""" targetname = "clever_server" hostname = "127.0.0.1" port = 54 sshoptions = "--zap" comment = "Magnificent target" new_targetname = "cleverer_super_server" new_hostname = "192.135.23.54" new_port = 80 new_sshoptions = "--plop" new_comment = "Marvellous target" username = "******" sshkey = "railway" comment_user = "******" username2 = "*****@*****.**" sshkey2 = "rough tell" comment_user2 = "slow" user_list = [] usergroupname = "Chevaliers_du_zodiaque" comment_usergroup = "Energie_du_cosmos" usergroupname2 = "Chevaliers d'or" comment_usergroup2 = "COSMOOOOS" usergroup_list = [] u = user.User(name=username, sshkey=sshkey, comment=comment_user) user_list.append(u) ug = usergroup.Usergroup(name=usergroupname, comment=comment_usergroup) usergroup_list.append(ug) t = target.Target(name=targetname, hostname=hostname, port=port, sshoptions=sshoptions, comment=comment, members=user_list, gmembers=usergroup_list) db.session.add(t) db.session.commit() u = user.User(name=username2, sshkey=sshkey2, comment=comment_user2) user_list.append(u) ug = usergroup.Usergroup(name=usergroupname2, comment=comment_usergroup2) usergroup_list.append(ug) target_to_edit = db.session.query( target.Target).filter_by(name="clever_server") updated_rows = target_to_edit.update({ "name": new_targetname, "hostname": new_hostname, "port": new_port, "sshoptions": new_sshoptions, "comment": new_comment }) db.session.commit() t_edit = db.session.query( target.Target).filter_by(name=new_targetname).first() assert_equal(updated_rows, 1) assert_equal(t.id, t_edit.id) assert_equal(t_edit.name, new_targetname) assert_equal(t_edit.hostname, new_hostname) assert_equal(t_edit.port, new_port) assert_equal(t_edit.sshoptions, new_sshoptions) assert_equal(t_edit.comment, new_comment)