An error occurred while fetching merge requests data.
Commit 1bd0abe5 authored by 0Tyler's avatar 0Tyler

cloud test

parent 1e8237b6
No preview for this file type
No preview for this file type
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()))
@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("airradio@gmail.com.tw")
.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 {
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'
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