Skip to content
This repository has been archived by the owner on Jul 29, 2021. It is now read-only.

Commit

Permalink
feat: allows to configure top APIs displayed on portal
Browse files Browse the repository at this point in the history
  • Loading branch information
aelamrani authored and NicolasGeraud committed Feb 23, 2018
1 parent 484af1f commit f475d3b
Show file tree
Hide file tree
Showing 4 changed files with 138 additions and 0 deletions.
89 changes: 89 additions & 0 deletions src/test/java/io/gravitee/repository/ParameterRepositoryTest.java
@@ -0,0 +1,89 @@
/**
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
*
* Licensed 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 io.gravitee.repository;

import io.gravitee.repository.config.AbstractRepositoryTest;
import io.gravitee.repository.management.model.Parameter;
import org.junit.Test;

import java.util.Optional;

import static org.junit.Assert.*;

public class ParameterRepositoryTest extends AbstractRepositoryTest {

@Override
protected String getTestCasesPath() {
return "/data/parameter-tests/";
}

@Test
public void shouldCreate() throws Exception {
final Parameter parameter = new Parameter();
parameter.setKey("new-parameter");
parameter.setValue("Parameter value");

assertFalse("Parameter already exists", parameterRepository.findById("new-parameter").isPresent());
parameterRepository.create(parameter);
assertTrue("Parameter not created", parameterRepository.findById("new-parameter").isPresent());

Optional<Parameter> optional = parameterRepository.findById("new-parameter");
assertTrue("Parameter saved not found", optional.isPresent());

final Parameter parameterSaved = optional.get();
assertEquals("Invalid saved parameter value.", parameter.getValue(), parameterSaved.getValue());
}

@Test
public void shouldUpdate() throws Exception {
Optional<Parameter> optional = parameterRepository.findById("portal.top-apis");
assertTrue("Parameter to update not found", optional.isPresent());
assertEquals("Invalid saved parameter value.", "api1;api2;api2", optional.get().getValue());

final Parameter parameter = optional.get();
parameter.setValue("New value");

assertTrue("Parameter does not exist", parameterRepository.findById("portal.top-apis").isPresent());
parameterRepository.update(parameter);

Optional<Parameter> optionalUpdated = parameterRepository.findById("portal.top-apis");
assertTrue("Parameter to update not found", optionalUpdated.isPresent());

final Parameter parameterUpdated = optionalUpdated.get();
assertEquals("Invalid saved parameter name.", "New value", parameterUpdated.getValue());
}

@Test
public void shouldDelete() throws Exception {
assertTrue("Parameter to delete does not exist", parameterRepository.findById("management.oAuth.clientId").isPresent());
parameterRepository.delete("management.oAuth.clientId");
assertFalse("Parameter not deleted", parameterRepository.findById("management.oAuth.clientId").isPresent());
}

@Test(expected = IllegalStateException.class)
public void shouldNotUpdateUnknownParameter() throws Exception {
Parameter unknownParameter = new Parameter();
unknownParameter.setKey("unknown");
parameterRepository.update(unknownParameter);
fail("An unknown parameter should not be updated");
}

@Test(expected = IllegalStateException.class)
public void shouldNotUpdateNull() throws Exception {
parameterRepository.update(null);
fail("A null parameter should not be updated");
}
}
Expand Up @@ -95,6 +95,8 @@ public abstract class AbstractRepositoryTest {
protected RatingRepository ratingRepository;
@Inject
protected RatingAnswerRepository ratingAnswerRepository;
@Inject
protected ParameterRepository parameterRepository;

private ObjectMapper mapper = new ObjectMapper();

Expand Down Expand Up @@ -179,6 +181,9 @@ else if (object instanceof Rating) {
else if (object instanceof RatingAnswer) {
ratingAnswerRepository.create((RatingAnswer) object);
}
else if (object instanceof Parameter) {
parameterRepository.create((Parameter) object);
}
}

private Class getClassFromFileName(final String baseName) {
Expand Down
Expand Up @@ -1138,4 +1138,34 @@ public RatingAnswerRepository ratingAnswerRepository() throws Exception {

return ratingAnswerRepository;
}

@Bean
public ParameterRepository parameterRepository() throws Exception {
final ParameterRepository parameterRepository = mock(ParameterRepository.class);

final Parameter parameter = mock(Parameter.class);
when(parameter.getValue()).thenReturn("Parameter value");

final Parameter parameter2 = mock(Parameter.class);
when(parameter2.getKey()).thenReturn("portal.top-apis");
when(parameter2.getValue()).thenReturn("api1;api2;api2");

final Parameter parameter2Updated = mock(Parameter.class);
when(parameter2Updated.getValue()).thenReturn("New value");

when(parameterRepository.create(any(Parameter.class))).thenReturn(parameter);

when(parameterRepository.findById("new-parameter")).thenReturn(empty(), of(parameter));
when(parameterRepository.findById("management.oAuth.clientId")).thenReturn(of(parameter2), empty());
when(parameterRepository.findById("portal.top-apis")).thenReturn(of(parameter2), of(parameter2Updated));

when(parameterRepository.update(argThat(new ArgumentMatcher<Parameter>() {
@Override
public boolean matches(Object o) {
return o == null || (o instanceof Parameter && ((Parameter) o).getKey().equals("unknown"));
}
}))).thenThrow(new IllegalStateException());

return parameterRepository;
}
}
14 changes: 14 additions & 0 deletions src/test/resources/data/parameter-tests/parameters.json
@@ -0,0 +1,14 @@
[
{
"key": "portal.top-apis",
"value": "api1;api2;api2"
},
{
"key": "management.oAuth.clientId",
"value": "MyClientId"
},
{
"key": "management.oAuth.clientSecret",
"value": "MyClientSecret"
}
]

0 comments on commit f475d3b

Please sign in to comment.