2020-08-06 08:53:39 +08:00
|
|
|
package com.amazon.SellingPartnerAPIAA;
|
|
|
|
|
|
|
|
import com.google.gson.Gson;
|
|
|
|
import org.junit.Assert;
|
|
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
|
|
import org.junit.jupiter.params.ParameterizedTest;
|
|
|
|
import org.junit.jupiter.params.provider.Arguments;
|
|
|
|
import org.junit.jupiter.params.provider.MethodSource;
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.Set;
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
import static com.amazon.SellingPartnerAPIAA.ScopeConstants.SCOPE_NOTIFICATIONS_API;
|
2020-09-24 06:42:38 +08:00
|
|
|
import static com.amazon.SellingPartnerAPIAA.ScopeConstants.SCOPE_MIGRATION_API;
|
2020-08-06 08:53:39 +08:00
|
|
|
|
|
|
|
public class LWAClientScopesSerializerDeserializerTest {
|
|
|
|
private static final String TEST_SCOPE_1 = SCOPE_NOTIFICATIONS_API;
|
|
|
|
private static final String TEST_SCOPE_2 = SCOPE_MIGRATION_API;
|
|
|
|
|
|
|
|
private static final Set<String> scopesTestSellerless = new HashSet<String>(Arrays.asList(TEST_SCOPE_1,
|
|
|
|
TEST_SCOPE_2));
|
|
|
|
|
|
|
|
private static final String SELLER_TYPE_SELLER = "seller";
|
|
|
|
private static final String SELLER_TYPE_SELLERLESS = "sellerless";
|
|
|
|
|
|
|
|
private Gson gson;
|
|
|
|
|
|
|
|
@BeforeEach
|
|
|
|
public void setup() {
|
|
|
|
gson = new Gson();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Stream<Arguments> scopeSerialization(){
|
|
|
|
|
|
|
|
return Stream.of(
|
|
|
|
Arguments.of(SELLER_TYPE_SELLER, null),
|
|
|
|
Arguments.of(SELLER_TYPE_SELLERLESS, new LWAClientScopes(scopesTestSellerless))
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Stream<Arguments> scopeDeserialization(){
|
|
|
|
|
|
|
|
return Stream.of(
|
|
|
|
Arguments.of(SELLER_TYPE_SELLER, null),
|
|
|
|
Arguments.of(SELLER_TYPE_SELLERLESS, "{\"scope\":\"sellingpartnerapi::migration sellingpartnerapi::notifications\"}")
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
@ParameterizedTest
|
|
|
|
@MethodSource("scopeSerialization")
|
|
|
|
public void testSerializeScope(String sellerType, LWAClientScopes testScope){
|
|
|
|
|
|
|
|
String scopeJSON = gson.toJson(testScope);
|
|
|
|
|
|
|
|
if (sellerType.equals(SELLER_TYPE_SELLER)) {
|
|
|
|
Assert.assertEquals("null", scopeJSON);
|
|
|
|
}
|
|
|
|
else if (sellerType.equals(SELLER_TYPE_SELLERLESS)){
|
|
|
|
Assert.assertTrue(!scopeJSON.isEmpty());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@ParameterizedTest
|
|
|
|
@MethodSource("scopeDeserialization")
|
|
|
|
public void testDeserializeScope(String sellerType, String serializedValue){
|
|
|
|
|
|
|
|
LWAClientScopes deserializedValue = gson.fromJson(serializedValue, LWAClientScopes.class);
|
|
|
|
if (sellerType.equals(SELLER_TYPE_SELLER)) {
|
|
|
|
Assert.assertNull(deserializedValue);
|
|
|
|
}
|
|
|
|
else if (sellerType.equals(SELLER_TYPE_SELLERLESS)){
|
|
|
|
Assert.assertEquals(deserializedValue.getScopes(),scopesTestSellerless);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|