Commit 1bd0abe5 authored by 0Tyler's avatar 0Tyler

cloud test

parent 1e8237b6
This diff is collapsed.
...@@ -4,7 +4,7 @@ buildscript { ...@@ -4,7 +4,7 @@ buildscript {
mapstructVersion = '1.3.0.Final' mapstructVersion = '1.3.0.Final'
jwtVersion = '3.5.0' jwtVersion = '3.5.0'
jjwtVersion = '0.9.1' jjwtVersion = '0.9.1'
guavaVersion = '27.1-jre'
} }
repositories { repositories {
mavenCentral() mavenCentral()
...@@ -38,6 +38,7 @@ dependencies { ...@@ -38,6 +38,7 @@ dependencies {
compileOnly 'org.projectlombok:lombok' compileOnly 'org.projectlombok:lombok'
implementation "org.mapstruct:mapstruct:${mapstructVersion}" implementation "org.mapstruct:mapstruct:${mapstructVersion}"
implementation "com.google.guava:guava:${guavaVersion}"
runtimeOnly 'com.h2database:h2' runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
......
...@@ -5,7 +5,6 @@ import edu.prlab.tyler.iotgateway.cloud.pojo.device.Device; ...@@ -5,7 +5,6 @@ import edu.prlab.tyler.iotgateway.cloud.pojo.device.Device;
import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyPolicyReport; import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyPolicyReport;
import edu.prlab.tyler.iotgateway.cloud.services.DeviceService; import edu.prlab.tyler.iotgateway.cloud.services.DeviceService;
import edu.prlab.tyler.iotgateway.cloud.services.PrivacyPolicyReportService; import edu.prlab.tyler.iotgateway.cloud.services.PrivacyPolicyReportService;
import org.assertj.core.util.Lists;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -41,20 +40,28 @@ public class DeviceController { ...@@ -41,20 +40,28 @@ public class DeviceController {
.orElseGet(()->ResponseEntity.noContent().build()); .orElseGet(()->ResponseEntity.noContent().build());
} }
@GetMapping
public ResponseEntity<Iterable<Device>> readDevices() {
return Optional.of(deviceService.readll())
.map(ResponseEntity::ok)
.orElseGet(()->ResponseEntity.noContent().build());
}
// @GetMapping // @GetMapping
// public ResponseEntity<Iterable<Device>> readDevices() { // public ResponseEntity<Iterable<Device>> readDevices(SensitiveUser user) {
// return Optional.of(deviceService.readll()) // return Optional.of(deviceService.readll())
// .map(ResponseEntity::ok) // .map(ResponseEntity::ok)
// .orElseGet(()->ResponseEntity.noContent().build()); // .orElseGet(()->ResponseEntity.noContent().build());
// } // }
@GetMapping @PostMapping("/privacy")
public ResponseEntity<ArrayList<Device>> readDevices(SensitiveUser user) { public ResponseEntity<PrivacyPolicyReport> addPrivacyPolicyReport(@RequestBody PrivacyPolicyReport privacyPolicy) {
return Optional.of(Lists.newArrayList(deviceService.readll())) return privacyPolicyReportService.add(privacyPolicy)
.map(ResponseEntity::ok) .map(ResponseEntity::ok)
.orElseGet(()->ResponseEntity.noContent().build()); .orElseGet(()->ResponseEntity.noContent().build());
} }
@GetMapping("/privacy/{UDN}") @GetMapping("/privacy/{UDN}")
public ResponseEntity<PrivacyPolicyReport> readPrivacyPolicyReportByDevice(@PathVariable(value = "UDN") String UDN) { public ResponseEntity<PrivacyPolicyReport> readPrivacyPolicyReportByDevice(@PathVariable(value = "UDN") String UDN) {
return privacyPolicyReportService.readByDevice(UDN) return privacyPolicyReportService.readByDevice(UDN)
......
...@@ -37,5 +37,4 @@ public class GatewayController { ...@@ -37,5 +37,4 @@ public class GatewayController {
.map(ResponseEntity::ok) .map(ResponseEntity::ok)
.orElseGet(()->ResponseEntity.noContent().build()); .orElseGet(()->ResponseEntity.noContent().build());
} }
} }
package edu.prlab.tyler.iotgateway.cloud.pojo.device; package edu.prlab.tyler.iotgateway.cloud.pojo.device;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
......
...@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; ...@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.Cascade;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
......
...@@ -2,10 +2,9 @@ package edu.prlab.tyler.iotgateway.cloud.services; ...@@ -2,10 +2,9 @@ package edu.prlab.tyler.iotgateway.cloud.services;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import java.util.List;
import java.util.Optional; import java.util.Optional;
public abstract class CrudService<T , ID> { public abstract class CrudService<T, ID> {
private CrudRepository<T, ID> repository; private CrudRepository<T, ID> repository;
public CrudService(CrudRepository<T, ID> repository) { public CrudService(CrudRepository<T, ID> repository) {
...@@ -13,15 +12,15 @@ public abstract class CrudService<T , ID> { ...@@ -13,15 +12,15 @@ public abstract class CrudService<T , ID> {
} }
public Optional<T> add(T pojo) { public Optional<T> add(T pojo) {
System.out.println(pojo.toString()); System.out.println("save" + pojo.toString());
return Optional.of(repository.save(pojo)); return Optional.of(repository.save(pojo));
} }
public Optional<T> read(ID id) { public Optional<T> read(ID id) {
return repository.findById(id); return repository.findById(id);
} }
public Iterable<T> readll() { public Iterable<T> readll() {
return repository.findAll(); return repository.findAll();
} }
} }
...@@ -9,7 +9,9 @@ import edu.prlab.tyler.iotgateway.cloud.pojo.device.Icon; ...@@ -9,7 +9,9 @@ import edu.prlab.tyler.iotgateway.cloud.pojo.device.Icon;
import edu.prlab.tyler.iotgateway.cloud.pojo.device.Model; import edu.prlab.tyler.iotgateway.cloud.pojo.device.Model;
import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyChoice; import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyChoice;
import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyContent; import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyContent;
import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyPolicy;
import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyPolicyReport; import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.PrivacyPolicyReport;
import edu.prlab.tyler.iotgateway.cloud.pojo.privacy.p3p.*;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
...@@ -76,8 +78,22 @@ public class CloudHttpApiTest { ...@@ -76,8 +78,22 @@ public class CloudHttpApiTest {
.andExpect(status().isOk()) .andExpect(status().isOk())
.andReturn(); .andReturn();
device = mapper.readValue(result.getResponse().getContentAsString(), Device.class); device = mapper.readValue(result.getResponse().getContentAsString(), Device.class);
System.out.println("The return device = " + device.toString());
Assert.assertNotNull(device); Assert.assertNotNull(device);
result = mvc.perform(MockMvcRequestBuilders
.get("/device")
.accept(MediaType.APPLICATION_JSON_UTF8))
.andDo(print())
.andExpect(status().isOk())
.andReturn();
ArrayList<Device> devices = mapper.readValue(result.getResponse().getContentAsString(),
new TypeReference<ArrayList<Device>>() {
});
Assert.assertNotNull(devices);
result = mvc.perform(MockMvcRequestBuilders result = mvc.perform(MockMvcRequestBuilders
.get("/device/" + device.getId()) .get("/device/" + device.getId())
.accept(MediaType.APPLICATION_JSON_UTF8)) .accept(MediaType.APPLICATION_JSON_UTF8))
...@@ -87,15 +103,71 @@ public class CloudHttpApiTest { ...@@ -87,15 +103,71 @@ public class CloudHttpApiTest {
device = mapper.readValue(result.getResponse().getContentAsString(), Device.class); device = mapper.readValue(result.getResponse().getContentAsString(), Device.class);
Assert.assertNotNull(device); Assert.assertNotNull(device);
PrivacyPolicy oxygenPrivacyPolicy = PrivacyPolicy.builder()
.id("abe5ca7b-780e-4857-87e6-014870fe0a32")
.description("本APP會蒐集使用者周遭溫度作為第三方資料之地區環境分析資料。")
.collector(Collector.builder()
.name("AirRadio")
.email("[email protected]")
.phone("0987654177")
.build())
.remedies(Arrays.asList(Remedy.builder()
.type(Remedy.Type.LAW)
.build()))
.statements(Arrays.asList(Statement.builder()
.consequence("a1252c49-4188-4e6d-a32e-66604c664fb9")
.purposes(Arrays.asList(Purpose.builder()
.type(Purpose.Type.PSEUDO_ANALYSIS)
.description("本APP會蒐集使用者周遭溫度作為第三方資料之地區環境分析資料。")
.build()))
.data(Arrays.asList(Datum.builder()
.type(Datum.Type.OTHER_CATEGORY)
.description("室溫資料")
.build()))
.recipients(Arrays.asList(Recipient.builder()
.entity("AirRadio")
.type(Recipient.Type.OURS)
.build()))
.retention(Retention.STATED_PURPOSE)
.build(), Statement.builder()
.consequence("a1252c49-4188-4e6d-a32e-66604c664fb9")
.purposes(Arrays.asList(Purpose.builder()
.type(Purpose.Type.PSEUDO_ANALYSIS)
.description("本APP會蒐集使用者周遭溫度作為第三方資料之地區環境分析資料。")
.build()))
.data(Arrays.asList(Datum.builder()
.type(Datum.Type.OTHER_CATEGORY)
.description("室溫資料")
.build()))
.recipients(Arrays.asList(Recipient.builder()
.entity("AirRadio")
.type(Recipient.Type.OURS)
.build()))
.retention(Retention.STATED_PURPOSE)
.build()
))
.build();
PrivacyPolicyReport privacyPolicyReport = PrivacyPolicyReport.builder()
.id("0cfb6be3-6f0f-4e63-85b8-e9c936707c0b")
.version("1.0")
.description("本APP會蒐集使用者周遭溫度、濕度及空氣品質作為第三方資料之地區環境分析資料。")
.device(device)
.policies(Arrays.asList(oxygenPrivacyPolicy))
.build();
result = mvc.perform(MockMvcRequestBuilders result = mvc.perform(MockMvcRequestBuilders
.get("/device") .post("/device/privacy")
.accept(MediaType.APPLICATION_JSON_UTF8)) .contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON_UTF8)
.content(mapper.writeValueAsString(privacyPolicyReport)))
.andDo(print()) .andDo(print())
.andExpect(status().isOk()) .andExpect(status().isOk())
.andReturn(); .andReturn();
ArrayList<Device> devices = mapper.readValue(result.getResponse().getContentAsString(), PrivacyPolicyReport returnPolicy = mapper.readValue(result.getResponse().getContentAsString(),
new TypeReference<ArrayList<Device>>() {}); PrivacyPolicyReport.class);
Assert.assertNotNull(devices); Assert.assertNotNull(returnPolicy);
result = mvc.perform(MockMvcRequestBuilders result = mvc.perform(MockMvcRequestBuilders
.get("/device/privacy/" + device.getUdn()) .get("/device/privacy/" + device.getUdn())
......
plugins { buildscript {
id 'org.springframework.boot' version '2.1.4.RELEASE' ext {
id 'java' springBootVersion = '2.1.4.RELEASE'
}
ext {
web3jQuorumVersion = '4.0.6' web3jQuorumVersion = '4.0.6'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
} }
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' apply plugin: 'io.spring.dependency-management'
group = 'edu.prlab.tyler.iotgateway' group = 'edu.prlab.tyler.iotgateway'
version = '0.0.1-SNAPSHOT' version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8' sourceCompatibility = '1.8'
......
...@@ -5,7 +5,6 @@ import org.junit.Assert; ...@@ -5,7 +5,6 @@ import org.junit.Assert;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.FixMethodOrder; import org.junit.FixMethodOrder;
import org.junit.Test; import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.runners.MethodSorters; import org.junit.runners.MethodSorters;
import org.web3j.protocol.core.methods.response.TransactionReceipt; import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.core.methods.response.Web3ClientVersion; import org.web3j.protocol.core.methods.response.Web3ClientVersion;
...@@ -30,50 +29,72 @@ public class ContractTester { ...@@ -30,50 +29,72 @@ public class ContractTester {
DefaultGasProvider.GAS_LIMIT DefaultGasProvider.GAS_LIMIT
); );
private String deviceContractAddress;
private String gateWayContractAddress;
@BeforeClass @BeforeClass
public static void setUp() { public static void setUp() {
} }
@Test @Test
public void test1deployDeviceContract() throws Exception { public void test1Contract() throws Exception {
// Credentials credentials = Credentials.create(privateKey); // Credentials credentials = Credentials.create(privateKey);
Quorum quorum = Quorum.build(new HttpService(rpcUrl)); Quorum quorum = Quorum.build(new HttpService(rpcUrl));
Web3ClientVersion web3ClientVersion = quorum.web3ClientVersion().sendAsync().get(); Web3ClientVersion web3ClientVersion = quorum.web3ClientVersion().sendAsync().get();
String clientVersion = web3ClientVersion.getWeb3ClientVersion(); String clientVersion = web3ClientVersion.getWeb3ClientVersion();
System.out.println("web3j版本 : " + clientVersion); Assert.assertNotNull(clientVersion);
String userAddress = quorum.ethAccounts().send().getAccounts().get(0); String userAddress = quorum.ethAccounts().send().getAccounts().get(quorum.ethAccounts().send().getAccounts().size() - 1);
System.out.println("User : " + userAddress); Assert.assertNotNull(userAddress);
ClientTransactionManager manager = new ClientTransactionManager(quorum, userAddress); ClientTransactionManager manager = new ClientTransactionManager(quorum, userAddress);
//Device
DeviceContract deviceContract = DeviceContract.deploy(quorum, manager, DEFAULT_GAS_PROVIDER).send(); DeviceContract deviceContract = DeviceContract.deploy(quorum, manager, DEFAULT_GAS_PROVIDER).send();
String deviceContractAddress = deviceContract.getContractAddress(); deviceContractAddress = deviceContract.getContractAddress();
System.out.println("智慧合約地址 : " + deviceContractAddress);
Assert.assertNotNull(deviceContract); Assert.assertNotNull(deviceContract);
Assert.assertNotNull(deviceContractAddress);
TransactionReceipt deviceReceipt = deviceContract.setdeviceinfo("testdevice").send(); TransactionReceipt receipt;
System.out.println(deviceReceipt.toString()); receipt = deviceContract.setdeviceinfo("testdevice").send();
Assert.assertNotNull(receipt);
TransactionReceipt privacyPolicyReceipt = deviceContract.setpp("testpp").send(); receipt = deviceContract.setpp("testpp").send();
System.out.println(privacyPolicyReceipt.toString()); Assert.assertNotNull(receipt);
String deviceInfo = deviceContract.deviceInfo().send(); String deviceInfo = deviceContract.deviceInfo().send();
Assert.assertNotNull(deviceInfo);
System.out.println(deviceInfo); System.out.println(deviceInfo);
String privacyPolicy = deviceContract.privacypolicy().send(); String privacyPolicy = deviceContract.privacypolicy().send();
Assert.assertNotNull(privacyPolicy);
System.out.println(privacyPolicy); System.out.println(privacyPolicy);
} //TODO CANNOT BIND
//Gateway
@Test // GatewayContract gatewayContract = GatewayContract.deploy(quorum, manager, DEFAULT_GAS_PROVIDER).send();
public void test2uploadDeviceInfoAndPolicy() throws Exception {} // Assert.assertNotNull(gatewayContract);
// gateWayContractAddress = gatewayContract.getContractAddress();
@Test // System.out.println("gatewayContract Address:" + gateWayContractAddress);
public void test3deployGatewayContract() throws Exception {} //
// receipt = deviceContract.setBuyer(gatewayContract.getContractAddress()).send();
@Test // Assert.assertNotNull(receipt);
public void test4bind() throws Exception {} //
// Quorum quorum1 = Quorum.build(new HttpService(rpcUrl));
// String userAddress1 = quorum1.ethAccounts().send().getAccounts().get(quorum1.ethAccounts().send().getAccounts().size() - 1);
// ClientTransactionManager manager1 = new ClientTransactionManager(quorum1, userAddress1);
//
// System.out.println("deviceContractAddress" + deviceContractAddress);
// DeviceContract deviceContract1 = DeviceContract.load(deviceContractAddress, quorum1, manager1, DEFAULT_GAS_PROVIDER);
// System.out.println("deviceContractAddress" + gateWayContractAddress);
// receipt = deviceContract1.bindReq(gateWayContractAddress).send();
// Assert.assertNotNull(receipt);
//
// String bindedString = deviceContract1.getBondDevice().send();
// Assert.assertNotNull(bindedString);
// System.out.println("binded : " + bindedString);
}
} }
...@@ -36,5 +36,4 @@ public class PrivacyService { ...@@ -36,5 +36,4 @@ public class PrivacyService {
public void getPrivacyPolicyChoice(PrivacyContent content) { public void getPrivacyPolicyChoice(PrivacyContent content) {
} }
} }
rootProject.name = 'iotgateway' rootProject.name = 'iotgateway'
include ':gateway' include ':gateway'
include ':cloud' include ':cloud'
include ':contract'
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment