def create_backend(topology_st, request): """Create backend "dc=backend,dc=test" / backendRoot """ sys.stdout = io.StringIO() args = FakeArgs() args.cn = BE_NAME args.be_name = BE_NAME args.suffix = False args.nsslapd_suffix = SUFFIX args.skip_subsuffixes = False args.json = False args.parent_suffix = False args.create_entries = True args.suffix = SUFFIX backend_create(topology_st.standalone, None, None, args) check_output("The database was successfully created") def fin(): sys.stdout = io.StringIO() args = FakeArgs() args.cn = BE_NAME args.be_name = BE_NAME args.suffix = SUFFIX args.skip_subsuffixes = False args.json = False # Delete backend backend_delete(topology_st.standalone, None, None, args, warn=False) check_output("successfully deleted") # Verify it's removed args.suffix = False backend_list(topology_st.standalone, None, None, args) check_output("backendroot", missing=True) request.addfinalizer(fin)
def test_backend_cli(topology_st, create_backend): """Test creating, listing, getting, and deleting a backend (and subsuffix) :id: 800f432a-52ab-4661-ac66-a2bdd9b984d7 :setup: Standalone instance :steps: 1. List backends 2. Get backend by suffix 3. Get backend by DN 4. Add subsuffix 5. Verify subsuffix 6. Modify subsuffix 7. Delete subsuffix 8. Verify subsuffix is removed 9. Modify backend 10. Verify modify worked 11. Test monitor works :expectedresults: 1. Success 2. Success 3. Success 4. Success 5. Success 6. Success 7. Success 8. Success 9. Success 10. Success 11. Success """ topology_st.logcap = LogCapture() sys.stdout = io.StringIO() args = FakeArgs() args.cn = BE_NAME args.be_name = BE_NAME args.suffix = False args.nsslapd_suffix = SUFFIX args.skip_subsuffixes = False args.json = False args.parent_suffix = False args.create_entries = True # List backend backend_list(topology_st.standalone, None, topology_st.logcap.log, args) check_output(SUFFIX) # Get backend by by name args.selector = BE_NAME backend_get(topology_st.standalone, None, topology_st.logcap.log, args) check_output(BE_NAME) # Get backend by DN args.dn = 'cn=backendRoot,cn=ldbm database,cn=plugins,cn=config' backend_get_dn(topology_st.standalone, None, topology_st.logcap.log, args) check_output(BE_NAME) # Add subsuffix args.parent_suffix = SUFFIX args.suffix = SUB_SUFFIX args.be_name = SUB_BE_NAME backend_create(topology_st.standalone, None, topology_st.logcap.log, args) check_output("The database was successfully created") # Verify subsuffix args.suffix = False backend_list(topology_st.standalone, None, topology_st.logcap.log, args) check_output(SUB_SUFFIX) # Modify subsuffix args.enable = False args.disable = False args.add_referral = False args.del_referral = False args.cache_size = False args.cache_memsize = False args.dncache_memsize = False args.enable_readonly = True # Setting nsslapd-readonly to "on" args.disable_readonly = False backend_set(topology_st.standalone, None, topology_st.logcap.log, args) check_output("successfully updated") # Verify modified worked args.selector = SUB_BE_NAME backend_get(topology_st.standalone, None, topology_st.logcap.log, args) check_output("nsslapd-readonly: on") # Delete subsuffix args.suffix = SUB_SUFFIX backend_delete(topology_st.standalone, None, topology_st.logcap.log, args, warn=False) check_output("successfully deleted") # Verify it is deleted args.suffix = False backend_list(topology_st.standalone, None, topology_st.logcap.log, args) check_output(SUB_BE_NAME, missing=True) # Modify backend (use same args from subsuffix modify) args.be_name = BE_NAME backend_set(topology_st.standalone, None, topology_st.logcap.log, args) check_output("successfully updated") # Verify modified worked args.selector = BE_NAME backend_get(topology_st.standalone, None, topology_st.logcap.log, args) check_output("nsslapd-readonly: on") # Run database monitor args.suffix = SUFFIX get_monitor(topology_st.standalone, None, topology_st.logcap.log, args) check_output("entrycachetries")
def test_user_modify(topology): be_args = FakeArgs() be_args.be_name = 'userRoot' be_args.suffix = DEFAULT_SUFFIX be_args.parent_suffix = None be_args.create_entries = False backend_create(topology.standalone, None, topology.logcap.log, be_args) # And add the skeleton objects. init_args = FakeArgs() init_args.version = INSTALL_LATEST_CONFIG initialise(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, init_args) # Check that our modify parser works. Modify statements are such as: # "add:attr:value". Replace is the exception as "replace:attr:old:new" # Check bad syntax modify_args = FakeArgs() modify_args.selector = "demo_user" modify_args.changes = ["tnaohtnsuahtnsouhtns"] with pytest.raises(ValueError): modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["add:attr:"] with pytest.raises(ValueError): modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["add:attr"] with pytest.raises(ValueError): modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["replace::"] with pytest.raises(ValueError): modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["replace:attr::new"] with pytest.raises(ValueError): modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["delete:attr:old:new"] with pytest.raises(ValueError): modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) # Check that even a single bad value causes error modify_args.changes = ["add:description:goodvalue", "add:attr:"] with pytest.raises(ValueError): modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) # check good syntax modify_args.changes = ["add:description:testvalue"] modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["replace:description:newvalue"] modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["delete:description:newvalue"] modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["add:description:testvalue"] modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) modify_args.changes = ["delete:description:"] modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args) # check mixed type, with multiple actions modify_args.changes = ["add:objectclass:nsMemberOf", "add:description:anothervalue"] modify(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, modify_args)
def test_user_tasks(topology): be_args = FakeArgs() be_args.be_name = 'userRoot' be_args.suffix = DEFAULT_SUFFIX be_args.parent_suffix = None be_args.create_entries = False backend_create(topology.standalone, None, topology.logcap.log, be_args) # And add the skeleton objects. init_args = FakeArgs() init_args.version = INSTALL_LATEST_CONFIG initialise(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, init_args) # First check that our test user isn't there: topology.logcap.flush() u_args = FakeArgs() u_args.selector = 'testuser' u_args.json = False with pytest.raises(ldap.NO_SUCH_OBJECT): get(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args) # Create the user topology.logcap.flush() u_args.uid = 'testuser' # u_args.sn = 'testuser' u_args.cn = 'Test User' u_args.displayName = 'Test User' u_args.homeDirectory = '/home/testuser' u_args.uidNumber = '5000' u_args.gidNumber = '5000' create(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args) assert (topology.logcap.contains("Successfully created testuser")) # Assert they exist topology.logcap.flush() get(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args) assert (topology.logcap.contains( 'dn: uid=testuser,ou=people,dc=example,dc=com')) # Reset the password # Lock the account, check status topology.logcap.flush() lock(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args) assert (topology.logcap.contains('locked')) topology.logcap.flush() status(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args) assert (topology.logcap.contains('locked: True')) # Unlock check status topology.logcap.flush() unlock(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args) assert (topology.logcap.contains('unlocked')) topology.logcap.flush() status(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args) assert (topology.logcap.contains('locked: False')) # Enroll a dummy cert # Enroll a dummy sshkey # Delete it topology.logcap.flush() u_args.dn = 'uid=testuser,ou=people,dc=example,dc=com' delete(topology.standalone, DEFAULT_SUFFIX, topology.logcap.log, u_args, warn=False) assert (topology.logcap.contains( 'Successfully deleted uid=testuser,ou=people,dc=example,dc=com'))