import os, tempfile from Ft.Lib.CommandLine import CommandLineTestUtil from Ft.Lib.Uri import OsPathToUri from Ft.Server.Client import Core from Server.Client.Core import test_helper import test_prime FIRST_DOCUMENT = '/' + test_prime.BASE_CONTAINER + '/doc1' FIRST_DOCUMENT_ALIAS = '/' + test_prime.BASE_CONTAINER + '/doca1' SECOND_DOCUMENT = '/' + test_prime.BASE_CONTAINER + '/doc2' def val1(tester): repo = test_helper.GetRepo(tester) try: if not repo.hasResource(FIRST_DOCUMENT): return 0 tester.compare(DOC2,repo.fetchResource(FIRST_DOCUMENT).getContent()) return 1 finally: repo.txRollback() def val2(tester): repo = test_helper.GetRepo(tester) try: if not repo.hasResource(SECOND_DOCUMENT): return 0 tester.compare(DOC2,repo.fetchResource(SECOND_DOCUMENT).getContent()) return 1 finally: repo.txRollback() def val3(tester): repo = test_helper.GetRepo(tester) try: if not repo.hasResource(FIRST_DOCUMENT): return 0 tester.compare(DOC3,repo.fetchResource(FIRST_DOCUMENT).getContent()) return 1 finally: repo.txRollback() def Init(repo): if repo.hasResource(FIRST_DOCUMENT): repo.deleteResource(FIRST_DOCUMENT) if repo.hasResource(FIRST_DOCUMENT_ALIAS): repo.deleteResource(FIRST_DOCUMENT_ALIAS,traverseAliases = 0) rf = repo.createDocument(FIRST_DOCUMENT,DOC1) rf.addAlias(FIRST_DOCUMENT_ALIAS) if repo.hasResource(SECOND_DOCUMENT): repo.deleteResource(SECOND_DOCUMENT) repo.createDocument(SECOND_DOCUMENT,DOC1) def Test(tester): test_prime.InitRepo(tester,Init,['4ss','update','document']) baseConfig = {'host':tester.test_data['ftrpc-host'], 'port':tester.test_data['ftrpc-port'], 'username':tester.test_data['userName'], 'password':tester.test_data['password'], } tempFiles = [] #Create a container from file fileName = tempfile.mktemp() f = open(fileName,'w') f.write(DOC2) f.close() fileNameUri = OsPathToUri(fileName) fileName2 = tempfile.mktemp() f = open(fileName2,'w') f.write(DOC3) f.close() fileNameUri2 = OsPathToUri(fileName2) tempFiles.append(fileName) tempFiles.append(fileName2) try: tr1 = CommandLineTestUtil.TestRun('Basic Update', baseConfig, [FIRST_DOCUMENT,fileNameUri], validationFunc = val1) #Update a raw file from stdin tr2 = CommandLineTestUtil.TestRun('STDIN Update', baseConfig, [SECOND_DOCUMENT,'-'], validationFunc = val2, input=DOC2) #Update a DOC that does not exist uri = test_prime.BASE_CONTAINER + '/foo' tr3 = CommandLineTestUtil.TestRun('Update Error', baseConfig, [uri,fileNameUri], expected_3%uri) tr4 = CommandLineTestUtil.TestRun('Alias Update', baseConfig, [FIRST_DOCUMENT_ALIAS,fileNameUri2], validationFunc = val3) t = CommandLineTestUtil.Test('4ss update document',[tr1,tr2,tr3,tr4]) return t.test(tester) finally: for f in tempFiles: os.unlink(f) import test_create_document DOC1 = test_create_document.DOC1 DOC2 = """""" DOC3 = """""" expected_3 = "Path /%s is unknown\n"