summaryrefslogtreecommitdiffstats
path: root/container-di/src/test/scala/com/yahoo/container/di/componentgraph/core/JerseyNodeTest.scala
blob: fcbde13639d8f8c904bf7a40029af123251ddce1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.container.di.componentgraph.core

import java.util
import java.util.Collections
import com.yahoo.container.di.osgi.OsgiUtil
import org.junit.Test
import org.junit.Assert._
import org.hamcrest.CoreMatchers.is
import org.hamcrest.Matchers.{contains, containsInAnyOrder}
import org.osgi.framework.wiring.BundleWiring
import scala.collection.JavaConverters._
import com.yahoo.container.bundle.MockBundle

/**
 *
 * @author gjoranv
 * @since 5.17
 */

class JerseyNodeTest {

  trait WithMockBundle {
    object bundle extends MockBundle {
      val entry = Map(
        "com/foo" -> "Foo.class",
        "com/bar" -> "Bar.class)"
      ) map { case (packageName, className) => (packageName, packageName + "/" + className)}


      override def listResources(path: String, ignored: String, options: Int): util.Collection[String] = {
        if ((options & BundleWiring.LISTRESOURCES_RECURSE) != 0 && path == "/") entry.values.asJavaCollection
        else Collections.singleton(entry(path))
      }
    }

    val bundleClasses = bundle.entry.values.toList
  }

  @Test
  def all_bundle_entries_are_returned_when_no_packages_are_given() {
    new WithMockBundle {
      val entries = OsgiUtil.getClassEntriesInBundleClassPath(bundle, Set()).asJavaCollection
      assertThat(entries, containsInAnyOrder(bundleClasses: _*))
    }
  }

  @Test
  def only_bundle_entries_from_the_given_packages_are_returned() {
    new WithMockBundle {
      val entries = OsgiUtil.getClassEntriesInBundleClassPath(bundle, Set("com.foo")).asJavaCollection
      assertThat(entries, contains(bundle.entry("com/foo")))
    }
  }

  @Test
  def bundle_info_is_initialized() {
    new WithMockBundle {
      val bundleInfo = JerseyNode.createBundleInfo(bundle, List())
      assertThat(bundleInfo.symbolicName, is(bundle.getSymbolicName))
      assertThat(bundleInfo.version, is(bundle.getVersion))
      assertThat(bundleInfo.fileLocation, is(bundle.getLocation))
    }
  }

}