diff options
Diffstat (limited to 'plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SecurityTest.java')
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SecurityTest.java | 482 |
1 files changed, 241 insertions, 241 deletions
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SecurityTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SecurityTest.java index 77e9fc34ad..e3df67621f 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SecurityTest.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/SecurityTest.java @@ -1,241 +1,241 @@ -/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.util.tests;
-
-import org.eclipse.net4j.util.WrappedException;
-import org.eclipse.net4j.util.security.ChallengeNegotiator;
-import org.eclipse.net4j.util.security.IChallengeResponse;
-import org.eclipse.net4j.util.security.IPasswordCredentialsProvider;
-import org.eclipse.net4j.util.security.NegotiationContext;
-import org.eclipse.net4j.util.security.PasswordCredentials;
-import org.eclipse.net4j.util.security.PasswordCredentialsProvider;
-import org.eclipse.net4j.util.security.Randomizer;
-import org.eclipse.net4j.util.security.ResponseNegotiator;
-import org.eclipse.net4j.util.security.UserManager;
-
-import java.nio.ByteBuffer;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author Eike Stepper
- */
-public class SecurityTest extends AbstractOMTest
-{
- private static final int TIMEOUT = 1000;
-
- private static final String USER_ID = "stepper"; //$NON-NLS-1$
-
- private static final char[] PASSWORD1 = "eike2007".toCharArray(); //$NON-NLS-1$
-
- private static final char[] PASSWORD2 = "invalid".toCharArray(); //$NON-NLS-1$
-
- private static final PasswordCredentials CREDENTIALS = new PasswordCredentials(USER_ID, PASSWORD1);
-
- private IPasswordCredentialsProvider credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS);
-
- public void testRandomizerAcceptsSeedsBeforeActivation()
- {
- Randomizer randomizer = new Randomizer();
- randomizer.setSeed(2l);
- }
-
- public void testSuccess() throws Exception
- {
- // Prepare randomizer
- Randomizer randomizer = new Randomizer();
- randomizer.activate();
-
- // Prepare user manager
- UserManager userManager = new UserManager();
- userManager.activate();
- userManager.addUser(USER_ID, PASSWORD1);
-
- // Create negotiation contexts
- PeerNegotiationContext challengeContext = new PeerNegotiationContext();
- PeerNegotiationContext responseContext = new PeerNegotiationContext();
-
- // Prepare challenge context
- challengeContext.setPeer(responseContext);
- Thread challengeThread = new Thread(challengeContext, "challengeThread"); //$NON-NLS-1$
- challengeThread.start();
-
- // Prepare response context
- responseContext.setPeer(challengeContext);
- Thread responseThread = new Thread(responseContext, "responseThread"); //$NON-NLS-1$
- responseThread.start();
-
- // Prepare response negotiator
- ResponseNegotiator responseNegotiator = new ResponseNegotiator();
- responseNegotiator.setCredentialsProvider(credentialsProvider);
- responseNegotiator.activate();
- responseNegotiator.negotiate(responseContext);
-
- // Prepare challenge negotiator
- ChallengeNegotiator challengeNegotiator = new ChallengeNegotiator();
- challengeNegotiator.setRandomizer(randomizer);
- challengeNegotiator.setUserManager(userManager);
- challengeNegotiator.activate();
- challengeNegotiator.negotiate(challengeContext);
-
- Enum<?> responseState = responseContext.waitUntilFinished(TIMEOUT);
- assertEquals(IChallengeResponse.State.SUCCESS, responseState);
-
- Enum<?> challengeState = challengeContext.waitUntilFinished(TIMEOUT);
- assertEquals(IChallengeResponse.State.SUCCESS, challengeState);
-
- challengeContext.deactivate();
- responseContext.deactivate();
- challengeNegotiator.deactivate();
- responseNegotiator.deactivate();
- userManager.deactivate();
- randomizer.deactivate();
- }
-
- public void testFailure() throws Exception
- {
- // Prepare randomizer
- Randomizer randomizer = new Randomizer();
- randomizer.activate();
-
- // Prepare user manager
- UserManager userManager = new UserManager();
- userManager.activate();
- userManager.addUser(USER_ID, PASSWORD2);
-
- // Create negotiation contexts
- PeerNegotiationContext challengeContext = new PeerNegotiationContext();
- PeerNegotiationContext responseContext = new PeerNegotiationContext();
-
- // Prepare challenge context
- challengeContext.setPeer(responseContext);
- Thread challengeThread = new Thread(challengeContext, "challengeThread"); //$NON-NLS-1$
- challengeThread.start();
-
- // Prepare response context
- responseContext.setPeer(challengeContext);
- Thread responseThread = new Thread(responseContext, "responseThread"); //$NON-NLS-1$
- responseThread.start();
-
- // Prepare response negotiator
- ResponseNegotiator responseNegotiator = new ResponseNegotiator();
- responseNegotiator.setCredentialsProvider(credentialsProvider);
- responseNegotiator.activate();
- responseNegotiator.negotiate(responseContext);
-
- // Prepare challenge negotiator
- ChallengeNegotiator challengeNegotiator = new ChallengeNegotiator();
- challengeNegotiator.setRandomizer(randomizer);
- challengeNegotiator.setUserManager(userManager);
- challengeNegotiator.activate();
- challengeNegotiator.negotiate(challengeContext);
-
- Enum<?> responseState = responseContext.waitUntilFinished(TIMEOUT);
- assertEquals(IChallengeResponse.State.FAILURE, responseState);
-
- Enum<?> challengeState = challengeContext.waitUntilFinished(TIMEOUT);
- assertEquals(IChallengeResponse.State.FAILURE, challengeState);
-
- challengeContext.deactivate();
- responseContext.deactivate();
- challengeNegotiator.deactivate();
- responseNegotiator.deactivate();
- userManager.deactivate();
- randomizer.deactivate();
- }
-
- /**
- * @author Eike Stepper
- */
- private final class PeerNegotiationContext extends NegotiationContext implements Runnable
- {
- private PeerNegotiationContext peer;
-
- private String userID;
-
- private BlockingQueue<ByteBuffer> queue = new LinkedBlockingQueue<ByteBuffer>();
-
- private boolean running;
-
- public PeerNegotiationContext()
- {
- }
-
- @SuppressWarnings("unused")
- public PeerNegotiationContext getPeer()
- {
- return peer;
- }
-
- public void setPeer(PeerNegotiationContext peer)
- {
- this.peer = peer;
- }
-
- @SuppressWarnings("unused")
- public String getUserID()
- {
- return userID;
- }
-
- public void setUserID(String userID)
- {
- this.userID = userID;
- }
-
- public ByteBuffer getBuffer()
- {
- return ByteBuffer.allocateDirect(4096);
- }
-
- public void transmitBuffer(ByteBuffer buffer)
- {
- buffer.flip();
- queue.add(buffer);
- }
-
- public void deactivate()
- {
- running = false;
- }
-
- public void run()
- {
- running = true;
- while (running)
- {
- if (peer != null)
- {
- Receiver receiver = peer.getReceiver();
- if (receiver != null)
- {
- ByteBuffer buffer = null;
-
- try
- {
- buffer = queue.poll(20, TimeUnit.MILLISECONDS);
- }
- catch (InterruptedException ex)
- {
- throw WrappedException.wrap(ex);
- }
-
- if (buffer != null)
- {
- receiver.receiveBuffer(peer, buffer);
- }
- }
- }
- }
- }
- }
-}
+/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.net4j.util.tests; + +import org.eclipse.net4j.util.WrappedException; +import org.eclipse.net4j.util.security.ChallengeNegotiator; +import org.eclipse.net4j.util.security.IChallengeResponse; +import org.eclipse.net4j.util.security.IPasswordCredentialsProvider; +import org.eclipse.net4j.util.security.NegotiationContext; +import org.eclipse.net4j.util.security.PasswordCredentials; +import org.eclipse.net4j.util.security.PasswordCredentialsProvider; +import org.eclipse.net4j.util.security.Randomizer; +import org.eclipse.net4j.util.security.ResponseNegotiator; +import org.eclipse.net4j.util.security.UserManager; + +import java.nio.ByteBuffer; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; + +/** + * @author Eike Stepper + */ +public class SecurityTest extends AbstractOMTest +{ + private static final int TIMEOUT = 1000; + + private static final String USER_ID = "stepper"; //$NON-NLS-1$ + + private static final char[] PASSWORD1 = "eike2007".toCharArray(); //$NON-NLS-1$ + + private static final char[] PASSWORD2 = "invalid".toCharArray(); //$NON-NLS-1$ + + private static final PasswordCredentials CREDENTIALS = new PasswordCredentials(USER_ID, PASSWORD1); + + private IPasswordCredentialsProvider credentialsProvider = new PasswordCredentialsProvider(CREDENTIALS); + + public void testRandomizerAcceptsSeedsBeforeActivation() + { + Randomizer randomizer = new Randomizer(); + randomizer.setSeed(2l); + } + + public void testSuccess() throws Exception + { + // Prepare randomizer + Randomizer randomizer = new Randomizer(); + randomizer.activate(); + + // Prepare user manager + UserManager userManager = new UserManager(); + userManager.activate(); + userManager.addUser(USER_ID, PASSWORD1); + + // Create negotiation contexts + PeerNegotiationContext challengeContext = new PeerNegotiationContext(); + PeerNegotiationContext responseContext = new PeerNegotiationContext(); + + // Prepare challenge context + challengeContext.setPeer(responseContext); + Thread challengeThread = new Thread(challengeContext, "challengeThread"); //$NON-NLS-1$ + challengeThread.start(); + + // Prepare response context + responseContext.setPeer(challengeContext); + Thread responseThread = new Thread(responseContext, "responseThread"); //$NON-NLS-1$ + responseThread.start(); + + // Prepare response negotiator + ResponseNegotiator responseNegotiator = new ResponseNegotiator(); + responseNegotiator.setCredentialsProvider(credentialsProvider); + responseNegotiator.activate(); + responseNegotiator.negotiate(responseContext); + + // Prepare challenge negotiator + ChallengeNegotiator challengeNegotiator = new ChallengeNegotiator(); + challengeNegotiator.setRandomizer(randomizer); + challengeNegotiator.setUserManager(userManager); + challengeNegotiator.activate(); + challengeNegotiator.negotiate(challengeContext); + + Enum<?> responseState = responseContext.waitUntilFinished(TIMEOUT); + assertEquals(IChallengeResponse.State.SUCCESS, responseState); + + Enum<?> challengeState = challengeContext.waitUntilFinished(TIMEOUT); + assertEquals(IChallengeResponse.State.SUCCESS, challengeState); + + challengeContext.deactivate(); + responseContext.deactivate(); + challengeNegotiator.deactivate(); + responseNegotiator.deactivate(); + userManager.deactivate(); + randomizer.deactivate(); + } + + public void testFailure() throws Exception + { + // Prepare randomizer + Randomizer randomizer = new Randomizer(); + randomizer.activate(); + + // Prepare user manager + UserManager userManager = new UserManager(); + userManager.activate(); + userManager.addUser(USER_ID, PASSWORD2); + + // Create negotiation contexts + PeerNegotiationContext challengeContext = new PeerNegotiationContext(); + PeerNegotiationContext responseContext = new PeerNegotiationContext(); + + // Prepare challenge context + challengeContext.setPeer(responseContext); + Thread challengeThread = new Thread(challengeContext, "challengeThread"); //$NON-NLS-1$ + challengeThread.start(); + + // Prepare response context + responseContext.setPeer(challengeContext); + Thread responseThread = new Thread(responseContext, "responseThread"); //$NON-NLS-1$ + responseThread.start(); + + // Prepare response negotiator + ResponseNegotiator responseNegotiator = new ResponseNegotiator(); + responseNegotiator.setCredentialsProvider(credentialsProvider); + responseNegotiator.activate(); + responseNegotiator.negotiate(responseContext); + + // Prepare challenge negotiator + ChallengeNegotiator challengeNegotiator = new ChallengeNegotiator(); + challengeNegotiator.setRandomizer(randomizer); + challengeNegotiator.setUserManager(userManager); + challengeNegotiator.activate(); + challengeNegotiator.negotiate(challengeContext); + + Enum<?> responseState = responseContext.waitUntilFinished(TIMEOUT); + assertEquals(IChallengeResponse.State.FAILURE, responseState); + + Enum<?> challengeState = challengeContext.waitUntilFinished(TIMEOUT); + assertEquals(IChallengeResponse.State.FAILURE, challengeState); + + challengeContext.deactivate(); + responseContext.deactivate(); + challengeNegotiator.deactivate(); + responseNegotiator.deactivate(); + userManager.deactivate(); + randomizer.deactivate(); + } + + /** + * @author Eike Stepper + */ + private final class PeerNegotiationContext extends NegotiationContext implements Runnable + { + private PeerNegotiationContext peer; + + private String userID; + + private BlockingQueue<ByteBuffer> queue = new LinkedBlockingQueue<ByteBuffer>(); + + private boolean running; + + public PeerNegotiationContext() + { + } + + @SuppressWarnings("unused") + public PeerNegotiationContext getPeer() + { + return peer; + } + + public void setPeer(PeerNegotiationContext peer) + { + this.peer = peer; + } + + @SuppressWarnings("unused") + public String getUserID() + { + return userID; + } + + public void setUserID(String userID) + { + this.userID = userID; + } + + public ByteBuffer getBuffer() + { + return ByteBuffer.allocateDirect(4096); + } + + public void transmitBuffer(ByteBuffer buffer) + { + buffer.flip(); + queue.add(buffer); + } + + public void deactivate() + { + running = false; + } + + public void run() + { + running = true; + while (running) + { + if (peer != null) + { + Receiver receiver = peer.getReceiver(); + if (receiver != null) + { + ByteBuffer buffer = null; + + try + { + buffer = queue.poll(20, TimeUnit.MILLISECONDS); + } + catch (InterruptedException ex) + { + throw WrappedException.wrap(ex); + } + + if (buffer != null) + { + receiver.receiveBuffer(peer, buffer); + } + } + } + } + } + } +} |