Skip to content

Commit

Permalink
[FIX] Allow serving of propertyfiles of non component project types
Browse files Browse the repository at this point in the history
  • Loading branch information
flovogt committed Mar 16, 2023
1 parent 7ca5ca2 commit 1bc6ec7
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/middleware/serveResources.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ function createMiddleware({resources, middlewareUtil}) {
// Special handling for *.properties files escape non ascii characters.
const {default: nonAsciiEscaper} = await import("@ui5/builder/processors/nonAsciiEscaper");
const project = resource.getProject();
let propertiesFileSourceEncoding = project?.getPropertiesFileSourceEncoding();
let propertiesFileSourceEncoding = project?.getPropertiesFileSourceEncoding?.();

if (!propertiesFileSourceEncoding) {
if (project && project.getSpecVersion().lte("1.1")) {
Expand Down
46 changes: 46 additions & 0 deletions test/lib/server/middleware/serveResources.js
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,52 @@ fame=stra\\u00dfe`);
t.is(setHeaderSpy.getCall(0).lastArg, "application/octet-stream");
});

test.serial("Check if properties file is served properly for non component projects", async (t) => {
t.plan(4);

const readerWriter = resourceFactory.createAdapter({virBasePath: "/"});

// For projects not extending type "ComponentProject" the method "getPropertiesFileSourceEncoding" is not available
const project = {
getSpecVersion: () => {
return {
toString: () => "3.0",
lte: () => false,
};
}
};

const resource = await writeResource(readerWriter, "/myFile3.properties", 1024 * 1024,
"key=titel\nfame=straße", "utf8", project);

const setStringSpy = sinon.spy(resource, "setString");
const middleware = serveResourcesMiddleware({
middlewareUtil: new MiddlewareUtil({graph: "graph", project: "project"}),
resources: {
all: readerWriter
}
});

const response = fakeResponse;

const setHeaderSpy = sinon.spy(response, "setHeader");
const req = {
url: "/myFile3.properties",
headers: {}
};
const next = function(err) {
throw new Error(`Next callback called with error: ${err.message}`);
};
await middleware(req, response, next);
const content = await resource.getString();

t.is(content, `key=titel
fame=stra\\u00dfe`);
t.is(setHeaderSpy.callCount, 2);
t.is(setStringSpy.callCount, 1);
t.is(setHeaderSpy.getCall(0).lastArg, "application/octet-stream");
});

test.serial("Check verbose logging", async (t) => {
const verboseLogStub = sinon.stub();
t.context.loggerStub = {
Expand Down

0 comments on commit 1bc6ec7

Please sign in to comment.