TokenOperationsStoreTest.java revision 537857b204a4425e0ea257b0413a02c5c7c5e266
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck/*
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * The contents of this file are subject to the terms of the Common Development and
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * Distribution License (the License). You may not use this file except in compliance with the
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * License.
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck *
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * specific language governing permission and limitations under the License.
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck *
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * When distributing Covered Software, include this CDDL Header Notice in each file and include
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * Header, with the fields enclosed by brackets [] replaced by your own identifying
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * information: "Portions copyright [year] [name of copyright owner]".
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck *
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck * Copyright 2013-2014 ForgeRock AS.
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck */
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckpackage org.forgerock.openam.cts.monitoring.impl.operations;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport org.forgerock.openam.cts.CTSOperation;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport org.forgerock.openam.cts.api.TokenType;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport org.testng.annotations.BeforeMethod;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport org.testng.annotations.Test;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck
f0fb1b003bde1f700fa30fac4f02ec87a65271d8Renee Danson Sommerfeldimport java.util.HashMap;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport java.util.Map;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport static org.mockito.BDDMockito.given;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport static org.mockito.Mockito.*;
d62bc4badc1c1f1549c961cfb8b420e650e1272byzimport static org.testng.Assert.assertEquals;
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeckimport static org.testng.Assert.assertNotNull;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyimport static org.testng.Assert.assertTrue;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeypublic class TokenOperationsStoreTest {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey private TokenOperationsStore tokenOperationsStore;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey private TokenOperationsStore.OperationStoreFactory operationStoreFactory;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey private Map<TokenType, OperationStore> tokenOperations;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey private OperationStore operationStore;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey private OperationStore operationFailureStore;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @BeforeMethod
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void setUp() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey operationStoreFactory = mock(TokenOperationsStore.OperationStoreFactory.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations = new HashMap<TokenType, OperationStore>();
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey operationStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey operationFailureStore = new OperationStore();
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore = new TokenOperationsStore(operationStoreFactory, tokenOperations, operationStore, operationFailureStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldCreateTokenOperationsStoreWithDefaultConstructor() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenOperationsStore localTokenOperationsStore = new TokenOperationsStore();
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertNotNull(localTokenOperationsStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldAddTokenOperationForSpecificTokenType() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey OperationStore typeOperationStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(operationStoreFactory.createOperationStore()).willReturn(typeOperationStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(tokenType, operation, true);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertTrue(tokenOperations.containsKey(TokenType.OAUTH));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey verify(typeOperationStore).add(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldAddTokenOperationForSpecificTokenTypeToExistingOperationStore() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey OperationStore typeOperationStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations.put(TokenType.OAUTH, typeOperationStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(tokenType, operation, true);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey verifyZeroInteractions(operationStoreFactory);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey verify(typeOperationStore).add(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldAddTokenOperationForSpecificTokenTypeUsingDefaultOperationStoreFactory() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenOperationsStore.OperationStoreFactory operationStoreFactory =
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey new TokenOperationsStore.OperationStoreFactory();
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenOperationsStore localTokenOperationsStore = new TokenOperationsStore(operationStoreFactory,
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations, operationStore, operationFailureStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey localTokenOperationsStore.addTokenOperation(tokenType, operation, true);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertTrue(tokenOperations.containsKey(TokenType.OAUTH));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldAddTokenOperation() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(operation, true);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey verify(operationStore).add(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck public void shouldGetAverageOperationsPerPeriodForSpecificTokenType() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
d71dbb732372504daff1f1783bc0d8864ce9bd50jbeck //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey OperationStore typeOperationStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations.put(TokenType.OAUTH, typeOperationStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(typeOperationStore.getAverageRate(operation)).willReturn(1D);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey double result = tokenOperationsStore.getAverageOperationsPerPeriod(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1D);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetAverageFailureRateForOperation() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Use mock failure store for this test for simplicity
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey operationFailureStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore = new TokenOperationsStore(operationStoreFactory, tokenOperations, operationStore, operationFailureStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.READ;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey double failureRate = 3.14159;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(operationFailureStore.getAverageRate(operation)).willReturn(failureRate);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey double result = tokenOperationsStore.getAverageOperationFailuresPerPeriod(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, failureRate);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void getAverageOperationsPerPeriodForSpecificTokenTypeShouldReturnZeroIfTokenTypeNotSet() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey double result = tokenOperationsStore.getAverageOperationsPerPeriod(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 0D);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetAverageOperationsPerPeriod() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(operationStore.getAverageRate(operation)).willReturn(1D);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey double result = tokenOperationsStore.getAverageOperationsPerPeriod(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1D);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetMaximumOperationsPerPeriodForSpecificTokenType() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey OperationStore typeOperationStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations.put(TokenType.OAUTH, typeOperationStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(typeOperationStore.getMaxRate(operation)).willReturn(1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getMaximumOperationsPerPeriod(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void getMaximumOperationsPerPeriodForSpecificTokenTypeShouldReturnZeroIfTokenTypeNotSet() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getMaximumOperationsPerPeriod(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 0L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetMaximumOperationsPerPeriod() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(operationStore.getMaxRate(operation)).willReturn(1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getMaximumOperationsPerPeriod(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetMinimumOperationsPerPeriodForSpecificTokenType() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey OperationStore typeOperationStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations.put(TokenType.OAUTH, typeOperationStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(typeOperationStore.getMinRate(operation)).willReturn(1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getMinimumOperationsPerPeriod(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void getMinimumOperationsPerPeriodForSpecificTokenTypeShouldReturnZeroIfTokenTypeNotSet() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getMinimumOperationsPerPeriod(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 0L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetMinimumOperationsPerPeriod() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(operationStore.getMinRate(operation)).willReturn(1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getMinimumOperationsPerPeriod(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetOperationsCumulativeCountForSpecificTokenType() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey OperationStore typeOperationStore = mock(OperationStore.class);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations.put(TokenType.OAUTH, typeOperationStore);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(typeOperationStore.getCount(operation)).willReturn(1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getOperationsCumulativeCount(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void getOperationsCumulativeCountForSpecificTokenTypeShouldReturnZeroIfTokenTypeNotSet() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey TokenType tokenType = TokenType.OAUTH;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getOperationsCumulativeCount(tokenType, operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 0L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldGetOperationsCumulativeCount() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.CREATE;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey given(operationStore.getCount(operation)).willReturn(1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long result = tokenOperationsStore.getOperationsCumulativeCount(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey //Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(result, 1L);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldUpdateFailureCountOnFailure() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.READ;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long originalFailureCount = tokenOperationsStore.getOperationFailuresCumulativeCount(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(operation, false);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(originalFailureCount + 1, tokenOperationsStore.getOperationFailuresCumulativeCount(operation));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldNotUpdateFailureCountOnSuccess() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.READ;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long originalFailureCount = tokenOperationsStore.getOperationFailuresCumulativeCount(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(operation, true);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(originalFailureCount, tokenOperationsStore.getOperationFailuresCumulativeCount(operation));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldUpdateFailureCountForAllTokenTypes() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey CTSOperation operation = CTSOperation.READ;
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey long originalFailureCount = tokenOperationsStore.getOperationFailuresCumulativeCount(operation);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations.put(TokenType.REST, new OperationStore());
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperations.put(TokenType.OAUTH, new OperationStore());
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(TokenType.REST, operation, false);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(TokenType.OAUTH, operation, false);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(originalFailureCount + 2, tokenOperationsStore.getOperationFailuresCumulativeCount(operation));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey @Test
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey public void shouldHaveSeparateFailureCountsPerOperation() {
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Given
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // When
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(CTSOperation.CREATE, false);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(CTSOperation.DELETE, false);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey tokenOperationsStore.addTokenOperation(CTSOperation.DELETE, false);
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey // Then
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(1, tokenOperationsStore.getOperationFailuresCumulativeCount(CTSOperation.CREATE));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey assertEquals(2, tokenOperationsStore.getOperationFailuresCumulativeCount(CTSOperation.DELETE));
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey }
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey}
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey