/*******************************************************************************
* Copyright (c) 2016 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.openshift.internal.restclient.capability.resources;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.HashMap;
import java.util.Map;
import org.jboss.dmr.ModelNode;
import org.junit.Before;
import org.junit.Test;
import com.openshift.internal.restclient.model.BuildConfig;
import com.openshift.restclient.IClient;
import com.openshift.restclient.capability.resources.IPropertyAccessCapability;
import com.openshift.restclient.capability.resources.IPropertyAccessCapability.UnresolvablePathException;
import com.openshift.restclient.utils.Samples;
public class PropertyAccessCapabilityTest {
private ModelNode node;
private IPropertyAccessCapability cap;
@Before
public void setup() {
IClient client = mock(IClient.class);
node = ModelNode.fromJSONString(Samples.V1_BUILD_CONFIG.getContentAsString());
node.get(new String[] {"spec", "strategy","sourceStrategy", "xyz"}).set(1986);
BuildConfig config = new BuildConfig(node, client, new HashMap<>());
cap = new PropertyAccessCapability(config);
}
@Test(expected=UnresolvablePathException.class)
public void testAsMapWhenPathIsNotFound() {
cap.asMap("foo.strategy.sourceStrategy.from");
}
@Test
public void testAsString() {
assertEquals("1986", cap.asString("spec.strategy.sourceStrategy.xyz"));
}
@Test(expected=UnresolvablePathException.class)
public void testAsWhenPathIsNotFound() {
cap.asString("spec.strategy.sourceStrategy.xyzzz");
}
@Test
public void testAsMap() {
Map<String, Object> from = new HashMap<>();
from.put("kind","ImageStreamTag");
from.put("name","ruby-20-centos7:latest");
Map<String, Object> exp = new HashMap<>();
exp.put("from", from);
exp.put("incremental", true);
exp.put("scripts", "aLocation");
exp.put("xyz", 1986);
// @TODO Why doesnt this validate?
// Map<String, Object> envEntry = new HashMap<>();
// envEntry.put("name", "foo");
// envEntry.put("value", "bar");
// List<Object> env = new ArrayList<>();
// env.add(envEntry);
//
// exp.put("env", env);
Map<String, Object> act = cap.asMap("spec.strategy.sourceStrategy.from");
assertEquals(from, act);
}
}