You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by zh...@apache.org on 2010/10/13 06:46:04 UTC

svn commit: r1021995 - in /shindig/trunk/java: common/src/main/java/org/apache/shindig/auth/ common/src/test/java/org/apache/shindig/auth/ common/src/test/java/org/apache/shindig/common/testing/ gadgets/src/main/java/org/apache/shindig/gadgets/servlet/...

Author: zhoresh
Date: Wed Oct 13 04:46:03 2010
New Revision: 1021995

URL: http://svn.apache.org/viewvc?rev=1021995&view=rev
Log:
Ref http://codereview.appspot.com/2445041/
Patch by mhermanto - Update common container endpoint with response and expiry time

Added:
    shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BasicSecurityTokenCodecTest.java
Modified:
    shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BasicSecurityTokenCodec.java
    shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodec.java
    shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/DefaultSecurityTokenCodec.java
    shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/SecurityTokenCodec.java
    shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java
    shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java
    shindig/trunk/java/common/src/test/java/org/apache/shindig/common/testing/FakeGadgetToken.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BasicSecurityTokenCodec.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BasicSecurityTokenCodec.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BasicSecurityTokenCodec.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BasicSecurityTokenCodec.java Wed Oct 13 04:46:03 2010
@@ -99,6 +99,11 @@ public class BasicSecurityTokenCodec imp
     }
   }
 
+  public Long getTokenExpiration(SecurityToken token) {
+    // TODO: Support and/or implement this operation.
+    return null;
+  }
+
   /**
    * Creates a signer with 24 hour token expiry
    */

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodec.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodec.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodec.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodec.java Wed Oct 13 04:46:03 2010
@@ -133,4 +133,9 @@ public class BlobCrypterSecurityTokenCod
       throw new SecurityTokenException(e);
     }
   }
+
+  public Long getTokenExpiration(SecurityToken token) {
+    // TODO: Support and/or implement this operation.
+    return null;
+  }
 }

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/DefaultSecurityTokenCodec.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/DefaultSecurityTokenCodec.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/DefaultSecurityTokenCodec.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/DefaultSecurityTokenCodec.java Wed Oct 13 04:46:03 2010
@@ -18,11 +18,11 @@
  */
 package org.apache.shindig.auth;
 
-import org.apache.shindig.config.ContainerConfig;
-
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 
+import org.apache.shindig.config.ContainerConfig;
+
 import java.util.Map;
 
 /**
@@ -74,4 +74,8 @@ public class DefaultSecurityTokenCodec i
     }
     return codec.encodeToken(token);
   }
+
+  public Long getTokenExpiration(SecurityToken token) throws SecurityTokenException {
+    return codec.getTokenExpiration(token);
+  }
 }

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/SecurityTokenCodec.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/SecurityTokenCodec.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/SecurityTokenCodec.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/auth/SecurityTokenCodec.java Wed Oct 13 04:46:03 2010
@@ -35,7 +35,7 @@ public interface SecurityTokenCodec {
    * parameters can be passed as seen fit.
    */
   String SECURITY_TOKEN_NAME = "token";
