require_relative '../test_config' require 'helix_versioning_engine' require 'base64' describe 'HelixVersioningEngine files' do include Rack::Test::Methods def app HELIX_WEB_SERVICES_APP end randstr = (0...8).map { (65 + rand(26)).chr }.join context 'GET /p4/v78/files' do it 'can list depots at the root level' do authorize 'jdoe', ticket_for_jdoe get('/p4/v78/files') expect(last_response.status).to eq(200) results = JSON.parse(last_response.body) if Cloud::Settings.cloud_enabled? expect(results.map{|x| x['name']}).to include('my_project') else expect(results.map{|x| x['name']}).to include('depot') end end it 'can list dirs levels greater than 1' do authorize 'jdoe', ticket_for_jdoe path = Cloud::Settings.cloud_enabled? ? 'my_project' : 'depot' get('/p4/v78/files/' + path) expect(last_response.status).to eq(200) results = JSON.parse(last_response.body) if Cloud::Settings.cloud_enabled? expect(results.map{|x| x['dir']}).to include('//my_project/main') else expect(results.map{|x| x['dir']}).to include('//depot/dev') expect(results.map{|x| x['dir']}).to include('//depot/main') end end it 'can list files at levels greater than 1' do authorize 'jdoe', ticket_for_jdoe path = Cloud::Settings.cloud_enabled? ? 'my_project/main/dev/Experimental' : 'depot/dev/Experimental' get('/p4/v78/files/' + path) expect(last_response.status).to eq(200) results = JSON.parse(last_response.body) if Cloud::Settings.cloud_enabled? expect(results.map{|x| x['depotFile']}).to include('//my_project/main/dev/Experimental/README') else expect(results.map{|x| x['depotFile']}).to include('//depot/dev/Experimental/README') end end end context 'PATCH /p4/v78/files' do it 'can edit and add a new file' do skip 'Not available for cloud (no stream support)' if Cloud::Settings.cloud_enabled? authorize 'jdoe', ticket_for_jdoe patch_data = { 'Description' => "Test #{randstr}", 'Files' => [ { 'DepotFile' => 'README', 'Content' => Base64.encode64("Readme update #{randstr}") }, { 'DepotFile' => "test_#{randstr}", 'Content' => Base64.encode64("New content #{randstr}") } ] } patch('/p4/v78/files/depot/dev/Experimental', patch_data) expect(last_response.status).to eq(200) get('/p4/v78/files/depot/dev/Experimental/README') expect(last_response.status).to eq(200) updated_readme = JSON.parse(last_response.body) expect(Base64.decode64(updated_readme['Content'])).to eq("Readme update #{randstr}") get("/p4/v78/files/depot/dev/Experimental/test_#{randstr}") expect(last_response.status).to eq(200) updated_add = JSON.parse(last_response.body) expect(Base64.decode64(updated_add['Content'])).to eq("New content #{randstr}") end end context 'DELETE /p4/v78/files' do it 'can delete a file' do skip 'Not available for cloud (no stream support)' if Cloud::Settings.cloud_enabled? authorize 'jdoe', ticket_for_jdoe delete("/p4/v78/files/depot/dev/Experimental/test_#{randstr}") expect(last_response.status).to eq(200) get('/p4/v78/files/depot/dev/Experimental') expect(last_response.status).to eq(200) files = JSON.parse(last_response.body) expect(files.map{ |x| x['depotFile']}).to_not include("//depot/dev/Experimental/test_#{randstr}") end end end
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#5 | 16271 | Doug Scheirer |
- delete the default //depot for cloud tests - mark more tests as pending - refactored sync tests a little to make cloud compatib;e - fixed a bug in the sync 'locked' logic |
||
#4 | 16114 | Doug Scheirer | Merge from main | ||
#3 | 16040 | Doug Scheirer | I think the pending tests is at a minimum for cloud enabled, so readyto integrate up? | ||
#2 | 16024 | Doug Scheirer | Some cloud spec forking, got the mock_raymond to spin up in cloud testing, split normal vs cloud spec output | ||
#1 | 15688 | Doug Scheirer |
Populate -o //guest/perforce_software/helix-web-services/... //guest/doug_scheirer/helix-web-services/.... |
||
//guest/perforce_software/helix-web-services/main/source/helix_web_services/spec/helix_versioning_engine/files_spec.rb | |||||
#1 | 15622 | tjuricek |
Move source code to 'source/' subdirectory of branch. build/ will remain where it is. |
||
//guest/perforce_software/helix-web-services/main/helix_web_services/spec/helix_versioning_engine/files_spec.rb | |||||
#2 | 15240 | tjuricek |
Set api level via request path on all Helix Versioning Engine methods. This will allow migration of applications to different P4D versions. Our internal methods (like project API) should attempt to handle backward compatibility similarly. P4WEBAPI-118 |
||
#1 | 15189 | tjuricek | Update files implementation, testing, and documentation. |