Class edu.prlab.tyler.iotgateway.gateway.GatewayHttpApiTest

1

tests

0

failures

0

ignored

0.649s

duration

100%

successful

Tests

Test Duration Result
getPrivacyPolicyAndSetChoice 0.649s passed

Standard output

2019-06-03 14:13:29.860  INFO 19448 --- [    Test worker] .b.t.c.SpringBootTestContextBootstrapper : Neither @ContextConfiguration nor @ContextHierarchy found for test class [edu.prlab.tyler.iotgateway.gateway.GatewayHttpApiTest], using SpringBootContextLoader
2019-06-03 14:13:29.860  INFO 19448 --- [    Test worker] o.s.t.c.support.AbstractContextLoader    : Could not detect default resource locations for test class [edu.prlab.tyler.iotgateway.gateway.GatewayHttpApiTest]: no resource found for suffixes {-context.xml, Context.groovy}.
2019-06-03 14:13:29.862  INFO 19448 --- [    Test worker] .b.t.c.SpringBootTestContextBootstrapper : Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener]
2019-06-03 14:13:29.862  INFO 19448 --- [    Test worker] .b.t.c.SpringBootTestContextBootstrapper : Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@35f71a, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@1f565b02, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@2f8d0bfa, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@14426abb, org.springframework.test.context.support.DirtiesContextTestExecutionListener@3b60c20e, org.springframework.test.context.transaction.TransactionalTestExecutionListener@1643102b, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@51561bc2, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@5646a4e1, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@6b8b7c95, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@6547fb87, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@4ae74e6, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@672cb93e]

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.4.RELEASE)

2019-06-03 14:13:29.876  INFO 19448 --- [    Test worker] e.p.t.i.gateway.GatewayHttpApiTest       : Starting GatewayHttpApiTest on DESKTOP-1ADCP8A with PID 19448 (started by Tyler in D:\SpringBoot\iotgateway\gateway)
2019-06-03 14:13:29.877  INFO 19448 --- [    Test worker] e.p.t.i.gateway.GatewayHttpApiTest       : No active profile set, falling back to default profiles: default
2019-06-03 14:13:29.974  INFO 19448 --- [    Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-06-03 14:13:29.982  INFO 19448 --- [    Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 8ms. Found 3 repository interfaces.
2019-06-03 14:13:30.021  INFO 19448 --- [    Test worker] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$78358982] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-06-03 14:13:30.068  INFO 19448 --- [    Test worker] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Starting...
2019-06-03 14:13:30.068  INFO 19448 --- [    Test worker] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Start completed.
2019-06-03 14:13:30.097  INFO 19448 --- [    Test worker] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
	name: default
	...]
