7bfe5c3220dec0a6b6e94bce35969fdedc70021c
[cps.git] / cps-ncmp-rest-stub / cps-ncmp-rest-stub-service / src / test / groovy / org / onap / cps / ncmp / rest / stub / providers / ResourceProviderSpec.groovy
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2023 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.ncmp.rest.stub.providers
22
23 import java.nio.file.Files
24 import java.nio.file.Path
25 import org.springframework.util.FileSystemUtils
26 import spock.lang.Shared
27 import spock.lang.Specification
28 import spock.lang.TempDir
29
30 class ResourceProviderSpec extends Specification {
31
32     @TempDir
33     @Shared
34     def tempDirectory
35
36     def setupSpec() {
37         tempDirectory = Files.createTempDirectory('spock-test')
38         Files.write(tempDirectory.resolve('file.txt'), 'Dummy file content'.getBytes())
39     }
40
41     def cleanupSpec() {
42         if(Files.exists(tempDirectory)) {
43             FileSystemUtils.deleteRecursively(tempDirectory)
44         }
45     }
46
47     def 'Resource Provider with existing file on #scenario'() {
48
49         given: 'a resource provider with base stub folder defined on #scenario' 
50             def resourceProvider = new ResourceProviderImpl(dir)
51         when: 'attempting to access that file #filename'
52             def optional= resourceProvider.getResourceInputStream(filename)
53         then: 'it is present'
54             assert optional.isPresent()
55         where:
56         scenario      | dir                      | filename
57         'classpath'   | '/stubs/'                | 'passthrough-operational-example.json'
58         'file system' | tempDirectory.toString() | 'file.txt'
59     }
60
61     def 'Resource Provider without required resource file on #scenario'() {
62
63         given: 'a resource provider with base stub folder defined on #scenario'
64             def resourceProvider = new ResourceProviderImpl(dir)
65         when: 'attempting to access unknown-file.txt'
66             def optional= resourceProvider.getResourceInputStream('unknown-file.txt')
67         then: 'it is empty'
68             assert optional.isEmpty()
69         where:
70             scenario      | dir
71             'classpath'   | '/stubs/'
72             'file system' | tempDirectory.toString()
73     }
74
75 }