-  
+
   /**
    * Active URL for the request.  Must include protocol, host, and port.  May include path
    * and may include query.
@@ -53,4 +53,7 @@ public interface SecurityTokenCodec {
       throws SecurityTokenException;
 
   String encodeToken(SecurityToken token) throws SecurityTokenException;
+
+  Long getTokenExpiration(SecurityToken token) throws SecurityTokenException;
+
 }

Added: shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BasicSecurityTokenCodecTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BasicSecurityTokenCodecTest.java?rev=1021995&view=auto
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BasicSecurityTokenCodecTest.java (added)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BasicSecurityTokenCodecTest.java Wed Oct 13 04:46:03 2010
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.auth;
+
+import static junit.framework.Assert.assertNull;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class BasicSecurityTokenCodecTest {
+
+  private BasicSecurityTokenCodec codec;
+
+  @Before
+  public void setUp() throws Exception {
+    codec = new BasicSecurityTokenCodec();
+  }
+
+  @Test
+  public void testGetTokenExpiration() throws Exception {
+    assertNull(codec.getTokenExpiration(null));
+  }
+}

Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/BlobCrypterSecurityTokenCodecTest.java Wed Oct 13 04:46:03 2010
@@ -19,6 +19,7 @@
 package org.apache.shindig.auth;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -32,6 +33,8 @@ import org.apache.shindig.config.Contain
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 
+import junit.framework.Assert;
+
 import org.junit.Before;
 import org.junit.Test;
 
@@ -232,4 +235,9 @@ public class BlobCrypterSecurityTokenCod
       assertTrue(e.getMessage(), e.getMessage().contains("Load failed"));
     }
   }
+
+  @Test
+  public void testGetTokenExpiration() throws Exception {
+    Assert.assertNull(codec.getTokenExpiration(null));
+  }
 }

Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/auth/DefaultSecurityTokenCodecTest.java Wed Oct 13 04:46:03 2010
@@ -19,11 +19,11 @@
 package org.apache.shindig.auth;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import org.apache.shindig.config.AbstractContainerConfig;
-import org.apache.shindig.config.ContainerConfigException;
 
 import com.google.common.collect.Lists;
 
@@ -41,7 +41,7 @@ public class DefaultSecurityTokenCodecTe
   private static class FakeContainerConfig extends AbstractContainerConfig {
     private final String tokenType;
 
-    public FakeContainerConfig(String tokenType) throws ContainerConfigException {
+    public FakeContainerConfig(String tokenType) {
       this.tokenType = tokenType;
     }
 
@@ -75,6 +75,7 @@ public class DefaultSecurityTokenCodecTe
     assertEquals("v", st.getViewerId());
     assertEquals("appurl", st.getAppUrl());
     assertEquals("container", st.getContainer());
+    assertNull(codec.getTokenExpiration(st));
   }
 
   @Test

Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/common/testing/FakeGadgetToken.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/testing/FakeGadgetToken.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/common/testing/FakeGadgetToken.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/common/testing/FakeGadgetToken.java Wed Oct 13 04:46:03 2010
@@ -153,7 +153,8 @@ public class FakeGadgetToken extends Abs
   public boolean isAnonymous() {
     return false;
   }
-  
+
+  @Override
   public String getActiveUrl() {
     return activeUrl;
   }
@@ -220,5 +221,9 @@ public class FakeGadgetToken extends Abs
     public String encodeToken(SecurityToken token) throws SecurityTokenException {
       return null; // NOT USED
     }
+
+    public Long getTokenExpiration(SecurityToken token) throws SecurityTokenException {
+      return null; // NOT USED
+    }
   }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java Wed Oct 13 04:46:03 2010
@@ -21,6 +21,7 @@ package org.apache.shindig.gadgets.servl
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableMap;
 import com.google.inject.Inject;
+import com.google.inject.name.Named;
 
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.auth.SecurityTokenCodec;
@@ -88,18 +89,20 @@ public class GadgetsHandlerService {
   protected final Processor processor;
   protected final IframeUriManager iframeUriManager;
   protected final SecurityTokenCodec securityTokenCodec;
-
   protected final BeanDelegator beanDelegator;
+  protected final long specRefreshInterval;
   protected final BeanFilter beanFilter;
 
   @Inject
   public GadgetsHandlerService(TimeSource timeSource, Processor processor,
       IframeUriManager iframeUriManager, SecurityTokenCodec securityTokenCodec,
+      @Named("shindig.cache.xml.refreshInterval") long specRefreshInterval,
       BeanFilter beanFilter) {
     this.timeSource = timeSource;
     this.processor = processor;
     this.iframeUriManager = iframeUriManager;
     this.securityTokenCodec = securityTokenCodec;
+    this.specRefreshInterval = specRefreshInterval;
     this.beanFilter = beanFilter;
 
     this.beanDelegator = new BeanDelegator(apiClasses, enumConversionMap);
@@ -129,12 +132,11 @@ public class GadgetsHandlerService {
     String iframeUrl =
         isFieldIncluded(fields, "iframeurl")  ?
             iframeUriManager.makeRenderingUri(gadget).toString() : null;
-    // TODO: Figure out url expiration time
     Boolean needsTokenRefresh =
         isFieldIncluded(fields, "needstokenrefresh") ?
             gadget.getAllFeatures().contains("auth-refresh") : null;
     return createMetadataResponse(context.getUrl(), gadget.getSpec(), iframeUrl,
-        needsTokenRefresh, fields, null);
+        needsTokenRefresh, fields, timeSource.currentTimeMillis() + specRefreshInterval);
   }
 
   private boolean isFieldIncluded(Set<String> fields, String name) {
@@ -162,8 +164,8 @@ public class GadgetsHandlerService {
     SecurityToken tokenData = convertToken(request.getToken(), request.getContainer(),
         request.getUrl().toString());
     String token = securityTokenCodec.encodeToken(tokenData);
-    // TODO: Calculate token expiration in response
-    return createTokenResponse(request.getUrl(), token, fields, null);
+    Long expiryTimeMs = securityTokenCodec.getTokenExpiration(tokenData);
+    return createTokenResponse(request.getUrl(), token, fields, expiryTimeMs);
   }
 
   /**
@@ -277,7 +279,9 @@ public class GadgetsHandlerService {
       Uri url, String token, Set<String> fields, Long tokenExpire) {
     return (GadgetsHandlerApi.TokenResponse) beanFilter.createFilteredBean(
         beanDelegator.createDelegator("empty", GadgetsHandlerApi.TokenResponse.class,
-            ImmutableMap.<String, Object>of("url", url, "error", BeanDelegator.NULL,
+            ImmutableMap.<String, Object>of(
+                "url", url,
+                "error", BeanDelegator.NULL,
                 "token", BeanDelegator.nullable(token),
                 "responsetimems", timeSource.currentTimeMillis(),
                 "expiretimems", BeanDelegator.nullable(tokenExpire))),

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java Wed Oct 13 04:46:03 2010
@@ -19,7 +19,6 @@
 package org.apache.shindig.gadgets.servlet;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 
 import org.apache.shindig.auth.SecurityToken;
@@ -30,7 +29,6 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.common.util.FakeTimeSource;
 import org.apache.shindig.gadgets.features.FeatureRegistry;
 import org.apache.shindig.gadgets.process.ProcessingException;
-import org.apache.shindig.gadgets.spec.GadgetSpec;
 import org.apache.shindig.protocol.conversion.BeanDelegator;
 import org.apache.shindig.protocol.conversion.BeanFilter;
 import org.easymock.EasyMock;
@@ -46,11 +44,15 @@ public class GadgetsHandlerServiceTest e
   private static final String OWNER = "<owner>";
   private static final String VIEWER = "<viewer>";
   private static final String CONTAINER = "container";
+  private static final Long CURRENT_TIME_MS = 123L;
+  private static final Long SPEC_REFRESH_INTERVAL_MS = 456L;
+  private static final Long METADATA_EXPIRY_TIME_MS = CURRENT_TIME_MS + SPEC_REFRESH_INTERVAL_MS;
+  private static final Long TOKEN_EXPIRY_TIME_MS = CURRENT_TIME_MS + 789L;
 
   private final BeanDelegator delegator = new BeanDelegator(
     GadgetsHandlerService.apiClasses, GadgetsHandlerService.enumConversionMap);
 
-  private final FakeTimeSource timeSource = new FakeTimeSource();
+  private final FakeTimeSource timeSource = new FakeTimeSource(CURRENT_TIME_MS);
   private final FeatureRegistry mockRegistry = mock(FeatureRegistry.class);
   private final FakeProcessor processor = new FakeProcessor(mockRegistry);
   private final FakeIframeUriManager urlGenerator = new FakeIframeUriManager();
@@ -62,7 +64,7 @@ public class GadgetsHandlerServiceTest e
   public void setUp() {
     tokenCodec = new FakeSecurityTokenCodec();
     gadgetHandler = new GadgetsHandlerService(timeSource, processor, urlGenerator,
-        tokenCodec, new BeanFilter());
+        tokenCodec, SPEC_REFRESH_INTERVAL_MS, new BeanFilter());
   }
 
   // Next test verify that the API data classes are configured correctly.
@@ -97,6 +99,8 @@ public class GadgetsHandlerServiceTest e
     assertEquals(1, response.getUserPrefs().size());
     assertEquals("up_one", response.getUserPrefs().get("up_one").getDisplayName());
     assertEquals(4, response.getUserPrefs().get("up_one").getEnumValues().size());
+    assertEquals(CURRENT_TIME_MS, response.getResponseTimeMs());
+    assertEquals(METADATA_EXPIRY_TIME_MS, response.getExpireTimeMs());
     verify();
   }
 
@@ -174,11 +178,14 @@ public class GadgetsHandlerServiceTest e
         createTokenData(OWNER, VIEWER), ImmutableList.of("*"));
     replay();
     tokenCodec.encodedToken = TOKEN;
+    tokenCodec.tokenExpiryTimeMs = TOKEN_EXPIRY_TIME_MS;
     GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
     assertEquals(TOKEN, response.getToken());
-    assertEquals(OWNER, tokenCodec.tokenData.getOwnerId());
-    assertEquals(VIEWER, tokenCodec.tokenData.getViewerId());
-    assertEquals(CONTAINER, tokenCodec.tokenData.getContainer());
+    assertEquals(CURRENT_TIME_MS, response.getResponseTimeMs());
+    assertEquals(TOKEN_EXPIRY_TIME_MS, response.getExpireTimeMs());
+    assertEquals(OWNER, tokenCodec.inputToken.getOwnerId());
+    assertEquals(VIEWER, tokenCodec.inputToken.getViewerId());
+    assertEquals(CONTAINER, tokenCodec.inputToken.getContainer());
     verify();
   }
 
@@ -228,73 +235,10 @@ public class GadgetsHandlerServiceTest e
     tokenCodec.encodedToken = TOKEN;
     GadgetsHandlerApi.TokenResponse response = gadgetHandler.getToken(request);
     assertEquals(TOKEN, response.getToken());
-    assertNull(CONTAINER, tokenCodec.tokenData);
+    assertNull(CONTAINER, tokenCodec.inputToken);
     verify();
   }
 
-  @Test
-  public void testCreateErrorResponse() throws Exception {
-    GadgetsHandlerApi.BaseResponse res = gadgetHandler.createErrorResponse(null, 404, null);
-    assertEquals(404, res.getError().getCode());
-    assertNull(res.getError().getMessage());
-    assertNull(res.getUrl());
-    BeanDelegator.validateDelegator(res);
-    res = gadgetHandler.createErrorResponse(Uri.parse("url"), 500, "error");
-    assertEquals("error", res.getError().getMessage());
-    assertEquals("url", res.getUrl().toString());
-    BeanDelegator.validateDelegator(res);
-  }
-
-  @Test
-  public void testCreateErrorResponseFromException() throws Exception {
-    GadgetsHandlerApi.BaseResponse res = gadgetHandler.createErrorResponse(
-        Uri.parse("url"), new RuntimeException("test"), "error");
-    assertEquals("error", res.getError().getMessage());
-    assertEquals("url", res.getUrl().toString());
-    assertEquals(500, res.getError().getCode());
-    BeanDelegator.validateDelegator(res);
-    res = gadgetHandler.createErrorResponse(
-        Uri.parse("url"), new ProcessingException("test", 404), "error");
-    assertEquals("test", res.getError().getMessage());
-    assertEquals("url", res.getUrl().toString());
-    assertEquals(404, res.getError().getCode());
-    BeanDelegator.validateDelegator(res);
-  }
-
-  @Test
-  public void testCreateMetadataResponse() throws Exception {
-    GadgetsHandlerApi.MetadataResponse res = gadgetHandler.createMetadataResponse(
-        Uri.parse("gadgeturl"), new GadgetSpec(Uri.parse("#"), FakeProcessor.SPEC_XML),
-        null, null, ImmutableSet.of("*"), null);
-    assertNull(res.getIframeUrl());
-    assertNull(res.getNeedsTokenRefresh());
-    assertNull(res.getExpireTimeMs());
-    assertEquals(FakeProcessor.SPEC_TITLE, res.getModulePrefs().getTitle());
-    BeanDelegator.validateDelegator(res);
-    res = gadgetHandler.createMetadataResponse(
-        Uri.parse("gadgeturl"), new GadgetSpec(Uri.parse("#"), FakeProcessor.SPEC_XML),
-        "iframeurl", true, ImmutableSet.of("*"), 3L);
-    assertEquals("iframeurl", res.getIframeUrl());
-    assertEquals(true, res.getNeedsTokenRefresh().booleanValue());
-    assertEquals(3L, res.getExpireTimeMs().longValue());
-    BeanDelegator.validateDelegator(res);
-  }
-
-  @Test
-  public void testCreateTokenResponse() throws Exception {
-    GadgetsHandlerApi.TokenResponse res = gadgetHandler.createTokenResponse(Uri.parse("#"), null,
-        ImmutableSet.of("*"), null);
-    BeanDelegator.validateDelegator(res);
-    assertNull(res.getToken());
-    assertNull(res.getExpireTimeMs());
-    res = gadgetHandler.createTokenResponse(Uri.parse("#"), "token",
-        ImmutableSet.of("*"), 100L);
-    BeanDelegator.validateDelegator(res);
-    assertEquals("token", res.getToken());
-    assertEquals(100L, res.getExpireTimeMs().longValue());
-
-  }
-
   private GadgetsHandlerApi.TokenData createTokenData(String ownerId, String viewerId) {
     GadgetsHandlerApi.TokenData token = mock(GadgetsHandlerApi.TokenData.class);
     if (ownerId != null) {
@@ -328,12 +272,13 @@ public class GadgetsHandlerServiceTest e
   }
 
   private class FakeSecurityTokenCodec implements SecurityTokenCodec {
+    public SecurityToken inputToken = null;
     public SecurityTokenException exc = null;
-    public SecurityToken tokenData = null;
     public String encodedToken = null;
+    public Long tokenExpiryTimeMs = null;
 
     public String encodeToken(SecurityToken token) throws SecurityTokenException {
-      tokenData = token;
+      inputToken = token;
       if (exc != null) {
         throw exc;
       }
@@ -345,7 +290,15 @@ public class GadgetsHandlerServiceTest e
       if (exc != null) {
         throw exc;
       }
-      return tokenData;
+      return inputToken;
+    }
+
+    public Long getTokenExpiration(SecurityToken token) throws SecurityTokenException {
+      inputToken = token;
+      if (exc != null) {
+        throw exc;
+      }
+      return tokenExpiryTimeMs;
     }
   }
 }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java?rev=1021995&r1=1021994&r2=1021995&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java Wed Oct 13 04:46:03 2010
@@ -57,6 +57,8 @@ public class GadgetsHandlerTest extends 
   private static final String GADGET2_URL = FakeProcessor.SPEC_URL2 .toString();
   private static final String CONTAINER = "container";
   private static final String TOKEN = "_nekot_";
+  private static final Long SPEC_REFRESH_INTERVAL = 123L;
+  private static final Long EXPIRY_TIME_MS = 456L;
 
   private final FakeTimeSource timeSource = new FakeTimeSource();
   private final FakeProcessor processor = new FakeProcessor();
@@ -78,8 +80,8 @@ public class GadgetsHandlerTest extends 
 
   private void registerGadgetsHandler(SecurityTokenCodec codec) {
     BeanFilter beanFilter = new BeanFilter();
-    GadgetsHandlerService service =
-        new GadgetsHandlerService(timeSource, processor, urlGenerator, codec, beanFilter);
+    GadgetsHandlerService service = new GadgetsHandlerService(timeSource, processor,
+        urlGenerator, codec, SPEC_REFRESH_INTERVAL, beanFilter);
     GadgetsHandler handler =
         new GadgetsHandler(new TestExecutorService(), service, beanFilter);
     registry = new DefaultHandlerRegistry(
@@ -215,6 +217,8 @@ public class GadgetsHandlerTest extends 
     SecurityTokenCodec codec = EasyMock.createMock(SecurityTokenCodec.class);
     Capture<SecurityToken> tokenCapture = new Capture<SecurityToken>();
     EasyMock.expect(codec.encodeToken(EasyMock.capture(tokenCapture))).andReturn(TOKEN).anyTimes();
+    EasyMock.expect(codec.getTokenExpiration(EasyMock.capture(tokenCapture)))
+        .andReturn(EXPIRY_TIME_MS).anyTimes();
     replay(codec);
 
     registerGadgetsHandler(codec);
@@ -292,6 +296,8 @@ public class GadgetsHandlerTest extends 
         .andReturn(TOKEN);
     EasyMock.expect(codec.encodeToken(EasyMock.isA(SecurityToken.class)))
         .andThrow(new SecurityTokenException("blah"));
+    EasyMock.expect(codec.getTokenExpiration(EasyMock.isA(SecurityToken.class)))
+        .andReturn(EXPIRY_TIME_MS).anyTimes();
     replay(codec);
 
     registerGadgetsHandler(codec);