SF.net SVN: fclient: [501] trunk/fcp2/src/fcp2/test_fcp/test_client.py
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <jU...@us...> - 2008-07-05 11:51:14
|
Revision: 501
http://fclient.svn.sourceforge.net/fclient/?rev=501&view=rev
Author: jUrner
Date: 2008-07-05 04:51:22 -0700 (Sat, 05 Jul 2008)
Log Message:
-----------
added DDA test cases
Modified Paths:
--------------
trunk/fcp2/src/fcp2/test_fcp/test_client.py
Modified: trunk/fcp2/src/fcp2/test_fcp/test_client.py
===================================================================
--- trunk/fcp2/src/fcp2/test_fcp/test_client.py 2008-07-05 11:25:21 UTC (rev 500)
+++ trunk/fcp2/src/fcp2/test_fcp/test_client.py 2008-07-05 11:51:22 UTC (rev 501)
@@ -2143,8 +2143,7 @@
#
#***********************************************************************************
#TODO: testDDAReadDenied_ReadDissallowed
-#TODO: testDDAWriteDenied
-#TODO: testDDAWriteDenied_WriteDisallowed
+#TODO: testDDAReadDenied
class Test_DDA(BaseTestClient):
def test_DDAWriteDenied(self):
@@ -2168,8 +2167,8 @@
Code=25, # DDADenied
Identifier=myIdentifier,
ExtraDescription='An error occured',
- Fatal='false',
- Global='false',
+ Fatal=False,
+ Global=False,
)
# client should respond with a TestDDARequest
@@ -2204,7 +2203,7 @@
self.sendResponseMessage(
'TestDDAComplete',
Directory=DIR,
- WriteDirectoryAllowed='true',
+ WriteDirectoryAllowed=True,
)
# check if our tempfile was removed
@@ -2219,20 +2218,241 @@
# respond with a PersistentGet
self.sendResponseMessage(
'PersistentGet',
- Started='false',
+ Started=False,
**msg.params
)
- requests = self.client.getRequests()
- self.assertEqual(len(requests), 1)
+ self.assertEqual(len(requestsAll), 1)
+ self.assertHasNextEvent(None)
+ self.assertHasNextMessage(None)
+
+
+ def test_DDAWriteDenied_writeDisallowed(self):
+ self.connectClient()
+
+ # request a file
+ myKey = fcp2.Key('KSK@foo')
+ myIdentifier = self.client.getFile(
+ myKey,
+ os.path.join(DIR, 'DDATest.txt')
+ )
+ myRequest = self.client.getRequest(myIdentifier)
+ requestsAll = self.client.getRequests()
+
+ # client schould send a ClientGet
+ self.assertHasNextMessage(fcp2.MsgClientGet)
+
+ # respond with a ProtocolError
+ self.sendResponseMessage(
+ 'ProtocolError',
+ Code=25, # DDADenied
+ Identifier=myIdentifier,
+ ExtraDescription='An error occured',
+ Fatal=False,
+ Global=False,
+ )
+
+ # client should respond with a TestDDARequest
+ self.assertHasNextMessage(
+ fcp2.MsgTestDDARequest,
+ ('Directory', DIR),
+ ('WantWriteDirectory', True)
+ )
+
+ # respond with a TestDDAReply message
+ writeContent = 'blah'
+ fd, fpath = tempfile.mkstemp(dir=DIR)
+ os.close(fd)
+ self.sendResponseMessage(
+ 'TestDDAReply',
+ Directory=DIR,
+ WriteFilename=fpath,
+ ContentToWrite=writeContent,
+ )
+
+ # client should respond with a TestDDAResponse
+ self.assertHasNextMessage(
+ fcp2.MsgTestDDAResponse,
+ ('Directory', DIR)
+ )
+
+ # check if content was written
+ with open(fpath) as fp:
+ self.failUnless(fp.read() == writeContent)
+
+ # respond with a TestDDAComplete message
+ self.sendResponseMessage(
+ 'TestDDAComplete',
+ Directory=DIR,
+ WriteDirectoryAllowed=False,
+ )
+
+ # check if our tempfile was removed
+ self.failIf(os.path.isfile(fpath))
+
+ # client schould trigger a RequestFailed event
+ self.assertHasNextEvent(
+ self.client.events.RequestFailed,
+ myRequest,
+ )
+
+ self.failIf(requestsAll)
self.assertHasNextEvent(None)
self.assertHasNextMessage(None)
- del requestsAll[myIdentifier]
+
+ def test_DDAReadDenied(self):
+ self.connectClient()
+
+ # request a file
+ myKey = fcp2.Key('KSK@foo')
+ myIdentifier = self.client.putFile(
+ myKey,
+ os.path.join(DIR, 'DDATest.txt')
+ )
+ myRequest = self.client.getRequest(myIdentifier)
+ requestsAll = self.client.getRequests()
+
+ # client schould send a ClientGet
+ self.assertHasNextMessage(fcp2.MsgClientPut)
+
+ # respond with a ProtocolError
+ self.sendResponseMessage(
+ 'ProtocolError',
+ Code=25, # DDADenied
+ Identifier=myIdentifier,
+ ExtraDescription='An error occured',
+ Fatal=False,
+ Global=False,
+ )
+
+ # client should respond with a TestDDARequest
+ self.assertHasNextMessage(
+ fcp2.MsgTestDDARequest,
+ ('Directory', DIR),
+ ('WantReadDirectory', True)
+ )
+
+ #
+ readContent = '123456789'
+ readFilename = os.path.join(DIR, 'DDATest.txt')
+ fp = open(readFilename, 'w')
+ self.tmpfiles.append(readFilename)
+ try:
+ fp.write(readContent)
+ finally:
+ fp.close()
+
+ self.sendResponseMessage(
+ 'TestDDAReply',
+ Directory=DIR,
+ ReadFilename=readFilename,
+ )
+
+ # client should respond with a TestDDAResponse
+ self.assertHasNextMessage(
+ fcp2.MsgTestDDAResponse,
+ ('Directory', DIR),
+ ('ReadContent', readContent)
+ )
+
+ # respond with a TestDDAComplete message
+ self.sendResponseMessage(
+ 'TestDDAComplete',
+ Directory=DIR,
+ ReadDirectoryAllowed=True,
+ )
+
+ # client sahould send a new ClientGet
+ msg = self.assertHasNextMessage(fcp2.MsgClientPut)
+
+ # no events should have been triggered upo to now
+ self.assertHasNextEvent(None)
+
+ # respond with a PersistentGet
+ self.sendResponseMessage(
+ 'PersistentPut',
+ **msg.params
+ )
+
+ self.assertEqual(len(requestsAll), 1)
+ self.assertHasNextEvent(None)
+ self.assertHasNextMessage(None)
+
+
+ def test_DDAReadDenied_readDisallowed(self):
+ self.connectClient()
+
+ # request a file
+ myKey = fcp2.Key('KSK@foo')
+ myIdentifier = self.client.putFile(
+ myKey,
+ os.path.join(DIR, 'DDATest.txt')
+ )
+ myRequest = self.client.getRequest(myIdentifier)
+ requestsAll = self.client.getRequests()
+
+ # client schould send a ClientGet
+ self.assertHasNextMessage(fcp2.MsgClientPut)
+
+ # respond with a ProtocolError
+ self.sendResponseMessage(
+ 'ProtocolError',
+ Code=25, # DDADenied
+ Identifier=myIdentifier,
+ ExtraDescription='An error occured',
+ Fatal=False,
+ Global=False,
+ )
+
+ # client should respond with a TestDDARequest
+ self.assertHasNextMessage(
+ fcp2.MsgTestDDARequest,
+ ('Directory', DIR),
+ ('WantReadDirectory', True)
+ )
+
+ #
+ readContent = '123456789'
+ readFilename = os.path.join(DIR, 'DDATest.txt')
+ fp = open(readFilename, 'w')
+ self.tmpfiles.append(readFilename)
+ try:
+ fp.write(readContent)
+ finally:
+ fp.close()
+
+ self.sendResponseMessage(
+ 'TestDDAReply',
+ Directory=DIR,
+ ReadFilename=readFilename,
+ )
+
+ # client should respond with a TestDDAResponse
+ self.assertHasNextMessage(
+ fcp2.MsgTestDDAResponse,
+ ('Directory', DIR),
+ ('ReadContent', readContent)
+ )
+
+ # respond with a TestDDAComplete message
+ self.sendResponseMessage(
+ 'TestDDAComplete',
+ Directory=DIR,
+ ReadDirectoryAllowed=False,
+ )
+
+ # client schould trigger a RequestFailed event
+ self.assertHasNextEvent(
+ self.client.events.RequestFailed,
+ myRequest,
+ )
+
self.failIf(requestsAll)
+ self.assertHasNextEvent(None)
+ self.assertHasNextMessage(None)
-
#***********************************************************************************
#
#***********************************************************************************
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|