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