diff --git a/openecomp-ui/test/nfvo-components/input/validation/input.test.js b/openecomp-ui/test/nfvo-components/input/validation/input.test.js
index 7743483..719e01f 100644
--- a/openecomp-ui/test/nfvo-components/input/validation/input.test.js
+++ b/openecomp-ui/test/nfvo-components/input/validation/input.test.js
@@ -1,24 +1,25 @@
-/*!
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+/*
+ * Copyright © 2016-2017 European Support Limited
  *
  * 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
- *
+ * 
+ *      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.
+ * 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.
  */
 
 import React from 'react';
-import TestUtils from 'react-addons-test-utils';
+import TestUtils from 'react-dom/test-utils';
 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
 import Input from 'nfvo-components/input/validation/Input.jsx';
 import Overlay from 'react-bootstrap/lib/Overlay.js';
+import {shallow} from 'enzyme';
 
 describe('Input', function () {
 	it('should render with type text', () => {
@@ -72,10 +73,11 @@
 	});
 
 	it('should render error overlay when invalid', () => {
-		let renderedOutput = TestUtils.renderIntoDocument(<Input type='text' data-test-id='mytest' isValid={false} errorText='this is an error'/>);
-		const elem = TestUtils.findRenderedComponentWithType(renderedOutput,Overlay);
+		const elem = shallow(<Input type='text' data-test-id='mytest' isValid={false} errorText='this is an error'/>);
 		expect(elem).toBeTruthy();
-		expect(elem.props.show).toBe(true);
+		const  overlay = elem.find(Overlay);
+		expect(overlay).toBeTruthy();
+		expect(overlay.props().show).toBe(true);
 	});
 
 	it('should not render error overlay when valid', () => {
