Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enh/dx 739 taxonomy permission testcase #84

Merged
merged 4 commits into from
Jul 3, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -214,12 +214,12 @@
<artifactId>slack-app-backend</artifactId>
<version>1.38.0</version>
</dependency>
<dependency>
<!-- <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.8.0</version>
<scope>test</scope>
</dependency>
</dependency> -->


</dependencies>
Expand All @@ -234,12 +234,12 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<!-- <includes>
<includes>
<include>**/*TestSuite.java</include>
</includes> -->
<suiteXmlFiles>
</includes>
<!-- <suiteXmlFiles>
<suiteXmlFile>${basedir}/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</suiteXmlFiles> -->
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
Expand Down
206 changes: 103 additions & 103 deletions src/test/java/com/contentstack/cms/SanityReport.java
Original file line number Diff line number Diff line change
@@ -1,120 +1,120 @@
package com.contentstack.cms;
import com.slack.api.Slack;
import com.slack.api.methods.SlackApiException;
import com.slack.api.methods.response.chat.ChatPostMessageResponse;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
// package com.contentstack.cms;
// import com.slack.api.Slack;
// import com.slack.api.methods.SlackApiException;
// import com.slack.api.methods.response.chat.ChatPostMessageResponse;
// import org.jsoup.Jsoup;
// import org.jsoup.nodes.Document;
// import org.jsoup.nodes.Element;
// import java.io.File;
// import java.io.IOException;
// import java.net.URI;
// import java.net.http.HttpClient;
// import java.net.http.HttpRequest;
// import java.net.http.HttpResponse;
// import java.net.http.HttpRequest.BodyPublishers;
// import java.nio.file.Files;
// import java.nio.file.Path;
// import java.nio.file.Paths;
// import java.util.HashMap;
// import java.util.Map;

public class SanityReport {
// public class SanityReport {

public static String buildSlackMessage(File input) throws IOException {
Document doc = Jsoup.parse(input, "UTF-8");
Element summaryTable = doc.select("table.bodyTable").first();
Element summaryRow = summaryTable.select("tr.b").first();
// public static String buildSlackMessage(File input) throws IOException {
// Document doc = Jsoup.parse(input, "UTF-8");
// Element summaryTable = doc.select("table.bodyTable").first();
// Element summaryRow = summaryTable.select("tr.b").first();

String totalCount = summaryRow.select("td").get(0).text().trim();
String totalErrors = summaryRow.select("td").get(1).text().trim();
String totalFailures = summaryRow.select("td").get(2).text().trim();
String totalSkipped = summaryRow.select("td").get(3).text().trim();
String totalTime = summaryRow.select("td").get(5).text().trim();
// String totalCount = summaryRow.select("td").get(0).text().trim();
// String totalErrors = summaryRow.select("td").get(1).text().trim();
// String totalFailures = summaryRow.select("td").get(2).text().trim();
// String totalSkipped = summaryRow.select("td").get(3).text().trim();
// String totalTime = summaryRow.select("td").get(5).text().trim();

int durationInMinutes = 0;
int durationInSeconds = 0;
if (!totalTime.isEmpty()) {
float timeInSeconds = Float.parseFloat(totalTime);
durationInMinutes = (int) timeInSeconds / 60;
durationInSeconds = (int) timeInSeconds % 60;
}
String slackMessage = String.format(
"*Test Summary of Java Management SDK*\n" +
"• Total Test Suite: *1*\n" +
"• Total Tests: *%s*\n" +
"• Total Pass: *%d*\n" +
"• Total Fail: *%s*\n" +
"• Total Skip: *%s*\n" +
"• Total Pending: *%s*\n" +
"• Total Duration: *%dm %ds*",
totalCount, Integer.parseInt(totalCount) - (Integer.parseInt(totalErrors) + Integer.parseInt(totalFailures)), totalFailures, totalSkipped, totalErrors, durationInMinutes, durationInSeconds
);
return slackMessage;
}
// int durationInMinutes = 0;
// int durationInSeconds = 0;
// if (!totalTime.isEmpty()) {
// float timeInSeconds = Float.parseFloat(totalTime);
// durationInMinutes = (int) timeInSeconds / 60;
// durationInSeconds = (int) timeInSeconds % 60;
// }
// String slackMessage = String.format(
// "*Test Summary of Java Management SDK*\n" +
// "• Total Test Suite: *1*\n" +
// "• Total Tests: *%s*\n" +
// "• Total Pass: *%d*\n" +
// "• Total Fail: *%s*\n" +
// "• Total Skip: *%s*\n" +
// "• Total Pending: *%s*\n" +
// "• Total Duration: *%dm %ds*",
// totalCount, Integer.parseInt(totalCount) - (Integer.parseInt(totalErrors) + Integer.parseInt(totalFailures)), totalFailures, totalSkipped, totalErrors, durationInMinutes, durationInSeconds
// );
// return slackMessage;
// }

public static void publishMessage(String token, String channel, String text, File report) throws IOException, SlackApiException, InterruptedException {
try {
Slack slack = Slack.getInstance();
// public static void publishMessage(String token, String channel, String text, File report) throws IOException, SlackApiException, InterruptedException {
// try {
// Slack slack = Slack.getInstance();

// Post the message to the Slack channel
ChatPostMessageResponse messageResponse = slack.methods(token).chatPostMessage(req -> req
.channel(channel)
.text(text)
);
// Check if posting message was successful
if (!messageResponse.isOk()) {
System.out.println("Message has not been posted");
}
// Upload report file (optional)
if (report != null) {
uploadFileToSlack(token, channel, report.getAbsolutePath());
}
} catch (IOException | SlackApiException e) {
System.out.println(e);
}
}
// // Post the message to the Slack channel
// ChatPostMessageResponse messageResponse = slack.methods(token).chatPostMessage(req -> req
// .channel(channel)
// .text(text)
// );
// // Check if posting message was successful
// if (!messageResponse.isOk()) {
// System.out.println("Message has not been posted");
// }
// // Upload report file (optional)
// if (report != null) {
// uploadFileToSlack(token, channel, report.getAbsolutePath());
// }
// } catch (IOException | SlackApiException e) {
// System.out.println(e);
// }
// }

private static void uploadFileToSlack(String token, String channelName, String filePath) throws IOException, InterruptedException {
Path path = Paths.get(filePath);
String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
Map<String, String> params = new HashMap<>();
params.put("channels", channelName);
params.put("filename", new File(filePath).getName());
params.put("filetype", "text");
params.put("initial_comment", "Here is the report generated.");
params.put("title", "Reports File");
// private static void uploadFileToSlack(String token, String channelName, String filePath) throws IOException, InterruptedException {
// Path path = Paths.get(filePath);
// String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
// Map<String, String> params = new HashMap<>();
// params.put("channels", channelName);
// params.put("filename", new File(filePath).getName());
// params.put("filetype", "text");
// params.put("initial_comment", "Here is the report generated.");
// params.put("title", "Reports File");

String body = buildMultipartBody(params, Files.readAllBytes(path), boundary);
// String body = buildMultipartBody(params, Files.readAllBytes(path), boundary);

HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://slack.com/api/files.upload"))
.header("Authorization", "Bearer " + token)
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(BodyPublishers.ofString(body))
.build();
// HttpRequest request = HttpRequest.newBuilder()
// .uri(URI.create("https://slack.com/api/files.upload"))
// .header("Authorization", "Bearer " + token)
// .header("Content-Type", "multipart/form-data; boundary=" + boundary)
// .POST(BodyPublishers.ofString(body))
// .build();

HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// HttpClient client = HttpClient.newHttpClient();
// HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

}
// }


private static String buildMultipartBody(Map<String, String> params, byte[] fileContent, String boundary) {
StringBuilder sb = new StringBuilder();
// private static String buildMultipartBody(Map<String, String> params, byte[] fileContent, String boundary) {
// StringBuilder sb = new StringBuilder();

for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append("--").append(boundary).append("\r\n");
sb.append("Content-Disposition: form-data; name=\"").append(entry.getKey()).append("\"\r\n\r\n");
sb.append(entry.getValue()).append("\r\n");
}
sb.append("--").append(boundary).append("\r\n");
sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"").append(params.get("filename")).append("\"\r\n");
sb.append("Content-Type: application/octet-stream\r\n\r\n");
sb.append(new String(fileContent)).append("\r\n");
sb.append("--").append(boundary).append("--");
return sb.toString();
}
// for (Map.Entry<String, String> entry : params.entrySet()) {
// sb.append("--").append(boundary).append("\r\n");
// sb.append("Content-Disposition: form-data; name=\"").append(entry.getKey()).append("\"\r\n\r\n");
// sb.append(entry.getValue()).append("\r\n");
// }
// sb.append("--").append(boundary).append("\r\n");
// sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"").append(params.get("filename")).append("\"\r\n");
// sb.append("Content-Type: application/octet-stream\r\n\r\n");
// sb.append(new String(fileContent)).append("\r\n");
// sb.append("--").append(boundary).append("--");
// return sb.toString();
// }

}
// }


58 changes: 29 additions & 29 deletions src/test/java/com/contentstack/cms/SlackReportingListener.java
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
package com.contentstack.cms;
import com.contentstack.cms.SanityReport;
import io.github.cdimascio.dotenv.Dotenv;
import java.io.File;
import java.io.IOException;
// package com.contentstack.cms;
// import com.contentstack.cms.SanityReport;
// import io.github.cdimascio.dotenv.Dotenv;
// import java.io.File;
// import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
// import org.jsoup.Jsoup;
// import org.jsoup.nodes.Document;
// import org.testng.ITestContext;
// import org.testng.ITestListener;
// import org.testng.ITestResult;

public class SlackReportingListener implements ITestListener {
@Override
public void onFinish(ITestContext context) {
Dotenv dotenv = Dotenv.load();
String slackToken = dotenv.get("SLACK_BOT_TOKEN");
String slackChannel = dotenv.get("SLACK_CHANNEL");
File input = new File("./target/site/surefire-report.html");
try {
SanityReport.publishMessage(
slackToken,
slackChannel,
SanityReport.buildSlackMessage(input),
input
);
} catch (Exception e) {
System.out.println("Error sending Slack message: " + e.getMessage());
}
}
}
// public class SlackReportingListener implements ITestListener {
// @Override
// public void onFinish(ITestContext context) {
// Dotenv dotenv = Dotenv.load();
// String slackToken = dotenv.get("SLACK_BOT_TOKEN");
// String slackChannel = dotenv.get("SLACK_CHANNEL");
// File input = new File("./target/site/surefire-report.html");
// try {
// SanityReport.publishMessage(
// slackToken,
// slackChannel,
// SanityReport.buildSlackMessage(input),
// input
// );
// } catch (Exception e) {
// System.out.println("Error sending Slack message: " + e.getMessage());
// }
// }
// }
50 changes: 46 additions & 4 deletions src/test/java/com/contentstack/cms/stack/RoleAPITest.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
package com.contentstack.cms.stack;

import com.contentstack.cms.Contentstack;
import com.contentstack.cms.TestClient;
import com.contentstack.cms.Utils;
import com.contentstack.cms.core.Util;
import com.google.gson.JsonObject;

import okhttp3.Request;
import okhttp3.ResponseBody;
import org.json.simple.JSONObject;
import org.junit.jupiter.api.*;

import retrofit2.Call;
import retrofit2.Response;

import java.io.IOException;
import java.util.HashMap;

@Tag("api")
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
Expand All @@ -19,15 +26,22 @@ class RoleAPITest {
protected static String _uid = TestClient.AUTHTOKEN;
protected static String MANAGEMENT_TOKEN = TestClient.MANAGEMENT_TOKEN;
protected static Roles roles;
static Stack stack;
protected static String Taxonomy_uid = "sample_two";
protected static Taxonomy taxonomy;
protected static Terms term;
protected static Stack stack;


@BeforeAll
static void setup() {
stack = TestClient.getStack();
stack.addHeader(Util.API_KEY, API_KEY);
stack.addHeader(Util.AUTHORIZATION, MANAGEMENT_TOKEN);
final String AUTHTOKEN = TestClient.AUTHTOKEN;
HashMap<String, Object> headers = new HashMap<>();
headers.put(Util.API_KEY, API_KEY);
headers.put(Util.AUTHORIZATION, MANAGEMENT_TOKEN);
stack = new Contentstack.Builder().setAuthtoken(AUTHTOKEN).build().stack(headers);
roles = stack.roles(_uid);
taxonomy = stack.taxonomy();
term = stack.taxonomy(Taxonomy_uid).terms();
}

@Test
Expand Down Expand Up @@ -111,5 +125,33 @@ void deleteRole() {
Assertions.assertNull(request.url().encodedQuery());
Assertions.assertEquals("https://api.contentstack.io/v3/roles/" + _uid, request.url().toString());
}
@Test
void createRoleWithRule1() throws IOException{
JSONObject requestTaxonomy = Utils.readJson("mocktaxonomy/create.json");
taxonomy.addHeader(Util.API_KEY, API_KEY);
taxonomy.addHeader(Util.AUTHORIZATION, MANAGEMENT_TOKEN);
Call<ResponseBody> responseTaxonomy = taxonomy.create(requestTaxonomy);
Response<ResponseBody> response1 = responseTaxonomy.execute();
System.out.println("Taxonomy created" + response1.body().string());

}
@Test
void createRoleWithRule2() throws IOException{
JSONObject requestTerm = Utils.readJson("mocktaxonomy/createTerm.json");

Response<ResponseBody> response2 = term.create(requestTerm).execute();
System.out.println("Term created" + response2.toString());

}
@Test
void createRoleWithTaxonomy() throws IOException{
JSONObject requestBody = Utils.readJson("mockrole/createRole.json");

Call<ResponseBody> responseCall = roles.create(requestBody);
Response<ResponseBody> response = responseCall.execute();
System.out.println("Role created" + response.body().string());


}

}
Loading
Loading