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

cloud test

parent 1e8237b6
This diff is collapsed.
......@@ -4,7 +4,7 @@ buildscript {
mapstructVersion = '1.3.0.Final'
jwtVersion = '3.5.0'
jjwtVersion = '0.9.1'
guavaVersion = '27.1-jre'
}
repositories {
mavenCentral()
......@@ -38,6 +38,7 @@ dependencies {
compileOnly 'org.projectlombok:lombok'
implementation "org.mapstruct:mapstruct:${mapstructVersion}"
implementation "com.google.guava:guava:${guavaVersion}"
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
......
......@@ -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.services.DeviceService;
import edu.prlab.tyler.iotgateway.cloud.services.PrivacyPolicyReportService;
import org.assertj.core.util.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
......@@ -41,20 +40,28 @@ public class DeviceController {
.orElseGet(()->ResponseEntity.noContent().build());
}
@GetMapping
public ResponseEntity<Iterable<Device>> readDevices() {
return Optional.of(deviceService.readll())
.map(ResponseEntity::ok)
.orElseGet(()->ResponseEntity.noContent().build());
}
// @GetMapping
// public ResponseEntity<Iterable<Device>> readDevices() {
// public ResponseEntity<Iterable<Device>> readDevices(SensitiveUser user) {
// return Optional.of(deviceService.readll())
// .map(ResponseEntity::ok)
// .orElseGet(()->ResponseEntity.noContent().build());
// }
@GetMapping
public ResponseEntity<ArrayList<Device>> readDevices(SensitiveUser user) {
return Optional.of(Lists.newArrayList(deviceService.readll()))
.map(ResponseEntity::ok)
.orElseGet(()->ResponseEntity.noContent().build());
@PostMapping("/privacy")
public ResponseEntity<PrivacyPolicyReport> addPrivacyPolicyReport(@RequestBody PrivacyPolicyReport privacyPolicy) {
return privacyPolicyReportService.add(privacyPolicy)
.map(ResponseEntity::ok)
.orElseGet(()->ResponseEntity.noContent().build());
}
@GetMapping("/privacy/{UDN}")
public ResponseEntity<PrivacyPolicyReport> readPrivacyPolicyReportByDevice(@PathVariable(value = "UDN") String UDN) {
return privacyPolicyReportService.readByDevice(UDN)
......
......@@ -37,5 +37,4 @@ public class GatewayController {
.map(ResponseEntity::ok)
.orElseGet(()->ResponseEntity.noContent().build());
}
}
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.Builder;
import lombok.Data;
......
......@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Cascade;
import javax.persistence.*;
import java.util.List;
......
......@@ -2,10 +2,9 @@ package edu.prlab.tyler.iotgateway.cloud.services;
import org.springframework.data.repository.CrudRepository;
import java.util.List;
import java.util.Optional;
public abstract class CrudService<T , ID> {
public abstract class CrudService<T, ID> {
private CrudRepository<T, ID> repository;
public CrudService(CrudRepository<T, ID> repository) {
......@@ -13,15 +12,15 @@ public abstract class CrudService<T , ID> {
}
public Optional<T> add(T pojo) {
System.out.println(pojo.toString());
System.out.println("save" + pojo.toString());
return Optional.of(repository.save(pojo));
}
}
public Optional<T> read(ID id) {
public Optional<T> read(ID id) {
return repository.findById(id);
}
}
public Iterable<T> readll() {
public Iterable<T> readll() {
return repository.findAll();
}
}
}
}
......@@ -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.privacy.PrivacyChoice;
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.p3p.*;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
......@@ -76,8 +78,22 @@ public class CloudHttpApiTest {
.andExpect(status().isOk())
.andReturn();
device = mapper.readValue(result.getResponse().getContentAsString(), Device.class);
System.out.println("The return device = " + device.toString());
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
.get("/device/" + device.getId())
.accept(MediaType.APPLICATION_JSON_UTF8))
......@@ -87,15 +103,71 @@ public class CloudHttpApiTest {
device = mapper.readValue(result.getResponse().getContentAsString(), Device.class);
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
.get("/device")
.accept(MediaType.APPLICATION_JSON_UTF8))
.post("/device/privacy")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaType.APPLICATION_JSON_UTF8)
.content(mapper.writeValueAsString(privacyPolicyReport)))
.andDo(print())
.andExpect(status().isOk())
.andReturn();
ArrayList<Device> devices = mapper.readValue(result.getResponse().getContentAsString(),
new TypeReference<ArrayList<Device>>() {});
Assert.assertNotNull(devices);
PrivacyPolicyReport returnPolicy = mapper.readValue(result.getResponse().getContentAsString(),
PrivacyPolicyReport.class);
Assert.assertNotNull(returnPolicy);
result = mvc.perform(MockMvcRequestBuilders
.get("/device/privacy/" + device.getUdn())
......
plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE'
id 'java'
}
ext {
web3jQuorumVersion = '4.0.6'
buildscript {
ext {
springBootVersion = '2.1.4.RELEASE'
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'
group = 'edu.prlab.tyler.iotgateway'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
......
......@@ -5,7 +5,6 @@ import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.runners.MethodSorters;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.core.methods.response.Web3ClientVersion;
......@@ -30,50 +29,72 @@ public class ContractTester {
DefaultGasProvider.GAS_LIMIT
);
private String deviceContractAddress;
private String gateWayContractAddress;
@BeforeClass
public static void setUp() {
}
@Test
public void test1deployDeviceContract() throws Exception {
public void test1Contract() throws Exception {
// Credentials credentials = Credentials.create(privateKey);
Quorum quorum = Quorum.build(new HttpService(rpcUrl));
Web3ClientVersion web3ClientVersion = quorum.web3ClientVersion().sendAsync().get();
String clientVersion = web3ClientVersion.getWeb3ClientVersion();
System.out.println("web3j版本 : " + clientVersion);
Assert.assertNotNull(clientVersion);
String userAddress = quorum.ethAccounts().send().getAccounts().get(0);
System.out.println("User : " + userAddress);
String userAddress = quorum.ethAccounts().send().getAccounts().get(quorum.ethAccounts().send().getAccounts().size() - 1);
Assert.assertNotNull(userAddress);
ClientTransactionManager manager = new ClientTransactionManager(quorum, userAddress);
//Device
DeviceContract deviceContract = DeviceContract.deploy(quorum, manager, DEFAULT_GAS_PROVIDER).send();
String deviceContractAddress = deviceContract.getContractAddress();
System.out.println("智慧合約地址 : " + deviceContractAddress);
deviceContractAddress = deviceContract.getContractAddress();
Assert.assertNotNull(deviceContract);
Assert.assertNotNull(deviceContractAddress);
TransactionReceipt deviceReceipt = deviceContract.setdeviceinfo("testdevice").send();
System.out.println(deviceReceipt.toString());
TransactionReceipt receipt;
receipt = deviceContract.setdeviceinfo("testdevice").send();
Assert.assertNotNull(receipt);
TransactionReceipt privacyPolicyReceipt = deviceContract.setpp("testpp").send();
System.out.println(privacyPolicyReceipt.toString());
receipt = deviceContract.setpp("testpp").send();
Assert.assertNotNull(receipt);
String deviceInfo = deviceContract.deviceInfo().send();
Assert.assertNotNull(deviceInfo);
System.out.println(deviceInfo);
String privacyPolicy = deviceContract.privacypolicy().send();
Assert.assertNotNull(privacyPolicy);
System.out.println(privacyPolicy);
}
@Test
public void test2uploadDeviceInfoAndPolicy() throws Exception {}
@Test
public void test3deployGatewayContract() throws Exception {}
@Test
public void test4bind() throws Exception {}
//TODO CANNOT BIND
//Gateway
// GatewayContract gatewayContract = GatewayContract.deploy(quorum, manager, DEFAULT_GAS_PROVIDER).send();
// Assert.assertNotNull(gatewayContract);
// gateWayContractAddress = gatewayContract.getContractAddress();
// System.out.println("gatewayContract Address:" + gateWayContractAddress);
//
// receipt = deviceContract.setBuyer(gatewayContract.getContractAddress()).send();
// Assert.assertNotNull(receipt);
//
// 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 {
public void getPrivacyPolicyChoice(PrivacyContent content) {
}
}
rootProject.name = 'iotgateway'
include ':gateway'
include ':cloud'
\ No newline at end of file
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