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

1

tests

0

failures

0

ignored

0.740s

duration

100%

successful

Tests

Test Duration Result
getPrivacyPolicyAndSetChoice 0.740s passed

Standard output

2019-06-11 14:55:39.606  INFO 12072 --- [    Test worker] .b.t.c.SpringBootTestContextBootstrapper : Neither @ContextConfiguration nor @ContextHierarchy found for test class [edu.prlab.tyler.iotgateway.gateway.GatewayHttpApiTest], using SpringBootContextLoader
2019-06-11 14:55:39.607  INFO 12072 --- [    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-11 14:55:39.609  INFO 12072 --- [    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-11 14:55:39.610  INFO 12072 --- [    Test worker] .b.t.c.SpringBootTestContextBootstrapper : Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@164686bb, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@254d5edb, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@483a64c, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@3bda8b0d, org.springframework.test.context.support.DirtiesContextTestExecutionListener@190ba193, org.springframework.test.context.transaction.TransactionalTestExecutionListener@567f8fef, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@4f57f2aa, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@203a8aae, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@64f9b003, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@4e535b84, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@3ee13246, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@4a7aa0ce]

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

2019-06-11 14:55:39.628  INFO 12072 --- [    Test worker] e.p.t.i.gateway.GatewayHttpApiTest       : Starting GatewayHttpApiTest on DESKTOP-1ADCP8A with PID 12072 (started by Tyler in D:\SpringBoot\iotgateway\gateway)
2019-06-11 14:55:39.628  INFO 12072 --- [    Test worker] e.p.t.i.gateway.GatewayHttpApiTest       : No active profile set, falling back to default profiles: default
2019-06-11 14:55:39.743  INFO 12072 --- [    Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-06-11 14:55:39.754  INFO 12072 --- [    Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 10ms. Found 3 repository interfaces.
2019-06-11 14:55:39.809  INFO 12072 --- [    Test worker] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$cbdf4f16] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2019-06-11 14:55:39.865  INFO 12072 --- [    Test worker] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Starting...
2019-06-11 14:55:39.865  INFO 12072 --- [    Test worker] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Start completed.
2019-06-11 14:55:39.899  INFO 12072 --- [    Test worker] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
	name: default
	...]
2019-06-11 14:55:39.911  INFO 12072 --- [    Test worker] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2019-06-11 14:55:40.015  INFO 12072 --- [    Test worker] o.h.t.schema.internal.SchemaCreatorImpl  : HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@4135f4d5'
2019-06-11 14:55:40.016  INFO 12072 --- [    Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2019-06-11 14:55:40.311  INFO 12072 --- [    Test worker] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-06-11 14:55:40.319  WARN 12072 --- [    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-11 14:55:40.470  INFO 12072 --- [    Test worker] e.p.t.i.gateway.GatewayHttpApiTest       : Started GatewayHttpApiTest in 0.857 seconds (JVM running for 5.405)
2019-06-11 14:55:40.471  INFO 12072 --- [    Test worker] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
2019-06-11 14:55:40.483  INFO 12072 --- [    Test worker] o.s.b.t.m.w.SpringBootMockServletContext : Initializing Spring TestDispatcherServlet ''
2019-06-11 14:55:40.483  INFO 12072 --- [    Test worker] o.s.t.web.servlet.TestDispatcherServlet  : Initializing Servlet ''
2019-06-11 14:55:40.492  INFO 12072 --- [    Test worker] o.s.t.web.servlet.TestDispatcherServlet  : Completed initialization in 9 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-11T14:55:41.156","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-11T14:55:41.156","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 = []