mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e: REST API test extended (fetch, force, close session)
parent
fcdf65f8e4
commit
2aaf4590d4
|
@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.json.simple.parser.JSONParser;
|
import org.json.simple.parser.JSONParser;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
@ -1069,6 +1070,110 @@ public class OpenViduTestAppE2eTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("REST API: Fetch all, fetch one, force disconnect, force unpublish, close session")
|
||||||
|
void restApiFetchForce() throws Exception {
|
||||||
|
setupBrowser("chrome");
|
||||||
|
|
||||||
|
log.info("REST API: Fetch all, fetch one, force disconnect, force unpublish, close session");
|
||||||
|
|
||||||
|
user.getDriver().findElement(By.id("add-user-btn")).click();
|
||||||
|
user.getDriver().findElement(By.id("add-user-btn")).click();
|
||||||
|
|
||||||
|
// API REST test
|
||||||
|
user.getDriver().findElement(By.id("session-api-btn-0")).click();
|
||||||
|
Thread.sleep(1000);
|
||||||
|
|
||||||
|
// Close session (undefined)
|
||||||
|
user.getDriver().findElement(By.id("close-session-btn")).click();
|
||||||
|
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("api-response-text-area"), "value",
|
||||||
|
"Error [Session undefined]"));
|
||||||
|
|
||||||
|
// Fetch one (undefined)
|
||||||
|
user.getDriver().findElement(By.id("get-session-btn")).click();
|
||||||
|
user.getWaiter().until(ExpectedConditions.attributeToBe(By.id("api-response-text-area"), "value",
|
||||||
|
"Error [Session undefined]"));
|
||||||
|
|
||||||
|
// Fetch all (no active sessions)
|
||||||
|
user.getDriver().findElement(By.id("list-sessions-btn")).click();
|
||||||
|
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("api-response-text-area"), "value",
|
||||||
|
"Number: 0. Changes: false"));
|
||||||
|
|
||||||
|
user.getDriver().findElement(By.id("close-dialog-btn")).click();
|
||||||
|
Thread.sleep(1000);
|
||||||
|
|
||||||
|
user.getDriver().findElement(By.id("auto-join-checkbox")).click();
|
||||||
|
user.getDriver().findElement(By.id("one2one-btn")).click();
|
||||||
|
|
||||||
|
user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
|
||||||
|
user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
|
||||||
|
user.getEventManager().waitUntilEventReaches("streamCreated", 4);
|
||||||
|
user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
|
||||||
|
|
||||||
|
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
|
||||||
|
true, true));
|
||||||
|
|
||||||
|
// Fetch existing session (change)
|
||||||
|
user.getDriver().findElement(By.id("session-api-btn-0")).click();
|
||||||
|
Thread.sleep(1000);
|
||||||
|
user.getDriver().findElement(By.id("get-session-btn")).click();
|
||||||
|
user.getWaiter()
|
||||||
|
.until(ExpectedConditions.attributeContains(By.id("api-response-text-area"), "value", "Changes: true"));
|
||||||
|
|
||||||
|
// Store connectionId and streamId
|
||||||
|
String response = user.getDriver().findElement(By.id("api-response-text-area")).getAttribute("value");
|
||||||
|
JSONObject json = (JSONObject) ((JSONArray) new JSONParser().parse(response.split("%")[1])).get(0);
|
||||||
|
String connectionId = (String) json.keySet().iterator().next();
|
||||||
|
String streamId = (String) ((JSONObject) ((JSONArray) json.get(connectionId)).get(0)).get("streamId");
|
||||||
|
|
||||||
|
// Fetch all sessions (no change)
|
||||||
|
user.getDriver().findElement(By.id("list-sessions-btn")).click();
|
||||||
|
user.getWaiter().until(ExpectedConditions.attributeContains(By.id("api-response-text-area"), "value",
|
||||||
|
"Number: 1. Changes: false"));
|
||||||
|
|
||||||
|
// Force unpublish wrong
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).clear();
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).sendKeys("FAIL");
|
||||||
|
user.getDriver().findElement(By.id("force-unpublish-api-btn")).click();
|
||||||
|
user.getWaiter()
|
||||||
|
.until(ExpectedConditions.attributeToBe(By.id("api-response-text-area"), "value", "Error [404]"));
|
||||||
|
|
||||||
|
// Force unpublish right
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).clear();
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).sendKeys(streamId);
|
||||||
|
user.getDriver().findElement(By.id("force-unpublish-api-btn")).click();
|
||||||
|
user.getWaiter().until(
|
||||||
|
ExpectedConditions.attributeToBe(By.id("api-response-text-area"), "value", "Stream unpublished"));
|
||||||
|
user.getEventManager().waitUntilEventReaches("streamDestroyed", 2);
|
||||||
|
|
||||||
|
// Force disconnect wrong
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).clear();
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).sendKeys("FAIL");
|
||||||
|
user.getDriver().findElement(By.id("force-disconnect-api-btn")).click();
|
||||||
|
user.getWaiter()
|
||||||
|
.until(ExpectedConditions.attributeToBe(By.id("api-response-text-area"), "value", "Error [404]"));
|
||||||
|
|
||||||
|
// Force disconnect right
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).clear();
|
||||||
|
user.getDriver().findElement(By.id("resource-id-field")).sendKeys(connectionId);
|
||||||
|
user.getDriver().findElement(By.id("force-disconnect-api-btn")).click();
|
||||||
|
user.getWaiter()
|
||||||
|
.until(ExpectedConditions.attributeToBe(By.id("api-response-text-area"), "value", "User disconnected"));
|
||||||
|
user.getEventManager().waitUntilEventReaches("connectionDestroyed", 1);
|
||||||
|
|
||||||
|
// Close session
|
||||||
|
user.getDriver().findElement(By.id("close-session-btn")).click();
|
||||||
|
user.getWaiter()
|
||||||
|
.until(ExpectedConditions.attributeToBe(By.id("api-response-text-area"), "value", "Session closed"));
|
||||||
|
|
||||||
|
user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 0));
|
||||||
|
|
||||||
|
user.getDriver().findElement(By.id("close-dialog-btn")).click();
|
||||||
|
|
||||||
|
gracefullyLeaveParticipants(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Disabled
|
@Disabled
|
||||||
@DisplayName("One2One Opera [Video + Audio]")
|
@DisplayName("One2One Opera [Video + Audio]")
|
||||||
|
|
|
@ -10,13 +10,13 @@ import { OpenVidu as OpenViduAPI, Session as SessionAPI } from 'openvidu-node-cl
|
||||||
<h2 mat-dialog-title>API REST</h2>
|
<h2 mat-dialog-title>API REST</h2>
|
||||||
<mat-dialog-content>
|
<mat-dialog-content>
|
||||||
<label class="label">Sessions</label>
|
<label class="label">Sessions</label>
|
||||||
<button mat-button id="list-sessions-btn" (click)="fetchActiveConnections()">Fetch</button>
|
<button mat-button id="get-session-btn" (click)="fetchActiveConnections()">Fetch</button>
|
||||||
<button mat-button id="list-sessions-btn" (click)="fetchActiveSessions()">Fetch all</button>
|
<button mat-button id="list-sessions-btn" (click)="fetchActiveSessions()">Fetch all</button>
|
||||||
<button mat-button id="close-session-btn" (click)="closeSession()">Close this session</button>
|
<button mat-button id="close-session-btn" (click)="closeSession()">Close this session</button>
|
||||||
<mat-form-field class="inner-text-input">
|
<mat-form-field class="inner-text-input">
|
||||||
<input matInput id="session-id-field" placeholder="resourceId" [(ngModel)]="resourceId">
|
<input matInput id="resource-id-field" placeholder="resourceId" [(ngModel)]="resourceId">
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
<button mat-button id="force-disconnet-api-btn" (click)="forceDisconnect()" [disabled]="!resourceId">Force disconnect</button>
|
<button mat-button id="force-disconnect-api-btn" (click)="forceDisconnect()" [disabled]="!resourceId">Force disconnect</button>
|
||||||
<button mat-button id="force-unpublish-api-btn" (click)="forceUnpublish()" [disabled]="!resourceId">Force unpublish</button>
|
<button mat-button id="force-unpublish-api-btn" (click)="forceUnpublish()" [disabled]="!resourceId">Force unpublish</button>
|
||||||
<mat-divider></mat-divider>
|
<mat-divider></mat-divider>
|
||||||
<label class="label">Recordings</label>
|
<label class="label">Recordings</label>
|
||||||
|
@ -155,7 +155,7 @@ export class SessionApiDialogComponent {
|
||||||
resp[con.connectionId].push(pub);
|
resp[con.connectionId].push(pub);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.response = 'Session info fetched [' + JSON.stringify(resp) + ']. Changes: ' + anyChange;
|
this.response = 'Session info fetched %[' + JSON.stringify(resp) + ']%. Changes: ' + anyChange;
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
this.response = 'Error [' + error.message + ']';
|
this.response = 'Error [' + error.message + ']';
|
||||||
|
@ -166,7 +166,7 @@ export class SessionApiDialogComponent {
|
||||||
console.log('Fetching all sessions info');
|
console.log('Fetching all sessions info');
|
||||||
this.OV.fetch()
|
this.OV.fetch()
|
||||||
.then(anyChange => {
|
.then(anyChange => {
|
||||||
this.response = 'All sessions info fetched. Changes: ' + anyChange;
|
this.response = 'All sessions info fetched. Number: ' + this.OV.activeSessions.length + '. Changes: ' + anyChange;
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
this.response = 'Error [' + error.message + ']';
|
this.response = 'Error [' + error.message + ']';
|
||||||
|
|
Loading…
Reference in New Issue