mirror of
				https://github.com/ether/etherpad-lite.git
				synced 2025-11-04 10:11:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			134 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
describe("embed links", function(){
 | 
						|
  var objectify = function (str)
 | 
						|
  {
 | 
						|
    var hash = {};
 | 
						|
    var parts = str.split('&');
 | 
						|
    for(var i = 0; i < parts.length; i++)
 | 
						|
    {
 | 
						|
      var keyValue = parts[i].split('=');
 | 
						|
      hash[keyValue[0]] = keyValue[1];
 | 
						|
    }
 | 
						|
    return hash;
 | 
						|
  }
 | 
						|
 | 
						|
  var checkiFrameCode = function(embedCode, readonly){
 | 
						|
    //turn the code into an html element
 | 
						|
    var $embediFrame = $(embedCode);
 | 
						|
 | 
						|
    //read and check the frame attributes
 | 
						|
    var width = $embediFrame.attr("width"); 
 | 
						|
    var height = $embediFrame.attr("height"); 
 | 
						|
    var name = $embediFrame.attr("name"); 
 | 
						|
    expect(width).to.be('600');
 | 
						|
    expect(height).to.be('400');
 | 
						|
    expect(name).to.be(readonly ? "embed_readonly" : "embed_readwrite");
 | 
						|
 | 
						|
    //parse the url
 | 
						|
    var src = $embediFrame.attr("src");
 | 
						|
    var questionMark = src.indexOf("?");
 | 
						|
    var url = src.substr(0,questionMark);
 | 
						|
    var paramsStr = src.substr(questionMark+1);
 | 
						|
    var params = objectify(paramsStr);
 | 
						|
 | 
						|
    var expectedParams = {
 | 
						|
      showControls:     'true'
 | 
						|
    , showChat:         'true'
 | 
						|
    , showLineNumbers:  'true'
 | 
						|
    , useMonospaceFont: 'false'
 | 
						|
    }
 | 
						|
 | 
						|
    //check the url
 | 
						|
    if(readonly){
 | 
						|
      expect(url.indexOf("r.") > 0).to.be(true);
 | 
						|
    } else {
 | 
						|
      expect(url).to.be(helper.padChrome$.window.location.href);
 | 
						|
    }
 | 
						|
    
 | 
						|
    //check if all parts of the url are like expected
 | 
						|
    expect(params).to.eql(expectedParams);
 | 
						|
  }
 | 
						|
 | 
						|
  describe("read and write", function(){
 | 
						|
    //create a new pad before each test run
 | 
						|
    beforeEach(function(cb){
 | 
						|
      helper.newPad(cb);
 | 
						|
      this.timeout(60000);
 | 
						|
    });
 | 
						|
 | 
						|
    describe("the share link", function(){
 | 
						|
      it("is the actual pad url", function(done){
 | 
						|
        var chrome$ = helper.padChrome$; 
 | 
						|
 | 
						|
        //open share dropdown
 | 
						|
        chrome$(".buttonicon-embed").click();
 | 
						|
 | 
						|
        //get the link of the share field + the actual pad url and compare them
 | 
						|
        var shareLink = chrome$("#linkinput").val();
 | 
						|
        var padURL = chrome$.window.location.href;
 | 
						|
        expect(shareLink).to.be(padURL);
 | 
						|
 | 
						|
        done();
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe("the embed as iframe code", function(){
 | 
						|
      it("is an iframe with the the correct url parameters and correct size", function(done){
 | 
						|
        var chrome$ = helper.padChrome$; 
 | 
						|
 | 
						|
        //open share dropdown
 | 
						|
        chrome$(".buttonicon-embed").click();
 | 
						|
 | 
						|
        //get the link of the share field + the actual pad url and compare them
 | 
						|
        var embedCode = chrome$("#embedinput").val();
 | 
						|
        
 | 
						|
        checkiFrameCode(embedCode, false)
 | 
						|
 | 
						|
        done();
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe("when read only option is set", function(){
 | 
						|
    beforeEach(function(cb){
 | 
						|
      helper.newPad(cb);
 | 
						|
      this.timeout(60000);
 | 
						|
    });
 | 
						|
 | 
						|
    describe("the share link", function(){
 | 
						|
      it("shows a read only url", function(done){
 | 
						|
        var chrome$ = helper.padChrome$; 
 | 
						|
 | 
						|
        //open share dropdown
 | 
						|
        chrome$(".buttonicon-embed").click();
 | 
						|
        //check read only checkbox, a bit hacky
 | 
						|
        chrome$('#readonlyinput').attr('checked','checked').click().attr('checked','checked');
 | 
						|
 | 
						|
        //get the link of the share field + the actual pad url and compare them
 | 
						|
        var shareLink = chrome$("#linkinput").val();
 | 
						|
        var containsReadOnlyLink = shareLink.indexOf("r.") > 0
 | 
						|
        expect(containsReadOnlyLink).to.be(true);
 | 
						|
 | 
						|
        done();
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    describe("the embed as iframe code", function(){
 | 
						|
      it("is an iframe with the the correct url parameters and correct size", function(done){
 | 
						|
        var chrome$ = helper.padChrome$; 
 | 
						|
 | 
						|
        //open share dropdown
 | 
						|
        chrome$(".buttonicon-embed").click();
 | 
						|
        //check read only checkbox, a bit hacky
 | 
						|
        chrome$('#readonlyinput').attr('checked','checked').click().attr('checked','checked');
 | 
						|
 | 
						|
        //get the link of the share field + the actual pad url and compare them
 | 
						|
        var embedCode = chrome$("#embedinput").val();
 | 
						|
        
 | 
						|
        checkiFrameCode(embedCode, true);
 | 
						|
        
 | 
						|
        done();
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |