def testFileEndsWithNewline(temporarySudoersFile): patchSudoersFileForOpsi(sudoersFile=temporarySudoersFile) with open(temporarySudoersFile) as changedFile: for line in changedFile: lastLine = line assert '\n' == lastLine
def testDoNotAlterFileIfEntryAlreadyExisting(temporarySudoersFile): fileName = temporarySudoersFile patchSudoersFileForOpsi(sudoersFile=fileName) with open(fileName) as first: contentAfterFirstPatch = first.readlines() patchSudoersFileForOpsi(sudoersFile=fileName) with open(fileName) as second: contentAfterSecondPatch = second.readlines() assert contentAfterFirstPatch == contentAfterSecondPatch
def testAlterFileIfPartOfPreviousPatchWasMissing(temporarySudoersFile): fileName = temporarySudoersFile patchSudoersFileForOpsi(sudoersFile=fileName) with open(fileName) as before: lines = before.readlines() lines = [line for line in lines if not line.startswith('opsiconfd')] with open(fileName, 'w') as before: before.writelines(lines) patchSudoersFileForOpsi(sudoersFile=fileName) with open(fileName) as after: assert any(line.startswith('opsiconfd') for line in after)
def testExecutingServiceDoesNotRequireTTY(temporarySudoersFile): fileName = temporarySudoersFile with open(fileName) as pre: for line in pre: if _NO_TTY_FOR_SERVICE_REQUIRED in line: pytest.skip(u'Command already existing. Can\'t check.') patchSudoersFileForOpsi(fileName) with open(fileName) as post: assert any(_NO_TTY_FOR_SERVICE_REQUIRED in line for line in post), u"Expected {0} in patched file.".format( _NO_TTY_FOR_SERVICE_REQUIRED)
def testBackupIsCreated(tempDir): def showFolderInfo(): print(u'Files in {0}: {1}'.format(tempDir, filesInTemporaryFolder)) with createTemporaryTestfile(SUDOERS_WITHOUT_ENTRIES, tempDir=tempDir) as fileName: filesInTemporaryFolder = os.listdir(tempDir) showFolderInfo() assert 1 == len(filesInTemporaryFolder) patchSudoersFileForOpsi(sudoersFile=fileName) filesInTemporaryFolder = os.listdir(tempDir) showFolderInfo() assert 2 == len(filesInTemporaryFolder)
def testOpsiconfdDoesNotRequireTTY(temporarySudoersFile): fileName = temporarySudoersFile with open(fileName) as pre: for line in pre: if _NO_TTY_REQUIRED_DEFAULT in line: pytest.skip(u'Command already existing. Can\'t check.') with mock.patch('OPSI.Util.Task.Sudoers.distributionRequiresNoTtyPatch', lambda: True): patchSudoersFileForOpsi(fileName) with open(fileName) as post: assert any(_NO_TTY_REQUIRED_DEFAULT in line for line in post), u"Expected {0} in patched file.".format( _NO_TTY_REQUIRED_DEFAULT)
def testDoNotAddDuplicates(temporarySudoersFile): adminGroup = u'%{group}'.format(group=FILE_ADMIN_GROUP) fileName = temporarySudoersFile patchSudoersFileForOpsi(sudoersFile=fileName) with open(fileName) as before: lines = before.readlines() lines = [line for line in lines if not line.startswith('opsiconfd')] assert 1 == len([line for line in lines if line.startswith(adminGroup)]) with open(fileName, 'w') as before: before.writelines(lines) patchSudoersFileForOpsi(sudoersFile=fileName) with open(fileName) as after: afterLines = after.readlines() assert 1 == len( [line for line in afterLines if line.startswith(adminGroup)])