Improve logging in NCMP
[cps.git] / cps-service / src / test / groovy / org / onap / cps / aop / CpsLoggingAspectServiceSpec.groovy
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2022 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  *  SPDX-License-Identifier: Apache-2.0
18  *  ============LICENSE_END=========================================================
19  */
20
21 package org.onap.cps.aop
22
23 import org.aspectj.lang.ProceedingJoinPoint
24 import org.aspectj.lang.reflect.MethodSignature
25 import org.onap.cps.spi.exceptions.DataValidationException
26 import spock.lang.Specification
27
28 class CpsLoggingAspectServiceSpec extends Specification {
29
30     def mockProceedingJoinPoint = Mock(ProceedingJoinPoint)
31     def mockMethodSignature = Mock(MethodSignature);
32     def objectUnderTest = new CpsLoggingAspectService()
33
34     def setup() {
35         mockMethodSignature.getDeclaringType() >> this.getClass()
36         mockMethodSignature.getDeclaringType().getSimpleName() >> 'CpsLoggingAspectServiceSpec'
37         mockMethodSignature.getName() >> 'logMethodExecutionTime'
38         mockProceedingJoinPoint.getSignature() >> mockMethodSignature
39     }
40
41     def 'Log method execution time.'() {
42         given: 'mock valid arguments'
43             mockProceedingJoinPoint.getArgs() >> 'dataspace-name'
44         when: 'aop intercepts cps method and start calculation of time'
45             objectUnderTest.logMethodExecutionTime(mockProceedingJoinPoint)
46         then: 'process successfully and log details of executed method'
47             1 * mockProceedingJoinPoint.proceed()
48     }
49
50     def 'Creating a data validation exception for invalid args.'() {
51         given: 'a data validation exception is created'
52             mockProceedingJoinPoint.getArgs() >> {
53                 throw new DataValidationException('invalid args',
54                         'invalid method arg(s) is passed', new Throwable())
55             }
56         when: 'aop intercepts cps method and start calculation of time'
57             objectUnderTest.logMethodExecutionTime(mockProceedingJoinPoint)
58         then: 'data validation exception is thrown'
59             thrown(DataValidationException.class)
60     }
61 }