Basic plan to test services and load false true num.threads ${__P(num.threads)} = thread.loop.count ${__P(thread.loop.count)} = thread.ramp.up ${__P(thread.ramp.up)} = user.id jmeter-${__P(user.login)} = service.context /cgws/v1 = status.passphrase ${__P(status.passphrase)} = pmo.urn urn:ionu:${__P(van.id)}:${__P(pmo.id)}:: = pmo.user ${__P(pmo.user)} = pmo.email ${__P(pmo.email)} = pmo.password ${__P(pmo.password)} = pmo.cr1 ${__P(pmo.cr1)} = pmo.cr2 ${__P(pmo.cr2)} = unittest.urn ${__P(unittest.urn)} = service.context.sg /sgpws/services/v1 = pmo.id ${__P(pmo.id)} = pmo.password.pbkdf2 ${__P(pmo.password.pbkdf2)} = pmo.cr3 ${__P(pmo.cr3)} = activationBypassCode ${__P(activation.bypass.code)} = nikki.urn ${__P(nikki.urn)} = pmo.newPassword ${__P(pmo.newPassword)} = pmo.newPassword.pbkdf2 ${__P(pmo.newPassword.pbkdf2)} = pmo.crhash ${__P(pmo.crhash)} = service.context.ds /DiscoveryService/v1/services = ${__P(test.server)} ${__P(test.server.port)} 10000 40000 ${__P(test.server.scheme)} 4 false rfc2109 false saveConfig true true true true true true true false true true false false true false false false false true 0 true true true BasicTestSummary.jtl false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true /Users/tim/Development/daisy-svn/daisy-svn.ws/ionu-ws-tests/functest.jtl import com.ionu.csf.component.*; import org.json.*; String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); // libionu com.ionu.EncryptionSupport es = new com.ionu.EncryptionSupport(); es.setupLibIOnU(new java.io.File("."), "JMeterIOnU", null); log.info("setupLibIOnU returned"); // load config that was saved from pmoCreate /* String cfg = new String(com.dt.io.FileUtil.loadFile("LocalConfiguration.json")); JSONObject obj = new JSONObject(cfg); // only if directly calling service and not via cgs: // obj = obj.getJSONObject("results"); log.info("Config: " + obj.toString(2)); vars.put("LocalConfiguration", obj.toString()); String devUrn = obj.getJSONArray("devices").getJSONObject(0).getString("_id"); */ try { EyeGlass.loadKeyring(new File("jmeter-keyring.iks"), vars.get("pmo.password"), null); } catch (Throwable ex){ log.error("loadKeyring", ex); } String devUrn = EyeGlass.getPublicOfficeData(null).getString("urn"); String user = EyeGlass.getPublicOfficeData(null).getString("user"); vars.put("device.urn", devUrn); log.info("Device URN: " + devUrn); // CGS com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); String code = cgs.getAccessCode(); log.info("Got code: " + code); vars.put("accessCode", code); String tok = null; try { tok = cgs.getAccessToken(new CloudGuardURN(devUrn), code, vars.get("pmo.user"), vars.get("pmo.password")); } catch (Exception ex){ log.info("Exception: " + ex.getMessage()); log.error("getAccessToken", ex); } log.info("Got token: " + tok); vars.put("accessToken", tok); if (tok != null){ vars.put("accessTokenEncoded", java.net.URLEncoder.encode(tok)); } false String tok = vars.get("accessToken"); log.info("Checking token: " + tok); if (tok == null || tok.length() == 0){ Failure = true; FailureMessage = "Invalid token"; } else { Failure = false; } false true ${device.urn} = true deviceURN true ${accessToken} = true token true ${device.urn} = true verifyURN true ${accessToken} = true verify ${service.context}/auth/verifyToken GET true false true false false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/auth/logout DELETE true false true false false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript continue false 1 1 1 1295640284000 1295640284000 false import com.ionu.csf.component.Resources; import com.dt.util.Text; String s = Resources.getString("master_build_version_name"); vars.put("master_build_version_name", s); return s; false if (!vars.get("master_build_version_name")){ AssertionResult.setResultForFailure("Resources not correctly configured"); } javascript ${service.context}/status/vans GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${status.passphrase} = true passphrase true ${pmo.urn} = true deviceURN false ${pmo.urn} = true vanURN ${service.context}/status/status GET false true true false Java false see if CG is alive var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${pmo.urn} = true deviceURN true ${pmo.urn} = true vanURN ${service.context}/status/status GET false true true false Java false see if CG is alive var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript continue false 1 1 1 1295640284000 1295640284000 false Should receive server error from all of these true foo = true access_token true urn:ionu:000000:00000003:: = true deviceURN ${service.context}/status/status GET false true true false Java false Should fail with 500 server error 500 Expect 500 error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true foo = true token true urn:ionu:000000:00000003:: = true deviceURN ${service.context}/status/status GET false true true false Java false Should fail with 403 server error 403 Expect 403 error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true foo = true passphrase true urn:ionu:000000:00000003:: = true deviceURN ${service.context}/status/status GET false true true false Java false Should fail with 403 server error 403 Expect 403 error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true foo = true token true urn:ionu:000000:00000003:: = true deviceURN ${service.context}/status/deviceStatus GET false true true false Java false Should fail with 403 server error 403 Expect 403 error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true foo = true token true urn:ionu:000000:00000003:: = true deviceURN false = true discoveryInfo ${service.context}/status/enroll GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true foo = true token true urn:ionu:000000:00000003:: = true deviceURN ${service.context}/status/enrolled GET false true true false Java false Should fail with 403 server error 403 Expect 403 error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true foo = true token true urn:ionu:000000:00000003:: = true deviceURN ${service.context}/status/disenroll GET false true true false Java false Should fail with 403 server error 403 Expect 403 error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/create GET false true true false Java false Should fail with 400 server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/create POST false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/discover GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true foo@bar.com = true email true bogus = true password true bogusbogusbogus = true captcha ${service.context}/office/discover GET false true true false Java false Should fail with 400 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage X-ExceptionCode:.*EX_CAPTCHA Expect 500 error Assertion.response_headers true 2 true foo@bar.com = true email true bogus = true password true asdf = true captcha ${service.context}/office/discover GET false true true false Java false Should fail with 400 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/join GET false true true false Java false Should fail with server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/join POST false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/pmo GET false true true false Java false Should fail with server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true ${status.passphrase} = true passphrase true urn:ionu:000000:000000FE:: = true deviceURN ${service.context}/office/pmo GET false true true false Java false Should fail with 404 server error 404 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/npmo POST false true true false Java false Should fail with server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/update GET false true true false Java false Should fail with server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/update POST false true true false Java false Should fail with server error 400 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/provision GET false true true false Java false Should fail with server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/provision POST false true true false Java false Should fail with server error 400 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/activateDevice GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 false urn:ionu:000000:00000003:0001: = true deviceURN ${service.context}/office/activateDevice GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true urn:ionu:000000:00000003:0001: = true deviceURN true foo = true activationCode true disabled = true status ${service.context}/office/activateDevice GET false true true false Java false Should fail with 500 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/inviteContact GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 true urn:ionu:000000:00000003:0001: = true deviceURN true no-such-user-exists = true contact ${service.context}/office/inviteContact GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/download GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/removeDevice GET false true true false Java false Should fail with 400 server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/removeDevice DELETE false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/device GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/devices GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/office/avatar GET false true true false Java false Should fail with 400 server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/avatar POST false true true false Java false Should fail with 400 server error 415 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/office/avatar POST false true true true Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/pubsub/publish GET false true true false Java false Should fail with 400 server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/pubsub/publish POST false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/pubsub/push GET false true true false Java false Should fail with 400 server error 405 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/pubsub/push POST false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 ${service.context}/pubsub/subscribe GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/pubsub/dispose GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/van/sysstat GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/van/report GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/van/track GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${service.context}/van/ionu GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/delete GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/file GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/metadata GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/mounts GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/nmetadata POST false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 X-ExceptionClass X-ExceptionMessage Expect 500 error Assertion.response_headers true 2 ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/upload POST false true true true Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 continue false 1 1 1 1295640284000 1295640284000 false ${__P(test.server.ds)} ${__P(test.server.ds.port)} ${__P(test.server.ds.scheme)} ${service.context.ds}/disco/requestVanList GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected VANS"); } else { var van0 = data.results[0]; var name = van0.name; var alias = van0.alias; vars.put("van.name", name); vars.put("van.alias", alias); } javascript true ALL = true platform ${__P(test.server.ds)} ${__P(test.server.ds.port)} ${service.context.ds}/disco/requestVanList GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected VANS"); } else { var van0 = data.results[0]; var name = van0.name; var alias = van0.alias; vars.put("van.name", name); vars.put("van.alias", alias); } javascript true {"name":"DEFAULT VAN"} = true searchObject ${__P(test.server.ds)} ${__P(test.server.ds.port)} ${__P(test.server.ds.scheme)} ${service.context.ds}/disco/requestVanList GET false true true false Java false true ${van.name} = true vanName false ${van.alias} = true vanAlias ${__P(test.server.ds)} ${__P(test.server.ds.port)} ${__P(test.server.ds.scheme)} ${service.context.ds}/disco/requestVanInfo <<<<<<< HEAD GET false true true false Java false true ${van.name} = true vanName true ${van.alias} = true vanAlias true ALL = true platform ${__P(test.server.ds)} ${__P(test.server.ds.port)} ${service.context.ds}/disco/requestVanInfo ======= >>>>>>> cloud_hotfix/1.2.8.10 GET false true true false Java false ${__P(test.server.ds)} ${__P(test.server.ds.port)} ${__P(test.server.ds.scheme)} ${service.context.ds}/disco/requestMetaData GET false true true false Java false ${__P(test.server.ds)} ${__P(test.server.ds.port)} ${__P(test.server.ds.scheme)} ${service.context.ds}/message/fetchMessages GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); if (!data.vanSearchType){ log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } } javascript continue false 1 1 1 1366121967000 1366121967000 false true ${status.passphrase} = true passphrase true ${pmo.urn} = true deviceURN true false = true background ${service.context}/office/remove DELETE false true true false Java false remove office if it exists var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript import com.ionu.csf.component.*; import com.ionu.ijw.client.*; import org.json.*; import com.dt.io.*; import com.dt.util.*; import java.io.*; import java.util.*; try { log.info("createOffice BEGINS!"); com.ionu.EncryptionSupport es = new com.ionu.EncryptionSupport(); es.setupLibIOnU(new java.io.File("."), "JMeterIOnU", null); log.info("setupLibIOnU returned"); // CGS CloudGuardURN urn = new CloudGuardURN(vars.get("pmo.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); //cgs.setToken(vars.get("accessToken")); //cgs.setAuthenticatedDeviceURN(urn); // need keypair (will use same pair for both pmo and device) String[] keyPair = EyeGlass.generateKeyPairExternal(); FileUtil.putFile(new File("officePublicKey-jmeter.pem"), keyPair[1]); String opkSHA1 = Crypt.sha1(keyPair[1]); props.put("officePublicKeySHA1", opkSHA1); // for subsequent join service // challenges String cr1 = vars.get("pmo.cr1"); String cr2 = vars.get("pmo.cr2"); String cr3 = vars.get("pmo.cr3"); String crp = "password::"+vars.get("pmo.password"); List list = new ArrayList(); list.add(new ChallengeResponse(cr1)); list.add(new ChallengeResponse(cr2)); list.add(new ChallengeResponse(cr3)); list.add(new ChallengeResponse(crp)); JSONArray challenges = ChallengeResponse.validateChallenges(list); for (int i=0; i<challenges.length(); i++){ log.info("cr[" + i + "]: " + challenges.get(i)); } log.info("About to invoke pmoCreate..."); // halfkey byte[] cghk = EyeGlass.createCloudGuardHalfKey(); log.info("cghk: " + EyeGlass.dumpKey(cghk)); JSONObject pmo = cgs.pmoCreate(urn, vars.get("pmo.user"), vars.get("pmo.email"), "JMeter User", "JMeter", StorageNodeType.SNT_IOS, // don't be a bot cghk, keyPair[1], keyPair[1], challenges, "asdf", "sessionId", new org.json.JSONObject() ); log.info("pmoCreate: " + pmo + " token: " + cgs.getToken() + " urn: " + cgs.getAuthenticatedDeviceURN()); // init office/device File dot = new File("."); CloudGuardURN devUrn = new CloudGuardURN(pmo.getJSONArray("devices").getJSONObject(0).getString("_id")); log.info("resendVerification"); // good place to test resendVerification is right here cgs.resendVerification(devUrn, vars.get("pmo.user")); // activate String bypass = vars.get("activationBypassCode"); log.info("activateDevice " + bypass); cgs.activateDevice(devUrn, bypass, "active"); // EST JSONObject prefs = new JSONObject(); prefs.put("EST", true); log.info("pmoUpdate"); cgs.pmoUpdate(prefs); AllServices all = new AllServices(dot, dot); all.setCloudGuardService(cgs); log.info("initializeDevice"); JSONUtil.setPathValue(pmo, "pmo.publicKey", keyPair[1]); JSONUtil.setPathValue(pmo, "pmo.privateKey", keyPair[0]); JSONUtil.setPathValue(pmo, "devices[0].publicKey", keyPair[1]); JSONUtil.setPathValue(pmo, "devices[0].privateKey", keyPair[0]); OfficeService.initializeDevice(cgs, pmo, new File("jmeter-keyring.iks"), cghk, list, false); } catch (Throwable ex){ log.error("initializeDevice: " + ex.getMessage()); ex.printStackTrace(); throw ex; } false continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) true ${device.urn} = true deviceURN true ${accessToken} = true token true ${device.urn} = true statusURN ${service.context}/status/status GET false true true false Java false see if CG is alive true ${device.urn} = true deviceURN true ${accessToken} = true token true ${pmo.urn} = true pmo ${service.context}/office/pmo GET false true true false Java false true ${device.urn} = true deviceURN true ${accessToken} = true token true ${unittest.urn} = true pmo ${service.context}/office/pmo GET false true true false Java false true ${device.urn} = true deviceURN true ${accessToken} = true token true ${pmo.user} = true q ${service.context}/office/search GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length != 1) { AssertionResult.setResultForFailure("Expecting 1 result"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true noSuch__foo_user_blah = true q ${service.context}/office/search GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length != 0) { AssertionResult.setResultForFailure("Expecting no results"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true ${pmo.urn} = true pmo ${service.context}/office/devices GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.devices.length < 2) { AssertionResult.setResultForFailure("Not enough devices; expect JMeter and Browser"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true ${device.urn} = true device ${service.context}/office/device GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.name != "JMeter") { AssertionResult.setResultForFailure("Wrong device name"); } else if (data.results["_id"] != vars.get("device.urn")){ AssertionResult.setResultForFailure("Wrong device _id"); } javascript false Phat Device = true name ${service.context}/office/updateDevice?deviceURN=${device.urn}&token=${accessTokenEncoded}&device=${device.urn} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.name != "Phat Device") { AssertionResult.setResultForFailure("Wrong device name"); } else if (data.results["_id"] != vars.get("device.urn")){ AssertionResult.setResultForFailure("Wrong device _id"); } javascript true ${pmo.email} = true email true ${pmo.password.pbkdf2} = true password ${service.context}/office/discover GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.user != vars.get("pmo.user")) { AssertionResult.setResultForFailure("Wrong PMO user"); } else if (data.results.email.primary != vars.get("pmo.email")){ AssertionResult.setResultForFailure("Wrong PMO email"); } javascript true ${pmo.user} = true user true ${pmo.email} = true email true JMeter Functest = true fullname true JMeter = true name true asdf = true captcha true foo = true devicePublicKey true ["password::${pmo.password.pbkdf2}", "${pmo.cr1}", "${pmo.cr2}", "${pmo.cr3}"] = true cr true SNT_ROBOT = true type true ${__P(officePublicKeySHA1)} = true pkhash ${service.context}/office/join?vanURN=${pmo.urn} POST false true true false Java false Creates another device in jmeter office pmo var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.devices.length != 1){ AssertionResult.setResultForFailure("Expected a single device"); } else { var id = data.results.devices[0]; id = id["_id"]; log.info("Joined office and created device: " + id); vars.put("joined.device", id); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true ${joined.device} = true removeURN ${service.context}/office/removeDevice DELETE false true true false Java false true false offices=[{pmo:'urn:ionu:000000:1C3CEEDA::', v:2}] = ${service.context}/office/npmo?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false Creates another device in jmeter office pmo 10000 20000 ${__P(test.server.sg.scheme)} ${service.context}/office/avatar?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true true Java TimHeadShot.jpg file application/octet-stream false upload var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${device.urn} = true deviceURN true no-such-user-exists = true contact true ${accessToken} = true token ${service.context}/office/inviteContact GET false true true false Java false Should fail with 400 server error true ${device.urn} = true deviceURN true nikki = true contact true ${accessToken} = true token ${service.context}/office/inviteContact GET false true true false Java false false APP = true tcat false = true dest false jmeter-ftw = true action false OK = true result false Foo! = true info false = true docURN ${service.context}/van/track?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false Artbitrary tracking event var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/status/status GET false true true false Java false true ${device.urn} = true deviceURN true ${accessToken} = true token true ${pmo.urn} = true statusURN ${service.context}/status/status GET false true true false Java false true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/status/enrolled GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1) { AssertionResult.setResultForFailure("Expecting 1 result"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true {"urn":"${device.urn}","adapters":[{"name":"eth0","ip":"192.168.1.119"},{"name":"ham0","ip":"25.6.82.135"}],"vanRegex":".{6}","kind":"test"} = true discoveryInfo ${service.context}/status/enroll GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.user != vars.get("device.urn")){ AssertionResult.setResultForFailure("Did not see myself in response"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/status/disenroll GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results.deviceUUID){ AssertionResult.setResultForFailure("Did not see myself in response"); } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/van/sysstat GET false true true false Java false Should fail with 400 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/van/report GET false true true false Java false Should fail with 400 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/van/report GET false true true false Java false Should fail with 400 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/van/ionu GET false true true false Java false Should fail with 400 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) true ${device.urn} = true deviceURN true ${accessToken} = true token true ${pmo.user} = true q ${service.context}/office/search GET false true true false Java false true urn:ionu:000000::: = true deviceURN true ${accessToken} = true token true ${pmo.user} = true q ${service.context}/office/search GET false true true false Java false true ${accessToken} = true token true ${pmo.user} = true q ${service.context}/office/search GET false true true false Java false true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/status/enrolled GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1) { AssertionResult.setResultForFailure("Expecting 1 result"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true {"urn":"${device.urn}","adapters":[{"name":"eth0","ip":"192.168.1.119"},{"name":"ham0","ip":"25.6.82.135"}],"vanRegex":".{6}","kind":"test"} = true discoveryInfo ${service.context}/status/enroll GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.user != vars.get("device.urn")){ AssertionResult.setResultForFailure("Did not see myself in response"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/status/disenroll GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results.deviceUUID){ AssertionResult.setResultForFailure("Did not see myself in response"); } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) import com.ionu.csf.component.*; CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); PubSubMessage msg = new PubSubMessage(urn, urn); msg.setAction(PubSubMessage.Action.PING); msg.setIssueDate(new java.util.Date()); log.info("Put message: " + msg.toString()); vars.put("message", msg.toString()); false false ${message} = true message ${service.context}/pubsub/publish?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript 1000 false ${message} = true message ${service.context}/pubsub/publish?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript 1000 false ${message} = true message ${service.context}/pubsub/publish?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript 1000 true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/pubsub/subscribe GET false true true false Java false Remove any existing testgroup 1000 var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected one result"); } else { var msg = null; for (var i=0; i<data.results.length; i++){ if (data.results[i].action == "PING"){ msg = data.results[i]; vars.put("message.id", msg["msgId"]); break; } } if (msg == null) AssertionResult.setResultForFailure("Action is not PING"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true ${message.id} = true messageID ${service.context}/pubsub/dispose GET false true true false Java false Remove any existing testgroup var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("Expected one result"); } else if (data.results.action != "PING"){ AssertionResult.setResultForFailure("Action is not PING"); } else { var msg = data.results; vars.put("message.id", msg["_id"]); } javascript import org.json.*; import com.ionu.csf.component.*; import com.ionu.ijw.cg.*; // libionu log.info("disposeAll"); // CGS CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); JSONArray msgs = cgs.subscribeMessages(null, true); for (int i=0; i<msgs.length(); i++){ PubSubMessage msg = new PubSubMessage(msgs.getJSONObject(i)); cgs.disposeMessage(msg); } false WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) import org.json.*; import com.ionu.csf.component.*; // libionu log.info("shareKeys"); // CGS CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); String server = props.get("test.server"); log.info("Using server: " + server); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); // The keys Permissions userPerms = Permissions.createFromOffice(urn); JSONArray members = new JSONArray(); members.put(urn.toString()); // one member JSONObject collab = new JSONObject(); JSONArray collabArr = new JSONArray(); JSONObject collabSelf = new JSONObject(); collabSelf.put("_id", urn.toString()); collabSelf.put("publicKey", EyeGlass.getKey(EyeGlass.OFFICE_PUBLIC_KEY_ALIAS)); collabArr.put(collabSelf); collab.put("collab", collabArr); JSONArray keys = EyeGlass.computeEncryptedTGIKeys(userPerms.getSignature(urn), members, collab); userPerms.put("keys", keys); // Let it fly cgs.shareKeys(userPerms, "share"); log.info("keys have been shared"); false true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/eye/keys GET false true true false Java false Insure updated keys var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results || !data.results[0] || !data.results[0].sig || !data.results[0].owner || !data.results[0].key){ AssertionResult.setResultForFailure("JMeter office does not contain a shared key"); } javascript WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) true testgroup = true team true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/team/remove DELETE false true true false Java false Remove any existing testgroup var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true testgroup = true team true moderated = true type true JMeter testing = true description ${service.context}/team/create?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); var dstr = data; log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results._id){ AssertionResult.setResultForFailure("Expected one team result"); } else { var tu = data.results._id; vars.put("teamURN", tu); log.info("teamURN: " + tu); var upd = '{"_id":"' + tu + '", "team":"testgroup", "description":"foo", "status":"active", "type":"moderated"}'; vars.put("teamUpdateJSON", upd); log.info("Put teamUpdateJSON: " + upd); } javascript true testgroup = true team true moderated = true type true JMeter testing = true description ${service.context}/team/create?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false 500 Expect 403 error Assertion.response_code true 8 true ${accessToken} = true token true ${device.urn} = true deviceURN true ${teamURN} = true team ${service.context}/team/team GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${accessToken} = true token true ${device.urn} = true deviceURN true ${teamURN} = true team ${service.context}/team/members GET false true true false Java false var data = SampleResult.getResponseDataAsString(); var dstr = data; log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected one result"); } else { } javascript true ${accessToken} = true token true ${device.urn} = true deviceURN true testgroup = true q ${service.context}/team/search GET false true true false Java false var data = SampleResult.getResponseDataAsString(); var dstr = data; log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected one result"); } else { } javascript true ${accessToken} = true token true ${device.urn} = true deviceURN true __no__such__team__xyzzy__ = true q ${service.context}/team/search GET false true true false Java false var data = SampleResult.getResponseDataAsString(); var dstr = data; log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length >= 1){ AssertionResult.setResultForFailure("Expected no results"); } else { } javascript true ${accessToken} = true token true ${device.urn} = true deviceURN true ${teamURN} = true team ${service.context}/team/sharingGraph GET false true true false Java false var data = SampleResult.getResponseDataAsString(); var dstr = data; log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected one result"); } else { } javascript false ${teamUpdateJSON} = true json ${service.context}/team/update?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); var dstr = data; log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results._id){ AssertionResult.setResultForFailure("Expected one team result"); } else { var tu = data.results._id; vars.put("teamURN", tu); log.info("teamURN: " + tu); } javascript WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) import com.ionu.csf.component.*; import com.ionu.ijw.client.*; import org.json.*; import java.io.*; CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); OfficeService os = new OfficeService(); os.setCloudGuardService(cgs); CloudGuardURN dest = new CloudGuardURN(vars.get("nikki.urn")); Permissions p = Permissions.createFromCollaborators(new CloudGuardURN[]{urn, dest}); vars.put("sg.permissions", p.toString()); String sig = p.getSignature(urn); vars.put("sg.signature", sig); log.info("Sig: " + sig + " from perms: " + p); File f = new File("sgupload-test.ionu"); // this is obviously not using real TGI key EyeGlass e = EyeGlass.encryptString("test", "foobar", f, urn, p, new byte[32]); vars.put("sg.path", java.net.URLEncoder.encode(f.getName())); vars.put("renamed.sg.path", java.net.URLEncoder.encode("renamed-"+f.getName())); File fl = new File("LargeFile.mov"); // this is obviously not using real TGI key EyeGlass el = EyeGlass.encryptClearFile(fl, urn, p, new byte[32]); vars.put("sg.path.large", java.net.URLEncoder.encode(fl.getName() + ".ionu")); // eliza for mount=t/s testing // need to share keys!!! /* CloudGuardURN edest = new CloudGuardURN(vars.get("eliza.urn")); Permissions ep = Permissions.createFromCollaborators(new CloudGuardURN[]{urn, edest}); String esig = ep.getSignature(urn); vars.put("sg.signature.eliza", esig); File ef = new File("sgupload-test-eliza.ionu"); // this is obviously not using real TGI key EyeGlass e = EyeGlass.encryptString("test", "foobar", ef, urn, ep, new byte[32]); vars.put("sg.path.eliza", ef.getName()); */ false true ${device.urn} = true deviceURN true ${accessToken} = true cg_token ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/token GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { log.info("StorageGuard token: " + data.results.token); vars.put("sgAccessToken", data.results.token); vars.put("sgAccessTokenEncoded", java.net.URLEncoder.encode(data.results.token)); } javascript true ${sgAccessToken} = true access_token false mounts = true config ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/status GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${sgAccessToken} = true access_token ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/collaborators GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results.collab || data.results.collab.length < 1){ AssertionResult.setResultForFailure("No collaborators"); } javascript true ${sgAccessToken} = true access_token ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/mounts GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results.length){ // allow zero AssertionResult.setResultForFailure("No mounts"); } javascript ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/upload?access_token=${sgAccessTokenEncoded}&mount=t&signature=${sg.signature}&path=${sg.path}&share=true POST false true true true Java ${sg.path} file application/octet-stream false Update testfile.txt.eye to SG var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/upload?access_token=${sgAccessTokenEncoded}&mount=t&signature=${sg.signature.eliza}&path=${sg.path.eliza} POST false true true true Java ${sg.path} file application/octet-stream false DISABLED because we don't currently share keys var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${sgAccessToken} = true access_token true / = true path true t = true mount true 10 = true depth true ${sg.signature} = true signature ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/metadata GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } else if (!data.results.contents){ AssertionResult.setResultForFailure("No child folders/files"); } else { var firstChild = data.results.contents[0]; log.info("First child: " + firstChild.path + " " + firstChild.mount + " " + firstChild.type + " " + firstChild.status); if (!firstChild || !firstChild.path || !firstChild.mount || !firstChild.type || !firstChild.status){ AssertionResult.setResultForFailure("First child not valid"); // save path //vars.put("path", firstChild.path); } } javascript true false pathinfo=[{"path":"/","signature":"${sg.signature}","hash":"0"}] = ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/nmetadata?access_token=${sgAccessTokenEncoded}&mount=t&depth=1 POST false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results.contents[0]; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript true false pathinfo=[{"path":"/mojo-nixon-is-a-booger-eating-moron.ionu","signature":"${sg.signature}","hash":"0"}] = ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/nmetadata?access_token=${sgAccessTokenEncoded}&mount=t&depth=1 POST false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results.contents[0]; if (obj.type != 'SNT_UNKNOWN'){ AssertionResult.setResultForFailure("Bad type"); } } javascript true ${sgAccessToken} = true access_token true ${sgNodeURN} = true docURN ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/metadata GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_FILE'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_FILE'"); } javascript true ${sgAccessToken} = true access_token false ${sg.path} = true path true t = true mount true ${sg.signature} = true signature ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/file GET false true true false Java false Insure that shared path just added is returned test.txt.ionu-downloaded false true true true false ${renamed.sg.path} = true newPath ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/rename?access_token=${sgAccessTokenEncoded}&docURN=${sgNodeURN} POST false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_FILE'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_FILE'"); } javascript true ${sgAccessToken} = true access_token true / = true path true t = true mount true 10 = true depth true ${sg.signature} = true signature ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/metadata GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } else if (!data.results.contents){ AssertionResult.setResultForFailure("No child folders/files"); } else { var firstChild = data.results.contents[0]; log.info("First child: " + firstChild.path + " " + firstChild.mount + " " + firstChild.type + " " + firstChild.status); if (!firstChild || !firstChild.path || !firstChild.mount || !firstChild.type || !firstChild.status){ AssertionResult.setResultForFailure("First child not valid"); // save path //vars.put("path", firstChild.path); } } javascript true ${sgAccessToken} = true access_token true ${sgNodeURN} = true docURN ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/delete GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_FILE'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_FILE'"); } else if (data.results.status != 'deleted'){ AssertionResult.setResultForFailure("data.results.status is not deleted"); } else if (!data.results.deleted){ AssertionResult.setResultForFailure("data.results.status is not deleted"); } javascript ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/upload?access_token=${sgAccessTokenEncoded}&docURN=${sgNodeURN} POST false true true true Java ${sg.path} file application/octet-stream false Update testfile.txt.eye to SG var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript false t = true mount false /foodir = true path false ${sg.permissions} = true permissions ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/mkdir?access_token=${sgAccessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } javascript false t = true mount false /bardir = true path false ${sg.permissions} = true permissions ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/mkdir?access_token=${sgAccessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } javascript true ${sgAccessToken} = true access_token true /foodir = true path true t = true mount true 10 = true depth true ${sg.signature} = true signature ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/metadata GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } javascript ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/upload?access_token=${sgAccessTokenEncoded}&mount=t&signature=${sg.signature}&path=/foodir/${sg.path} POST false true true true Java ${sg.path} file application/octet-stream false Update testfile.txt.eye to SG var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/upload?access_token=${sgAccessTokenEncoded}&mount=t&signature=${sg.signature}&path=/foodir/${sg.path.large} POST false true true true Java ${sg.path.large} file application/octet-stream false Update testfile.txt.eye to SG var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript true ${sgAccessToken} = true access_token true t = true mount true ${sg.signature} = true signature true /foodir/${sg.path} = true path ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/file GET false true true false Java false Insure that shared path just added is returned test.txt.ionu-downloaded false true true true true ${sgAccessToken} = true access_token true / = true path true t = true mount true 10 = true depth true ${sg.signature} = true signature ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/metadata GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } else if (!data.results.contents){ AssertionResult.setResultForFailure("No child folders/files"); } else { var firstChild = data.results.contents[0]; log.info("First child: " + firstChild.path + " " + firstChild.mount + " " + firstChild.type + " " + firstChild.status); if (!firstChild || !firstChild.path || !firstChild.mount || !firstChild.type || !firstChild.status){ AssertionResult.setResultForFailure("First child not valid"); // save path //vars.put("path", firstChild.path); } } javascript true /bardir/${sg.path} = true newPath ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/rename?access_token=${sgAccessTokenEncoded}&mount=t&signature=${sg.signature}&path=/foodir/${sg.path} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_FILE'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_FILE'"); } javascript true ${sgAccessToken} = true access_token true / = true path true t = true mount true 10 = true depth true ${sg.signature} = true signature ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/metadata GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version){ AssertionResult.setResultForFailure("Bad version"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } else if (!data.results.contents){ AssertionResult.setResultForFailure("No child folders/files"); } else { var firstChild = data.results.contents[0]; log.info("First child: " + firstChild.path + " " + firstChild.mount + " " + firstChild.type + " " + firstChild.status); if (!firstChild || !firstChild.path || !firstChild.mount || !firstChild.type || !firstChild.status){ AssertionResult.setResultForFailure("First child not valid"); // save path //vars.put("path", firstChild.path); } } javascript true ${sgAccessToken} = true access_token true t = true mount true ${sg.signature} = true signature true /bardir/${sg.path} = true path ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/file GET false true true false Java false Insure that shared path just added is returned test.txt.ionu-downloaded false true true true true ${sgAccessToken} = true access_token true t = true mount true ${sg.signature} = true signature true /bardir/${sg.path} = true path ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/delete GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.version || !obj.seq){ AssertionResult.setResultForFailure("Bad version or seq"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_FILE'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_FILE'"); } else if (data.results.status != 'deleted'){ AssertionResult.setResultForFailure("data.results.status is not deleted"); } else if (!data.results.deleted){ AssertionResult.setResultForFailure("data.results.status is not deleted"); } javascript true ${sgAccessToken} = true access_token true t = true mount true ${sg.signature} = true signature true /mojodir = true path ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/delete GET false true true false Java false true /mojodir = true newPath ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/rename?access_token=${sgAccessTokenEncoded}&mount=t&signature=${sg.signature}&path=/foodir POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || !obj.name){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } vars.put("sgNodeURN", obj.urn); } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } javascript true ${sgAccessToken} = true access_token true / = true path true t = true mount true 10 = true depth true ${sg.signature} = true signature ${__P(test.server.sg)} ${__P(test.server.sg.port)} 10000 20000 ${__P(test.server.sg.scheme)} ${service.context.sg}/metadata GET false true true false Java false Insure that shared path just added is returned var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else { var obj = data.results; if (!obj.van || obj.mount != "t" || !obj.signature || !obj.path ){ AssertionResult.setResultForFailure("Bad result van, mount, signature or path"); } if (!obj.urn){ AssertionResult.setResultForFailure("Bad urn"); } if (!obj.folder || obj.name==null){ AssertionResult.setResultForFailure("Bad folder or name"); } if (!obj.mtime || !obj.utime){ AssertionResult.setResultForFailure("Bad mtime or utime"); } if (!obj.mimetype){ AssertionResult.setResultForFailure("Bad mimetype"); } } javascript var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("No results"); } else if (!data.results.mount || !data.results.path || !data.results.status || !data.results.type){ AssertionResult.setResultForFailure("Result data incomplete"); } else if (data.results.type != 'SNT_REMOTE_DIRECTORY'){ AssertionResult.setResultForFailure("data.results.type is not 'SNT_REMOTE_DIRECTORY'"); } else if (!data.results.contents){ AssertionResult.setResultForFailure("No child folders/files"); } else { var firstChild = data.results.contents[0]; log.info("First child: " + firstChild.path + " " + firstChild.mount + " " + firstChild.type + " " + firstChild.status); if (!firstChild || !firstChild.path || !firstChild.mount || !firstChild.type || !firstChild.status){ AssertionResult.setResultForFailure("First child not valid"); // save path //vars.put("path", firstChild.path); } } javascript true ${sgAccessToken} = true access_token ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/delete GET false true true false Java false Should fail with 400 server error 400 Expect 4xx/5xx error Assertion.response_code true 8 true ${sgAccessToken} = true access_token true 123456789ABC = true signature false /foo.ionu = true path ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/delete GET false true true false Java false Should fail with 400 server error 404 Expect 4xx/5xx error Assertion.response_code true 8 true ${sgAccessToken} = true access_token true 123456789ABC = true signature false /foo.ionu = true path ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/file GET false true true false Java false Should fail with 400 server error 404 Expect 4xx/5xx error Assertion.response_code true 8 true ${sgAccessToken} = true access_token true 123456789ABC = true signature false /foo.ionu = true path ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/metadata GET false true true false Java false Should fail with 400 server error 404 Expect 4xx/5xx error Assertion.response_code true 8 ${__P(test.server.sg)} ${__P(test.server.sg.port)} ${service.context.sg}/upload?access_token=${sgAccessTokenEncoded}&signature=123456789ABC&path=/lt-gui.sh POST false true true true Java /Users/tim/Development/daisy-svn/daisy-svn.ws/ionu-ws-tests/lt-gui.sh file application/octet-stream false Should fail with 400 server error 415 Expect 4xx/5xx error Assertion.response_code true 8 WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1370881794000 1370881794000 false Nikki better be running against test.server ;) WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) import com.ionu.csf.component.*; import com.ionu.ijw.client.*; import org.json.*; CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); OfficeService os = new OfficeService(); os.setCloudGuardService(cgs); try { JSONObject obj = os.getCollaborators(false); } catch (Throwable ex){ log.error("getCollaborators: " + ex.getMessage()); ex.printStackTrace(); throw ex; } false import com.ionu.csf.component.*; CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); CloudGuardURN dest = new CloudGuardURN(vars.get("nikki.urn")); PubSubMessage msg = new PubSubMessage(urn, dest); msg.setAction(PubSubMessage.Action.COLLABORATE_REQUEST); msg.setIssueDate(new java.util.Date()); log.info("Put message: " + msg.toString()); vars.put("message", msg.toString()); false false ${message} = true message ${service.context}/pubsub/publish?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript import com.ionu.csf.component.*; import com.ionu.ijw.client.*; import org.json.*; CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); OfficeService os = new OfficeService(); os.setCloudGuardService(cgs); try { JSONObject obj = os.getCollaborators(false); } catch (Throwable ex){ log.error("getCollaborators: " + ex.getMessage()); ex.printStackTrace(); throw ex; } false true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/pubsub/subscribe GET false true true false Java false var data = SampleResult.getResponseDataAsString(); var dstr = data; log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected one result"); } else { var msg = null; for (var i=0; i<data.results.length; i++){ if (data.results[i].action == "COLLABORATE_REPLY" && data.results[i].source.match(/urn:ionu:000000:00000003/)){ msg = data.results[i]; vars.put("message.id", msg["msgId"]); vars.put("collab.data", dstr); break; } } if (msg == null) AssertionResult.setResultForFailure("Action is not COLLABORATE_REPLY"); } javascript 10000 import com.ionu.csf.component.*; import com.ionu.ijw.client.*; import org.json.*; CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); OfficeService os = new OfficeService(); os.setCloudGuardService(cgs); String cmsg = (String)vars.get("collab.data"); log.info("cmsg: " + cmsg); JSONObject j = new JSONObject(cmsg); j = j.getJSONArray("results").getJSONObject(0); PubSubMessage m = new PubSubMessage(j); log.info("About to invoke collaborate: " + m); try { os.collaborate(m.getSource(), m.getMessageIdentifier(), null, "active", true, false); } catch (Throwable ex){ log.error("collaborate: " + ex.getMessage()); ex.printStackTrace(); throw ex; } false true ${device.urn} = true deviceURN true ${accessToken} = true token true ${message.id} = true messageID ${service.context}/pubsub/dispose GET false true true false Java false Collab var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("Expected one result"); } else if (data.results.action != "COLLABORATE_REPLY"){ AssertionResult.setResultForFailure("Action is not COLLABORATE_REPLY"); } else { var msg = data.results; vars.put("message.id", msg["_id"]); } javascript import com.ionu.csf.component.*; import com.ionu.ijw.client.*; import org.json.*; CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); CloudGuardURN dest = new CloudGuardURN(vars.get("nikki.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); try { JSONObject ci = new JSONObject(); ci.put("collab_type", "office"); ci.put("publicKey", ""); ci.put("messageIdentifier", ""); ci.put("_id", dest.as(CloudGuardURN.URN_TYPE.PMO).toString()); PubSubMessage msg = ChatService.sendChatMessage(cgs, ci, null, new Object[]{"JMeter says hello"}); log.info("Put message: " + msg); vars.put("message", msg.toString()); } catch (Throwable ex){ log.error("sendChat: " + ex.getMessage()); ex.printStackTrace(); throw ex; } false true ${device.urn} = true deviceURN true ${accessToken} = true token ${service.context}/pubsub/subscribe GET false true true false Java false 5000 var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (data.results.length < 1){ AssertionResult.setResultForFailure("Expected one result"); } else { var msg = null; for (var i=0; i<data.results.length; i++){ if (data.results[i].action == "SHARE" && data.results[i].source.match(/urn:ionu:000000:00000003/)){ msg = data.results[i]; vars.put("message.id", msg["msgId"]); break; } } if (msg == null) AssertionResult.setResultForFailure("Action is not SHARE"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true ${message.id} = true messageID ${service.context}/pubsub/dispose GET false true true false Java false Share var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } else if (!data.results){ AssertionResult.setResultForFailure("Expected one result"); } else if (data.results.action != "SHARE"){ AssertionResult.setResultForFailure("Action is not SHARE"); } else { var msg = data.results; vars.put("message.id", msg["_id"]); } javascript WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false /cgws/office.jsp GET false true true false Java false Should get the office page 1 30 omit false 0 office-page.txt continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) import com.ionu.csf.component.*; import org.json.*; CloudGuardURN src = new CloudGuardURN(vars.get("device.urn")); CloudGuardURN dest = new CloudGuardURN(vars.get("nikki.urn")); PubSubMessage msg = new PubSubMessage(src, dest); msg.setAction(PubSubMessage.Action.SHARE); msg.setIssueDate(new java.util.Date()); msg.setMessageIdentifier("SPAMMY-JMETER-SHARE"); JSONObject ad = new JSONObject(); ad.put("mount", "t"); ad.put("path", "/no-such-file.txt.ionu"); ad.put("signature", "00000000"); msg.setActionData(ad); log.info("Put message: " + msg.toString()); vars.put("message", msg.toString()); false true 20 false ${message} = true message ${service.context}/pubsub/publish?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript 1000 import org.json.*; import com.ionu.csf.component.*; import com.ionu.ijw.cg.*; // libionu log.info("disposeAll"); // CGS CloudGuardURN urn = new CloudGuardURN(vars.get("device.urn")); String server = props.get("test.server"); String scheme = props.get("test.server.scheme"); String port = props.get("test.server.port"); log.info("Using server: " + scheme + server + ":" + port); com.ionu.ijw.cg.CloudGuardService cgs = new com.ionu.ijw.cg.CloudGuardService(); cgs.setHost(server); cgs.setScheme(scheme); cgs.setPort(Integer.valueOf(port)); cgs.setToken(vars.get("accessToken")); cgs.setAuthenticatedDeviceURN(urn); JSONArray msgs = cgs.subscribeMessages(null, true); for (int i=0; i<msgs.length(); i++){ PubSubMessage msg = new PubSubMessage(msgs.getJSONObject(i)); cgs.disposeMessage(msg); } false WorkBench CloudGuard Functional Test Test Fragment - logout continue false 1 1 1 1295640284000 1295640284000 false WorkBench CloudGuard Functional Test Test Fragment - authenticate (reuse in multiple thread groups) true nottherightpassword = true oldPassword true ${pmo.password} = true newPassword ${service.context}/auth/passwordChange?deviceURN=${device.urn}&token=${accessTokenEncoded} POST false true true false Java false Should fail with 400 server error 403 Expect 4xx/5xx error Assertion.response_code true 8 true ${device.urn} = true deviceURN true ${accessToken} = true token true ${pmo.email} = true email ${service.context}/auth/requestPasswordReset GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); if (data.code == 200){ var rcode = data.results.passwordResetCode; var rexp = data.results.passwordResetExpires; if (!rcode || !rexp){ AssertionResult.setResultForFailure("No reset code/expires"); } vars.put("passwordResetCode", rcode); vars.put("passwordResetExpires", rexp); } else { AssertionResult.setResultForFailure("OK status not returned"); } javascript true ${device.urn} = true deviceURN true ${accessToken} = true token true ${passwordResetCode} = true code true ${pmo.email} = true email ${service.context}/auth/confirmPasswordReset GET false true true false Java false Should get the office page 2 30 omit false 0 password-reset-tidy.txt confirmPassReset false false false false true ${device.urn} = true deviceURN true ${accessToken} = true token true ${passwordResetCode} = true code true ${pmo.email} = true email true ${pmo.newPassword.sha} = true newPasswordHash ${service.context}/auth/confirmPasswordReset GET false true true false Java false var data = SampleResult.getResponseDataAsString(); log.info("data: " + data); data = eval('('+data+')'); log.info(data.code); if (data.code!=200){ AssertionResult.setResultForFailure("OK status not returned"); } javascript