2019-06-03 14:13:30.107  INFO 19448 --- [    Test worker] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2019-06-03 14:13:30.200  INFO 19448 --- [    Test worker] o.h.t.schema.internal.SchemaCreatorImpl  : HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@431ca4c0'
2019-06-03 14:13:30.200  INFO 19448 --- [    Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-06-03 14:13:30.449  INFO 19448 --- [    Test worker] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-06-03 14:13:30.457  WARN 19448 --- [    Test worker] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2019-06-03 14:13:30.612  INFO 19448 --- [    Test worker] e.p.t.i.gateway.GatewayHttpApiTest       : Started GatewayHttpApiTest in 0.749 seconds (JVM running for 4.767)
2019-06-03 14:13:30.613  INFO 19448 --- [    Test worker] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
2019-06-03 14:13:30.624  INFO 19448 --- [    Test worker] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring TestDispatcherServlet ''
2019-06-03 14:13:30.625  INFO 19448 --- [    Test worker] o.s.t.web.servlet.TestDispatcherServlet  : Initializing Servlet ''
2019-06-03 14:13:30.633  INFO 19448 --- [    Test worker] o.s.t.web.servlet.TestDispatcherServlet  : Completed initialization in 8 ms

MockHttpServletRequest:
      HTTP Method = POST
      Request URI = /login
       Parameters = {}
          Headers = [Content-Type:"application/json;charset=UTF-8", Accept:"application/json;charset=UTF-8"]
             Body = {"account":"testUser0","password":"testUser0"}
    Session Attrs = {}

Handler:
             Type = edu.prlab.tyler.iotgateway.gateway.controllers.UserController
           Method = public org.springframework.http.ResponseEntity<edu.prlab.tyler.iotgateway.gateway.pojo.auth.SensitiveUser> edu.prlab.tyler.iotgateway.gateway.controllers.UserController.login(edu.prlab.tyler.iotgateway.gateway.pojo.auth.SensitiveUser)

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
             Body = {"account":"testUser0","password":"testUser0"}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

MockHttpServletRequest:
      HTTP Method = POST
      Request URI = /device/a1252c49-4188-4e6d-a32e-66604c664fb8
       Parameters = {}
          Headers = [Content-Type:"application/json;charset=UTF-8", Accept:"application/json;charset=UTF-8"]
             Body = {"account":"testUser0","password":"testUser0"}
    Session Attrs = {}

Handler:
             Type = edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController
           Method = public org.springframework.http.ResponseEntity<edu.prlab.tyler.iotgateway.cloud.pojo.device.Device> edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController.bindDeviceAndGateway(java.lang.String)

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
             Body = {"udn":"a1252c49-4188-4e6d-a32e-66604c664fb8","name":"心跳血氧機","type":"Sensor","manufacturer":{"name":"Maxim Integrated","url":"https://www.maximintegrated.com/en.html","serialNumber":"3176927193"},"model":{"name":"心跳血氧機","url":"https://www.maximintegrated.com/en/products/sensors/MAX30100.html","description":"本設備檢測人體內產生的小信號,例如心臟產生的電信號,此信號通常經過調理後傳輸至微控制器,進行儲存、計算或顯示在健康監測設備上。本設備測量數據用於健身監測,或者被醫療保健專家用於判定被觀察病人的總體健康狀況"},"upc":"B00HXXO332","location":"25.013068, 121.541651","icons":[],"status":"Disconnected"}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /device
       Parameters = {}
          Headers = [Accept:"application/json;charset=UTF-8"]
             Body = <no character encoding set>
    Session Attrs = {}

Handler:
             Type = edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController
           Method = public org.springframework.http.ResponseEntity<java.lang.Iterable<edu.prlab.tyler.iotgateway.cloud.pojo.device.Device>> edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController.readDevices()

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
             Body = [{"udn":"a1252c49-4188-4e6d-a32e-66604c664fb8","name":"心跳血氧機","type":"Sensor","manufacturer":{"name":"Maxim Integrated","url":"https://www.maximintegrated.com/en.html","serialNumber":"3176927193"},"model":{"name":"心跳血氧機","url":"https://www.maximintegrated.com/en/products/sensors/MAX30100.html","description":"本設備檢測人體內產生的小信號,例如心臟產生的電信號,此信號通常經過調理後傳輸至微控制器,進行儲存、計算或顯示在健康監測設備上。本設備測量數據用於健身監測,或者被醫療保健專家用於判定被觀察病人的總體健康狀況"},"upc":"B00HXXO332","location":"25.013068, 121.541651","icons":[],"status":"Disconnected"}]
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /privacy/a1252c49-4188-4e6d-a32e-66604c664fb8/test
       Parameters = {}
          Headers = [Accept:"application/json;charset=UTF-8"]
             Body = <no character encoding set>
    Session Attrs = {}

Handler:
             Type = edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController
           Method = public org.springframework.http.ResponseEntity<edu.prlab.tyler.iotgateway.gateway.model.PrivacyPolicyReportResponse> edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController.readPrivacyPolicyReportByDevice(java.lang.String,java.lang.String)

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
             Body = {"id":"1","version":"1.0","description":"本APP會蒐集使用者心跳、血氧作為第三方之分析資料。","device":{"udn":"a1252c49-4188-4e6d-a32e-66604c664fb8","name":"心跳血氧機","type":"Sensor","manufacturer":{"name":"Maxim Integrated","url":"https://www.maximintegrated.com/en.html","serialNumber":"3176927193"},"model":{"name":"心跳血氧機","url":"https://www.maximintegrated.com/en/products/sensors/MAX30100.html","description":"本設備檢測人體內產生的小信號,例如心臟產生的電信號,此信號通常經過調理後傳輸至微控制器,進行儲存、計算或顯示在健康監測設備上。本設備測量數據用於健身監測,或者被醫療保健專家用於判定被觀察病人的總體健康狀況"},"upc":"B00HXXO332","location":"25.013068, 121.541651","icons":[],"status":"Disconnected"},"policies":[{"id":"1","description":"本APP會蒐集使用者心跳作為第三方之分析資料。","collector":{"name":"AirRadio","phone":"0987654177","email":"airradio@gmail.com.tw"},"dispute":{"relatedOrganization":"地方法院","type":"LAW"},"access":"NON_IDENT","remedies":[{"type":"LAW"}],"statements":[{"consequence":"a1252c49-4188-4e6d-a32e-66604c664fl4","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"},{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f45","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"}]},{"id":"2","description":"本APP會蒐集使用者血氧作為第三方之分析資料。","collector":{"name":"AirRadio","phone":"0987654177","email":"airradio@gmail.com.tw"},"dispute":{"relatedOrganization":"地方法院","type":"LAW"},"access":"NON_IDENT","remedies":[{"type":"LAW"}],"statements":[{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f48","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者血氧作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"血氧資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"},{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f89","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者血氧作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"血氧資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"}]}],"document":null,"choices":{"0":false,"1":false}}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

MockHttpServletRequest:
      HTTP Method = POST
      Request URI = /choice
       Parameters = {}
          Headers = [Content-Type:"application/json;charset=UTF-8", Accept:"application/json;charset=UTF-8"]
             Body = {"id":0,"privacyContent":{"id":0,"user":{"id":0,"account":"test","password":null},"device":{"udn":"a1252c49-4188-4e6d-a32e-66604c664fb8","name":"心跳血氧機","type":"Sensor","manufacturer":{"name":"Maxim Integrated","url":"https://www.maximintegrated.com/en.html","serialNumber":"3176927193"},"model":{"name":"心跳血氧機","url":"https://www.maximintegrated.com/en/products/sensors/MAX30100.html","description":"本設備檢測人體內產生的小信號,例如心臟產生的電信號,此信號通常經過調理後傳輸至微控制器,進行儲存、計算或顯示在健康監測設備上。本設備測量數據用於健身監測,或者被醫療保健專家用於判定被觀察病人的總體健康狀況"},"upc":"B00HXXO332","location":"25.013068, 121.541651","icons":[],"status":"Disconnected"},"policy":{"id":"1","description":"本APP會蒐集使用者心跳作為第三方之分析資料。","collector":{"name":"AirRadio","phone":"0987654177","email":"airradio@gmail.com.tw"},"dispute":{"relatedOrganization":"地方法院","type":"LAW"},"access":"NON_IDENT","remedies":[{"type":"LAW"}],"statements":[{"consequence":"a1252c49-4188-4e6d-a32e-66604c664fl4","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"},{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f45","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"}]}},"accepted":true,"isAccepted":true}
    Session Attrs = {}

Handler:
             Type = edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController
           Method = public org.springframework.http.ResponseEntity<edu.prlab.tyler.iotgateway.gateway.model.PrivacyChoiceResponse> edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController.setPrivacyChoice(edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyChoice)

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
             Body = {"id":1,"localDateTime":"2019-06-03T14:13:31.205","privacyChoice":{"id":1,"privacyContent":{"id":1,"user":{"id":1,"account":"test","password":null},"device":{"udn":"a1252c49-4188-4e6d-a32e-66604c664fb8","name":"心跳血氧機","type":"Sensor","manufacturer":{"name":"Maxim Integrated","url":"https://www.maximintegrated.com/en.html","serialNumber":"3176927193"},"model":{"name":"心跳血氧機","url":"https://www.maximintegrated.com/en/products/sensors/MAX30100.html","description":"本設備檢測人體內產生的小信號,例如心臟產生的電信號,此信號通常經過調理後傳輸至微控制器,進行儲存、計算或顯示在健康監測設備上。本設備測量數據用於健身監測,或者被醫療保健專家用於判定被觀察病人的總體健康狀況"},"upc":"B00HXXO332","location":"25.013068, 121.541651","icons":[],"status":"Disconnected"},"policy":{"id":"1","description":"本APP會蒐集使用者心跳作為第三方之分析資料。","collector":{"name":"AirRadio","phone":"0987654177","email":"airradio@gmail.com.tw"},"dispute":{"relatedOrganization":"地方法院","type":"LAW"},"access":"NON_IDENT","remedies":[{"type":"LAW"}],"statements":[{"consequence":"a1252c49-4188-4e6d-a32e-66604c664fl4","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"},{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f45","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"}]}},"accepted":true,"isAccepted":true}}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /privacy/a1252c49-4188-4e6d-a32e-66604c664fb8/test
       Parameters = {}
          Headers = [Accept:"application/json;charset=UTF-8"]
             Body = <no character encoding set>
    Session Attrs = {}

Handler:
             Type = edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController
           Method = public org.springframework.http.ResponseEntity<edu.prlab.tyler.iotgateway.gateway.model.PrivacyPolicyReportResponse> edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController.readPrivacyPolicyReportByDevice(java.lang.String,java.lang.String)

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
             Body = {"id":"1","version":"1.0","description":"本APP會蒐集使用者心跳、血氧作為第三方之分析資料。","device":{"udn":"a1252c49-4188-4e6d-a32e-66604c664fb8","name":"心跳血氧機","type":"Sensor","manufacturer":{"name":"Maxim Integrated","url":"https://www.maximintegrated.com/en.html","serialNumber":"3176927193"},"model":{"name":"心跳血氧機","url":"https://www.maximintegrated.com/en/products/sensors/MAX30100.html","description":"本設備檢測人體內產生的小信號,例如心臟產生的電信號,此信號通常經過調理後傳輸至微控制器,進行儲存、計算或顯示在健康監測設備上。本設備測量數據用於健身監測,或者被醫療保健專家用於判定被觀察病人的總體健康狀況"},"upc":"B00HXXO332","location":"25.013068, 121.541651","icons":[],"status":"Disconnected"},"policies":[{"id":"1","description":"本APP會蒐集使用者心跳作為第三方之分析資料。","collector":{"name":"AirRadio","phone":"0987654177","email":"airradio@gmail.com.tw"},"dispute":{"relatedOrganization":"地方法院","type":"LAW"},"access":"NON_IDENT","remedies":[{"type":"LAW"}],"statements":[{"consequence":"a1252c49-4188-4e6d-a32e-66604c664fl4","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"},{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f45","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"}]},{"id":"2","description":"本APP會蒐集使用者血氧作為第三方之分析資料。","collector":{"name":"AirRadio","phone":"0987654177","email":"airradio@gmail.com.tw"},"dispute":{"relatedOrganization":"地方法院","type":"LAW"},"access":"NON_IDENT","remedies":[{"type":"LAW"}],"statements":[{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f48","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者血氧作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"血氧資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"},{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f89","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者血氧作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"血氧資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"}]}],"document":null,"choices":{"0":true,"1":false}}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /choice/test
       Parameters = {}
          Headers = [Accept:"application/json;charset=UTF-8"]
             Body = <no character encoding set>
    Session Attrs = {}

Handler:
             Type = edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController
           Method = public org.springframework.http.ResponseEntity<java.lang.Iterable<edu.prlab.tyler.iotgateway.gateway.model.PrivacyChoiceResponse>> edu.prlab.tyler.iotgateway.gateway.controllers.GatewayController.readPrivacyChoiceRecordsByUser(java.lang.String)

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
             Body = [{"id":1,"localDateTime":"2019-06-03T14:13:31.205","privacyChoice":{"id":1,"privacyContent":{"id":1,"user":{"id":1,"account":"test","password":null},"device":{"udn":"a1252c49-4188-4e6d-a32e-66604c664fb8","name":"心跳血氧機","type":"Sensor","manufacturer":{"name":"Maxim Integrated","url":"https://www.maximintegrated.com/en.html","serialNumber":"3176927193"},"model":{"name":"心跳血氧機","url":"https://www.maximintegrated.com/en/products/sensors/MAX30100.html","description":"本設備檢測人體內產生的小信號,例如心臟產生的電信號,此信號通常經過調理後傳輸至微控制器,進行儲存、計算或顯示在健康監測設備上。本設備測量數據用於健身監測,或者被醫療保健專家用於判定被觀察病人的總體健康狀況"},"upc":"B00HXXO332","location":"25.013068, 121.541651","icons":[],"status":"Disconnected"},"policy":{"id":"1","description":"本APP會蒐集使用者心跳作為第三方之分析資料。","collector":{"name":"AirRadio","phone":"0987654177","email":"airradio@gmail.com.tw"},"dispute":{"relatedOrganization":"地方法院","type":"LAW"},"access":"NON_IDENT","remedies":[{"type":"LAW"}],"statements":[{"consequence":"a1252c49-4188-4e6d-a32e-66604c664fl4","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"},{"consequence":"a1252c49-4188-4e6d-a32e-66604c664f45","purposes":[{"type":"PSEUDO_ANALYSIS","description":"本APP會蒐集使用者心跳作為第三方之分析資料。"}],"data":[{"type":"OTHER_CATEGORY","description":"心跳健康資料"}],"recipients":[{"entity":"AirRadio","type":"OURS"}],"retention":"STATED_PURPOSE"}]}},"accepted":true,"isAccepted":true}}]
    Forwarded URL = null
   Redirected URL = null
          Cookies = []