Skip to content

Commit 535a31a

Browse files
committed
added file version tests
1 parent ecc1258 commit 535a31a

File tree

2 files changed

+123
-1
lines changed

2 files changed

+123
-1
lines changed

test/imagekit/api_service/file_test.rb

Lines changed: 116 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
require_relative '../spec_helper'
2-
2+
require 'pry'
33
RSpec.describe ImageKitIo::ApiService::File do
44
let(:file_api_service) { described_class }
55
let(:config) { ImageKitIo.config }
@@ -275,6 +275,121 @@
275275
end
276276
end
277277

278+
describe 'FileVersionDetailTest' do
279+
let(:success_response) {
280+
"{\"fileId\":\"my_file_id\",\"name\":\"cat1.jpg\",\"size\":102117,\"versionInfo\":{\"id\":\"my_file_id\",\"name\":\"Version 2\"},\"filePath\":\"/cat1.jpg\",\"url\":\"https://ik.imagekit.io/app_id/cat1.jpg\",\"fileType\":\"image\",\"height\":700,\"width\":1050,\"thumbnailUrl\":\"https://ik.imagekit.io/app_id/tr:n-ik_ml_thumbnail/cat1.jpg\",\"tags\":[\"abc\",\"def\"],\"AITags\":null,\"isPrivateFile\":true,\"customCoordinates\":null,\"metadata\":{\"height\":700,\"width\":1050,\"size\":70842,\"format\":\"jpg\",\"hasColorProfile\":false,\"quality\":0,\"density\":72,\"hasTransparency\":false,\"exif\":{},\"pHash\":\"90249d9b1fc74367\"}}"
281+
}
282+
it 'test_get_file_version_detail_succeeds_with_id' do
283+
request_client = double
284+
allow_any_instance_of(ImageKitIo::Request)
285+
.to receive(:create_headers)
286+
.and_return({})
287+
allow(RestClient::Request)
288+
.to receive(:new)
289+
.and_return(request_client)
290+
allow(request_client)
291+
.to receive(:execute)
292+
.and_return(OpenStruct.new(code: 200,
293+
body: success_response,
294+
content_type: "application/json"
295+
))
296+
297+
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
298+
SUT = file_api_service.new(imagekit_request)
299+
resp = SUT.get_file_version_detail(file_id: "my_file_id", version_id: 'my_file_id')
300+
expect(resp).to_not have_key(:error)
301+
expect(resp[:response]).to have_key('versionInfo')
302+
expect(resp[:response]['versionInfo']['id']).to eq('my_file_id')
303+
end
304+
end
305+
306+
describe 'FileVersionsTest' do
307+
let(:success_response) {
308+
"[{\"type\":\"file\",\"name\":\"cat1.jpg\",\"createdAt\":\"2022-06-02T11:50:44.402Z\",\"updatedAt\":\"2022-06-14T15:44:12.300Z\",\"fileId\":\"my_file_id\",\"tags\":[\"abc\",\"def\"],\"AITags\":null,\"versionInfo\":{\"id\":\"my_file_id\",\"name\":\"Version 2\"},\"embeddedMetadata\":{\"DateCreated\":\"2022-06-14T15:44:12.299Z\",\"DateTimeCreated\":\"2022-06-14T15:44:12.299Z\"},\"customCoordinates\":null,\"customMetadata\":{},\"isPrivateFile\":true,\"url\":\"https://ik.imagekit.io/app_id/cat1.jpg\",\"thumbnail\":\"https://ik.imagekit.io/app_id/tr:n-ik_ml_thumbnail/cat1.jpg\",\"fileType\":\"image\",\"filePath\":\"/cat1.jpg\",\"height\":700,\"width\":1050,\"size\":102117,\"hasAlpha\":false,\"mime\":\"image/jpeg\"},{\"type\":\"file-version\",\"name\":\"cat1.jpg\",\"createdAt\":\"2022-06-14T15:44:10.910Z\",\"updatedAt\":\"2022-06-14T15:44:11.372Z\",\"fileId\":\"my_file_id\",\"tags\":[\"abc\",\"def\"],\"AITags\":null,\"versionInfo\":{\"id\":\"my_file_second_version_id\",\"name\":\"Version 1\"},\"embeddedMetadata\":{\"DateCreated\":\"2022-06-02T11:50:45.537Z\",\"DateTimeCreated\":\"2022-06-02T11:50:45.540Z\"},\"customCoordinates\":null,\"customMetadata\":{},\"isPrivateFile\":true,\"url\":\"https://ik.imagekit.io/app_id/cat1.jpg?ik-obj-version=ik_version_id\",\"thumbnail\":\"https://ik.imagekit.io/app_id/tr:n-ik_ml_thumbnail/cat1.jpg?ik-obj-version=ik_version_id\",\"fileType\":\"image\",\"filePath\":\"/cat1.jpg\",\"height\":700,\"width\":1050,\"size\":102117,\"hasAlpha\":false,\"mime\":\"image/jpeg\"}]"
309+
}
310+
it 'test_get_file_versions_succeeds_with_id' do
311+
request_client = double
312+
allow_any_instance_of(ImageKitIo::Request)
313+
.to receive(:create_headers)
314+
.and_return({})
315+
allow(RestClient::Request)
316+
.to receive(:new)
317+
.and_return(request_client)
318+
allow(request_client)
319+
.to receive(:execute)
320+
.and_return(OpenStruct.new(code: 200,
321+
body: success_response,
322+
content_type: "application/json"
323+
))
324+
325+
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
326+
SUT = file_api_service.new(imagekit_request)
327+
resp = SUT.get_file_versions(file_id: "my_file_id")
328+
expect(resp).to_not have_key(:error)
329+
expect(resp[:response]).to be_an_instance_of(Array)
330+
expect(resp[:response].length).to eq(2)
331+
expect(resp[:response][0]['versionInfo']['id']).to eq('my_file_id')
332+
expect(resp[:response][0]['versionInfo']['name']).to eq('Version 2')
333+
expect(resp[:response][1]['versionInfo']['id']).to eq('my_file_second_version_id')
334+
expect(resp[:response][1]['versionInfo']['name']).to eq('Version 1')
335+
end
336+
end
337+
338+
describe 'RestoreFileVersionTest' do
339+
let(:success_response) {
340+
"{\"type\":\"file\",\"name\":\"cat1.jpg\",\"createdAt\":\"2022-06-02T11:50:44.402Z\",\"updatedAt\":\"2022-06-14T16:20:06.258Z\",\"fileId\":\"my_file_id\",\"tags\":[\"abc\",\"def\"],\"AITags\":null,\"versionInfo\":{\"id\":\"my_second_version\",\"name\":\"Version 2\"},\"embeddedMetadata\":{\"DateCreated\":\"2022-06-02T11:50:45.537Z\",\"DateTimeCreated\":\"2022-06-02T11:50:45.540Z\"},\"customCoordinates\":null,\"customMetadata\":{},\"isPrivateFile\":true,\"url\":\"https://ik.imagekit.io/app_id/cat1.jpg\",\"thumbnail\":\"https://ik.imagekit.io/app_id/tr:n-ik_ml_thumbnail/cat1.jpg\",\"fileType\":\"image\",\"filePath\":\"/cat1.jpg\",\"height\":700,\"width\":1050,\"size\":102117,\"hasAlpha\":false,\"mime\":\"image/jpeg\"}"
341+
}
342+
it 'test_restore_file_version_succeeds_with_id' do
343+
request_client = double
344+
allow_any_instance_of(ImageKitIo::Request)
345+
.to receive(:create_headers)
346+
.and_return({})
347+
allow(RestClient::Request)
348+
.to receive(:new)
349+
.and_return(request_client)
350+
allow(request_client)
351+
.to receive(:execute)
352+
.and_return(OpenStruct.new(code: 200,
353+
body: success_response,
354+
content_type: "application/json"
355+
))
356+
357+
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
358+
SUT = file_api_service.new(imagekit_request)
359+
resp = SUT.restore_file_version(file_id: "my_file_id", version_id: 'my_second_version')
360+
expect(resp).to_not have_key(:error)
361+
expect(resp[:response]['versionInfo']['id']).to eq('my_second_version')
362+
expect(resp[:response]['versionInfo']['name']).to eq('Version 2')
363+
end
364+
end
365+
366+
describe 'DeleteFileVersionTest' do
367+
let(:success_response) {
368+
"{\"success\":true}"
369+
}
370+
it 'test_restore_file_version_succeeds_with_id' do
371+
request_client = double
372+
allow_any_instance_of(ImageKitIo::Request)
373+
.to receive(:create_headers)
374+
.and_return({})
375+
allow(RestClient::Request)
376+
.to receive(:new)
377+
.and_return(request_client)
378+
allow(request_client)
379+
.to receive(:execute)
380+
.and_return(OpenStruct.new(code: 200,
381+
body: success_response,
382+
content_type: "application/json"
383+
))
384+
385+
imagekit_request = ImageKitIo::Request.new(private_key, public_key, url_endpoint)
386+
SUT = file_api_service.new(imagekit_request)
387+
resp = SUT.delete_file_version(file_id: "my_file_id", version_id: 'my_second_version')
388+
expect(resp).to_not have_key(:error)
389+
expect(resp[:response]['success']).to eq(true)
390+
end
391+
end
392+
278393
describe 'FileDetailTest' do
279394
it "test_get_file_details_fails_on_unauthenticated_request" do
280395
request_obj = double

test/imagekit/request_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,12 @@
7878
response = @request_obj.request(:post, 'https://www.exampleservererror/upload', nil, { multipart: true })
7979
expect(response).to have_key(:error)
8080
end
81+
82+
it 'test_request_method_403' do
83+
stub_request(:post, 'https://www.exampleservererror/upload').to_return(status: 403, body: "{\"message\":\"Your account cannot be authenticated.\",\"help\":\"For support kindly contact us at [email protected] .\"}", headers: {content_type: 'application/json'})
84+
response = @request_obj.request(:post, 'https://www.exampleservererror/upload', nil, { multipart: true })
85+
expect(response).to have_key(:error)
86+
expect(response[:error]).to eq({"message"=>"Your account cannot be authenticated.", "help"=>"For support kindly contact us at [email protected] ."})
87+
end
8188
end
8289
end

0 commit comments

Comments
 (0)