diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-09-17 14:26:03 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-09-17 14:26:03 +0000 |
| commit | 46a6f01c77f4af67711248f89c146c74a3f435b2 (patch) | |
| tree | 086a1f7174ba1fc7c7d46a83cabda68a899f1b4b /java | |
| parent | 9d4bb38deb210f8821f49d82c7e092eab07152dc (diff) | |
| download | qpid-python-46a6f01c77f4af67711248f89c146c74a3f435b2.tar.gz | |
QPID-5138: Disallow setting of preferneces provider for anonymous authentication provider
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1524061 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
9 files changed, 138 insertions, 78 deletions
diff --git a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js index 208a6f99c6..b5b4380a0d 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js +++ b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/AuthenticationProvider.js @@ -90,7 +90,6 @@ define(["dojo/_base/xhr", event.stop(evt); that.addPreferencesProvider(); }); - updater.add( that.authProviderUpdater ); }}); }; @@ -168,9 +167,17 @@ define(["dojo/_base/xhr", that.details = new PrincipalDatabaseAuthenticationManager(node, that.authProviderData, controller); that.details.update(that.authProviderData); } - var preferencesProviderData = that.authProviderData.preferencesproviders? that.authProviderData.preferencesproviders[0]: null; - that.preferencesNode = query(".preferencesProviderDetails", node)[0]; - that.updatePreferencesProvider(preferencesProviderData); + if (that.authProviderData.type == "Anonymous") + { + var authenticationProviderPanel = registry.byNode( query(".preferencesPanel", node)[0]); + domStyle.set(authenticationProviderPanel.domNode, "display","none"); + } + else + { + var preferencesProviderData = that.authProviderData.preferencesproviders? that.authProviderData.preferencesproviders[0]: null; + that.preferencesNode = query(".preferencesProviderDetails", node)[0]; + that.updatePreferencesProvider(preferencesProviderData); + } }); } @@ -229,16 +236,20 @@ define(["dojo/_base/xhr", } } } - try + var preferencesProviderData = that.authProviderData.preferencesproviders? that.authProviderData.preferencesproviders[0]: null; + if (preferencesProviderData) { - that.updatePreferencesProvider(that.authProviderData.preferencesproviders? that.authProviderData.preferencesproviders[0]: null); - } - catch(e) - { - if (console) - { - console.error(e); - } + try + { + that.updatePreferencesProvider(preferencesProviderData); + } + catch(e) + { + if (console) + { + console.error(e); + } + } } }); diff --git a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js index 6d587b37d1..b83c1e477b 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js +++ b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Preferences.js @@ -118,22 +118,25 @@ function (declare, xhr, event, dom, domConstruct, parser, query, json, entities, xhr.get({ url: "rest/preferences", sync: true, - handleAs: "json" - }).then( - function(data) { - for(var preference in data) - { - if (that.hasOwnProperty(preference)) - { - var value = data[preference]; - if (typeof data[preference] == "string") - { - value = entities.encode(String(value)) - } - that[preference].set("value", value); - } - } - that.preferencesDialog.show(); + handleAs: "json", + load: function(data) { + for(var preference in data) + { + if (that.hasOwnProperty(preference)) + { + var value = data[preference]; + if (typeof data[preference] == "string") + { + value = entities.encode(String(value)) + } + that[preference].set("value", value); + } + } + that.preferencesDialog.show(); + }, + error: function(error){ + alert("Cannot load user preferences : " + error); + } }); }, diff --git a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js index 4f4b22a784..3737e41da4 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js +++ b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addAuthenticationProvider.js @@ -164,7 +164,7 @@ define(["dojo/_base/xhr", if(this.success === true) { registry.byId("addAuthenticationProvider").hide(); - if (dojo.byId("formAddAuthenticationProvider.id").value == "") + if (newAuthenticationManager.type != "Anonymous" && dojo.byId("formAddAuthenticationProvider.id").value == "") { addPreferencesProvider.show(newAuthenticationManager.name); } diff --git a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js index 158a5f8fa2..818dc32366 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js +++ b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPreferencesProvider.js @@ -33,6 +33,7 @@ define(["dojo/_base/xhr", "dojo/_base/connect", "dojo/dom-style", "dojo/string", + "dojox/html/entities", "dojox/validate/us", "dojox/validate/web", "dijit/Dialog", @@ -46,7 +47,7 @@ define(["dojo/_base/xhr", "dojox/form/CheckedMultiSelect", "dojox/layout/TableContainer", "dojo/domReady!"], - function (xhr, dom, construct, query, win, registry, parser, array, event, json, Memory, FilteringSelect, connect, domStyle, string) { + function (xhr, dom, construct, query, win, registry, parser, array, event, json, Memory, FilteringSelect, connect, domStyle, string, entities) { var addPreferencesProvider = {}; @@ -167,6 +168,7 @@ define(["dojo/_base/xhr", this.preferencesProviderTypeChooser.set("value", null); } var dialog = registry.byId("addPreferencesProvider"); + dialog.set("title", (providerName ? "Edit preference provider '" + entities.encode(String(providerName)) + "' " : "Add preferences provider ") + " for authentication provider '" + entities.encode(String(authenticationProviderName)) + "' ") if (providerName) { xhr.get({ @@ -178,7 +180,7 @@ define(["dojo/_base/xhr", var provider = data[0]; var providerType = provider.type; that.data = provider; - nameWidget.set("value", provider.name); + nameWidget.set("value", entities.encode(String(provider.name))); nameWidget.set("disabled", true); that.preferencesProviderTypeChooser.set("value", providerType); that.preferencesProviderTypeChooser.set("disabled", true); diff --git a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js index 0d9542ca39..80b50fbbb8 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js +++ b/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/authenticationprovider/preferences/filesystempreferences/add.js @@ -28,9 +28,10 @@ define(["dojo/_base/xhr", "dojo/_base/event", "dojo/_base/json", "dojo/string", + "dojox/html/entities", "dojo/text!../../../../../authenticationprovider/preferences/filesystempreferences/add.html", "dojo/domReady!"], - function (xhr, dom, domConstruct, win, registry, parser, array, event, json, string, template) { + function (xhr, dom, domConstruct, win, registry, parser, array, event, json, string, entities, template) { return { show: function(node, data) { dojo.forEach(dijit.findWidgets(node), function(w) { @@ -41,7 +42,7 @@ define(["dojo/_base/xhr", var pathWidget = registry.byId("preferencesProvider.path") if (data) { - pathWidget.set("value", data["path"]); + pathWidget.set("value", entities.encode(String(data["path"]))); } } }; diff --git a/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java b/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java index f0076bd983..cbf8e1ba30 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java +++ b/java/broker/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java @@ -56,6 +56,7 @@ import org.apache.qpid.server.security.SubjectCreator; import org.apache.qpid.server.security.access.Operation; import org.apache.qpid.server.security.auth.UsernamePrincipal; import org.apache.qpid.server.security.auth.database.PrincipalDatabase; +import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory; import org.apache.qpid.server.security.auth.manager.AuthenticationManager; import org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticationManager; import org.apache.qpid.server.security.SecurityManager; @@ -303,6 +304,10 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana if (_state.compareAndSet(state, State.STOPPED)) { _authManager.close(); + if (_preferencesProvider != null) + { + _preferencesProvider.setDesiredState(_preferencesProvider.getActualState(), State.STOPPED); + } return true; } else @@ -421,6 +426,10 @@ public abstract class AuthenticationProviderAdapter<T extends AuthenticationMana public void setPreferencesProvider(PreferencesProvider provider) { + if (AnonymousAuthenticationManagerFactory.PROVIDER_TYPE.equals(getAttribute(TYPE))) + { + throw new IllegalConfigurationException("Cannot set preferences provider for anonymous authentication provider"); + } _preferencesProvider = provider; } diff --git a/java/broker/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java b/java/broker/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java index 0b0610681a..5914b8d8d2 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java +++ b/java/broker/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java @@ -520,7 +520,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr private void getFileLock() throws IOException, AMQStoreException { - File lockFile = new File(_preferencesLocation.getAbsolutePath() + ".lck"); + File lockFile = new File(getLockFileName()); lockFile.createNewFile(); FileOutputStream out = new FileOutputStream(lockFile); @@ -540,6 +540,11 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr lockFile.deleteOnExit(); } + private String getLockFileName() + { + return _preferencesLocation.getAbsolutePath() + ".lck"; + } + public void close() { try @@ -552,7 +557,7 @@ public class FileSystemPreferencesProvider extends AbstractAdapter implements Pr } finally { - new File(_preferencesLocation.getAbsolutePath() + ".lck").delete(); + new File(getLockFileName()).delete(); _fileLock = null; _preferences.clear(); } diff --git a/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/AuthenticationProviderRecovererTest.java b/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/AuthenticationProviderRecovererTest.java index 36e485844f..eed54ef5bf 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/AuthenticationProviderRecovererTest.java +++ b/java/broker/src/test/java/org/apache/qpid/server/configuration/startup/AuthenticationProviderRecovererTest.java @@ -43,7 +43,7 @@ import org.apache.qpid.server.model.adapter.FileSystemPreferencesProvider; import org.apache.qpid.server.model.adapter.PreferencesProviderCreator; import org.apache.qpid.server.plugin.AuthenticationManagerFactory; import org.apache.qpid.server.plugin.QpidServiceLoader; -import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory; +import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory; import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.test.utils.TestFileUtils; @@ -82,44 +82,61 @@ public class AuthenticationProviderRecovererTest extends QpidTestCase public void testRecoverAuthenticationProviderWithPreferencesProvider() { - Map<String, Object> authenticationAttributes = new HashMap<String, Object>(); - authenticationAttributes.put(AuthenticationManagerFactory.ATTRIBUTE_TYPE, AnonymousAuthenticationManagerFactory.PROVIDER_TYPE); - authenticationAttributes.put(AuthenticationProvider.NAME, "test-authenticator"); - UUID authenticationId = UUID.randomUUID(); - - final PreferencesProviderRecoverer preferencesRecoverer = new PreferencesProviderRecoverer(_preferencesProviderCreator); - RecovererProvider recovererProvider = new RecovererProvider() + File authenticationProviderFile = TestFileUtils.createTempFile(this, "test-authenticator.txt", "test_user:test_user"); + try { - @Override - public ConfiguredObjectRecoverer<? extends ConfiguredObject> getRecoverer(String type) + Map<String, Object> authenticationAttributes = new HashMap<String, Object>(); + authenticationAttributes.put(AuthenticationManagerFactory.ATTRIBUTE_TYPE, + PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE); + authenticationAttributes.put(AuthenticationProvider.NAME, "test-authenticator"); + authenticationAttributes.put(PlainPasswordFileAuthenticationManagerFactory.ATTRIBUTE_PATH, + authenticationProviderFile.getAbsolutePath()); + UUID authenticationId = UUID.randomUUID(); + + final PreferencesProviderRecoverer preferencesRecoverer = new PreferencesProviderRecoverer(_preferencesProviderCreator); + RecovererProvider recovererProvider = new RecovererProvider() { - return preferencesRecoverer; - } - }; + @Override + public ConfiguredObjectRecoverer<? extends ConfiguredObject> getRecoverer(String type) + { + return preferencesRecoverer; + } + }; - Map<String, Object> preferencesAttributes = new HashMap<String, Object>(); - UUID preferencesId = UUID.randomUUID(); - preferencesAttributes.put(PreferencesProvider.TYPE, FileSystemPreferencesProvider.class); - preferencesAttributes.put(PreferencesProvider.NAME, "test-provider"); - File file = TestFileUtils.createTempFile(this, ".prefs.json", "{\"test_user\":{\"pref1\": \"pref1Value\", \"pref2\": 1.0} }"); - preferencesAttributes.put(FileSystemPreferencesProvider.PATH, file.getAbsolutePath()); - ConfigurationEntry preferencesEntry = new ConfigurationEntry(preferencesId, PreferencesProvider.class.getSimpleName(), preferencesAttributes, Collections.<UUID>emptySet(), _configurationStore); - when(_configurationStore.getEntry(preferencesId)).thenReturn(preferencesEntry); + Map<String, Object> preferencesAttributes = new HashMap<String, Object>(); + UUID preferencesId = UUID.randomUUID(); + preferencesAttributes.put(PreferencesProvider.TYPE, FileSystemPreferencesProvider.class); + preferencesAttributes.put(PreferencesProvider.NAME, "test-provider"); + File file = TestFileUtils.createTempFile(this, ".prefs.json", + "{\"test_user\":{\"pref1\": \"pref1Value\", \"pref2\": 1.0} }"); + preferencesAttributes.put(FileSystemPreferencesProvider.PATH, file.getAbsolutePath()); + ConfigurationEntry preferencesEntry = new ConfigurationEntry(preferencesId, PreferencesProvider.class.getSimpleName(), + preferencesAttributes, Collections.<UUID> emptySet(), _configurationStore); + when(_configurationStore.getEntry(preferencesId)).thenReturn(preferencesEntry); - ConfigurationEntry authenticationProviderEntry = new ConfigurationEntry(authenticationId, AuthenticationProvider.class.getSimpleName(), authenticationAttributes, Collections.singleton(preferencesId), _configurationStore); - try - { - AuthenticationProvider authenticationProvider = _recoverer.create(recovererProvider, authenticationProviderEntry, _broker); - assertNotNull("Authentication provider was not recovered", authenticationProvider); - assertEquals("Unexpected name", "test-authenticator", authenticationProvider.getName()); - assertEquals("Unexpected id", authenticationId, authenticationProvider.getId()); - PreferencesProvider preferencesProvider = authenticationProvider.getPreferencesProvider(); - assertNotNull("Preferences provider was not recovered", preferencesProvider); - assertEquals("Unexpected path", file.getAbsolutePath(), preferencesProvider.getAttribute(FileSystemPreferencesProvider.PATH)); + ConfigurationEntry authenticationProviderEntry = new ConfigurationEntry(authenticationId, + AuthenticationProvider.class.getSimpleName(), authenticationAttributes, Collections.singleton(preferencesId), + _configurationStore); + try + { + AuthenticationProvider authenticationProvider = _recoverer.create(recovererProvider, authenticationProviderEntry, + _broker); + assertNotNull("Authentication provider was not recovered", authenticationProvider); + assertEquals("Unexpected name", "test-authenticator", authenticationProvider.getName()); + assertEquals("Unexpected id", authenticationId, authenticationProvider.getId()); + PreferencesProvider preferencesProvider = authenticationProvider.getPreferencesProvider(); + assertNotNull("Preferences provider was not recovered", preferencesProvider); + assertEquals("Unexpected path", file.getAbsolutePath(), + preferencesProvider.getAttribute(FileSystemPreferencesProvider.PATH)); + } + finally + { + file.delete(); + } } finally { - file.delete(); + authenticationProviderFile.delete(); } } diff --git a/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java b/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java index d5bde7c34d..591ced2ddf 100644 --- a/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java +++ b/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java @@ -13,17 +13,19 @@ import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.adapter.FileSystemPreferencesProvider; import org.apache.qpid.server.plugin.AuthenticationManagerFactory; -import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManagerFactory; +import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory; import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.test.utils.TestFileUtils; public class PreferencesProviderRestTest extends QpidRestTestCase { - private Map<String, File> _providers; + private Map<String, File> _preferencesProviderFiles; + private File _authenticationProviderFile; public void setUp() throws Exception { - _providers = new HashMap<String, File>(); + _authenticationProviderFile = TestFileUtils.createTempFile(this, ".test.prefs.txt", "test:test"); + _preferencesProviderFiles = new HashMap<String, File>(); super.setUp(); } @@ -35,7 +37,11 @@ public class PreferencesProviderRestTest extends QpidRestTestCase } finally { - for (File file : _providers.values()) + if (_authenticationProviderFile != null) + { + _authenticationProviderFile.delete(); + } + for (File file : _preferencesProviderFiles.values()) { file.delete(); } @@ -47,8 +53,9 @@ public class PreferencesProviderRestTest extends QpidRestTestCase { super.customizeConfiguration(); Map<String, Object> anonymousAuthProviderAttributes = new HashMap<String, Object>(); - anonymousAuthProviderAttributes.put(AuthenticationManagerFactory.ATTRIBUTE_TYPE, AnonymousAuthenticationManagerFactory.PROVIDER_TYPE); - anonymousAuthProviderAttributes.put(AuthenticationProvider.NAME, TestBrokerConfiguration.ENTRY_NAME_ANONYMOUS_PROVIDER); + anonymousAuthProviderAttributes.put(AuthenticationManagerFactory.ATTRIBUTE_TYPE, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE); + anonymousAuthProviderAttributes.put(AuthenticationProvider.NAME, TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "-2"); + anonymousAuthProviderAttributes.put(PlainPasswordFileAuthenticationManagerFactory.ATTRIBUTE_PATH, _authenticationProviderFile.getAbsolutePath()); getBrokerConfiguration().addAuthenticationProviderConfiguration(anonymousAuthProviderAttributes); } @@ -58,7 +65,7 @@ public class PreferencesProviderRestTest extends QpidRestTestCase assertEquals("Unexpected number of providers", 0, providerDetails.size()); createPreferencesProvider(TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER, "test1"); - createPreferencesProvider(TestBrokerConfiguration.ENTRY_NAME_ANONYMOUS_PROVIDER, "test2"); + createPreferencesProvider(TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "-2", "test2"); providerDetails = getRestTestHelper().getJsonAsList("/rest/preferencesprovider"); assertEquals("Unexpected number of providers", 2, providerDetails.size()); @@ -72,6 +79,11 @@ public class PreferencesProviderRestTest extends QpidRestTestCase "/rest/preferencesprovider/" + TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "/test1"); assertProvider(provider); assertEquals("Unexpected provider name ", "test1", provider.get(PreferencesProvider.NAME)); + + Map<String, Object> provider2 = getRestTestHelper().getJsonAsSingletonList( + "/rest/preferencesprovider/" + TestBrokerConfiguration.ENTRY_NAME_AUTHENTICATION_PROVIDER + "-2/test2"); + assertProvider(provider); + assertEquals("Unexpected provider name ", "test2", provider2.get(PreferencesProvider.NAME)); } public void testDeleteProvider() throws Exception @@ -98,7 +110,7 @@ public class PreferencesProviderRestTest extends QpidRestTestCase assertEquals("Unexpected provider name ", "test1", provider.get(PreferencesProvider.NAME)); File file = TestFileUtils.createTempFile(this, ".prefs.json", "{\"admin\":{\"something\": \"somethingValue\"}}"); - _providers.put("new-test1", file); + _preferencesProviderFiles.put("new-test1", file); Map<String, Object> newAttributes = new HashMap<String, Object>(); newAttributes.put(FileSystemPreferencesProvider.PATH, file.getAbsolutePath()); @@ -123,7 +135,7 @@ public class PreferencesProviderRestTest extends QpidRestTestCase String name = (String) provider.get(PreferencesProvider.NAME); assertNotNull("Name cannot be null", name); assertEquals("Unexpected path for provider " + name, (String) provider.get(FileSystemPreferencesProvider.PATH), - _providers.get(name).getAbsolutePath()); + _preferencesProviderFiles.get(name).getAbsolutePath()); } public void assertProviderCommonAttributes(Map<String, Object> provider) @@ -146,7 +158,7 @@ public class PreferencesProviderRestTest extends QpidRestTestCase attributes.put(PreferencesProvider.NAME, providerName); attributes.put(PreferencesProvider.TYPE, FileSystemPreferencesProvider.PROVIDER_TYPE); File file = TestFileUtils.createTempFile(this, ".prefs.json", "{\"admin\":{\"language\": \"en\"}}"); - _providers.put(providerName, file); + _preferencesProviderFiles.put(providerName, file); attributes.put(FileSystemPreferencesProvider.PATH, file.getAbsolutePath()); int responseCode = getRestTestHelper().submitRequest( |
